/********************************************************************************
 * Marvell GPL License Option
 *
 * If you received this File from Marvell, you may opt to use, redistribute and/or
 * modify this File in accordance with the terms and conditions of the General
 * Public License Version 2, June 1991 (the "GPL License"), a copy of which is
 * available along with the File in the license.txt file or by writing to the Free
 * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
 * on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
 *
 * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
 * DISCLAIMED.  The GPL License provides additional details about this warranty
 * disclaimer.
 ******************************************************************************/

//////
/// don't edit! auto-generated by docc: vscope_spec.h
////////////////////////////////////////////////////////////
#ifndef vscope_spec_h
#define vscope_spec_h (){}


#include "ctypes.h"

#pragma pack(1)
#ifdef __cplusplus
  extern "C" {
#endif

#ifndef _DOCC_H_BITOPS_
#define _DOCC_H_BITOPS_ (){}

    #define _bSETMASK_(b)                                      ((b)<32 ? (1<<((b)&31)) : 0)
    #define _NSETMASK_(msb,lsb)                                (_bSETMASK_((msb)+1)-_bSETMASK_(lsb))
    #define _bCLRMASK_(b)                                      (~_bSETMASK_(b))
    #define _NCLRMASK_(msb,lsb)                                (~_NSETMASK_(msb,lsb))
    #define _BFGET_(r,msb,lsb)                                 (_NSETMASK_((msb)-(lsb),0)&((r)>>(lsb)))
    #define _BFSET_(r,msb,lsb,v)                               do{ (r)&=_NCLRMASK_(msb,lsb); (r)|=_NSETMASK_(msb,lsb)&((v)<<(lsb)); }while(0)

#endif



//////
/// 
/// $INTERFACE SemaINTR                                 (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 mask                 (W-)
///               %unsigned 1  empty                     0x0
///                                    ###
///                                    * Enable interrupt on 'empty' condition
///                                    ###
///               %unsigned 1  full                      0x0
///                                    ###
///                                    * Enable interrupt on 'full' condition
///                                    ###
///               %unsigned 1  almostEmpty               0x0
///                                    ###
///                                    * Enable interrupt on 'almostEmpty' condition
///                                    ###
///               %unsigned 1  almostFull                0x0
///                                    ###
///                                    * Enable interrupt on 'almostFull' condition
///                                    ###
///               %%        28         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       4b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_SemaINTR
#define h_SemaINTR (){}

    #define     RA_SemaINTR_mask                               0x0000

    #define     BA_SemaINTR_mask_empty                         0x0000
    #define     B16SemaINTR_mask_empty                         0x0000
    #define   LSb32SemaINTR_mask_empty                            0
    #define   LSb16SemaINTR_mask_empty                            0
    #define       bSemaINTR_mask_empty                         1
    #define   MSK32SemaINTR_mask_empty                            0x00000001

    #define     BA_SemaINTR_mask_full                          0x0000
    #define     B16SemaINTR_mask_full                          0x0000
    #define   LSb32SemaINTR_mask_full                             1
    #define   LSb16SemaINTR_mask_full                             1
    #define       bSemaINTR_mask_full                          1
    #define   MSK32SemaINTR_mask_full                             0x00000002

    #define     BA_SemaINTR_mask_almostEmpty                   0x0000
    #define     B16SemaINTR_mask_almostEmpty                   0x0000
    #define   LSb32SemaINTR_mask_almostEmpty                      2
    #define   LSb16SemaINTR_mask_almostEmpty                      2
    #define       bSemaINTR_mask_almostEmpty                   1
    #define   MSK32SemaINTR_mask_almostEmpty                      0x00000004

    #define     BA_SemaINTR_mask_almostFull                    0x0000
    #define     B16SemaINTR_mask_almostFull                    0x0000
    #define   LSb32SemaINTR_mask_almostFull                       3
    #define   LSb16SemaINTR_mask_almostFull                       3
    #define       bSemaINTR_mask_almostFull                    1
    #define   MSK32SemaINTR_mask_almostFull                       0x00000008
    ///////////////////////////////////////////////////////////

    typedef struct SIE_SemaINTR {
    ///////////////////////////////////////////////////////////
    #define   GET32SemaINTR_mask_empty(r32)                    _BFGET_(r32, 0, 0)
    #define   SET32SemaINTR_mask_empty(r32,v)                  _BFSET_(r32, 0, 0,v)
    #define   GET16SemaINTR_mask_empty(r16)                    _BFGET_(r16, 0, 0)
    #define   SET16SemaINTR_mask_empty(r16,v)                  _BFSET_(r16, 0, 0,v)

    #define   GET32SemaINTR_mask_full(r32)                     _BFGET_(r32, 1, 1)
    #define   SET32SemaINTR_mask_full(r32,v)                   _BFSET_(r32, 1, 1,v)
    #define   GET16SemaINTR_mask_full(r16)                     _BFGET_(r16, 1, 1)
    #define   SET16SemaINTR_mask_full(r16,v)                   _BFSET_(r16, 1, 1,v)

    #define   GET32SemaINTR_mask_almostEmpty(r32)              _BFGET_(r32, 2, 2)
    #define   SET32SemaINTR_mask_almostEmpty(r32,v)            _BFSET_(r32, 2, 2,v)
    #define   GET16SemaINTR_mask_almostEmpty(r16)              _BFGET_(r16, 2, 2)
    #define   SET16SemaINTR_mask_almostEmpty(r16,v)            _BFSET_(r16, 2, 2,v)

    #define   GET32SemaINTR_mask_almostFull(r32)               _BFGET_(r32, 3, 3)
    #define   SET32SemaINTR_mask_almostFull(r32,v)             _BFSET_(r32, 3, 3,v)
    #define   GET16SemaINTR_mask_almostFull(r16)               _BFGET_(r16, 3, 3)
    #define   SET16SemaINTR_mask_almostFull(r16,v)             _BFSET_(r16, 3, 3,v)

    #define     w32SemaINTR_mask                               {\
            UNSG32 umask_empty                                 :  1;\
            UNSG32 umask_full                                  :  1;\
            UNSG32 umask_almostEmpty                           :  1;\
            UNSG32 umask_almostFull                            :  1;\
            UNSG32 RSVDx0_b4                                   : 28;\
          }
    union { UNSG32 u32SemaINTR_mask;
            struct w32SemaINTR_mask;
          };
    ///////////////////////////////////////////////////////////
    } SIE_SemaINTR;

    typedef union  T32SemaINTR_mask
          { UNSG32 u32;
            struct w32SemaINTR_mask;
                 } T32SemaINTR_mask;
    ///////////////////////////////////////////////////////////

    typedef union  TSemaINTR_mask
          { UNSG32 u32[1];
            struct {
            struct w32SemaINTR_mask;
                   };
                 } TSemaINTR_mask;

    ///////////////////////////////////////////////////////////
     SIGN32 SemaINTR_drvrd(SIE_SemaINTR *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 SemaINTR_drvwr(SIE_SemaINTR *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void SemaINTR_reset(SIE_SemaINTR *p);
     SIGN32 SemaINTR_cmp  (SIE_SemaINTR *p, SIE_SemaINTR *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define SemaINTR_check(p,pie,pfx,hLOG) SemaINTR_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define SemaINTR_print(p,    pfx,hLOG) SemaINTR_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: SemaINTR
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE Semaphore               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 CFG                  (W-)
///               %unsigned 16 DEPTH                     0xF
///                                    ###
///                                    * Max level of semaphore
///                                    * Note: write this register will trigger counter reset
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00004                      (P)
///     # 0x00004 INTR                 
///               $SemaINTR            INTR              REG       [3]
///                                    ###
///                                    * Interrupt mask for 3 CPUs
///                                    ###
///     @ 0x00010 mask                 (W-)
///               %unsigned 1  full                      0x0
///               %unsigned 1  emp                       0x0
///                                    ###
///                                    * When full bit is set to one, to the producer, the semaphore will never be full, so that the producer will never be blocked.
///                                    * When emp bit is set to one, to the consumer, the semaphore will never be empty, so that the consumer will never be blocked.
///                                    * When the emp/full bit is set, the semaphore/FIFO pointer will be maintained, but the counter will be not correct anymore.
///                                    ###
///               %%        30         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      20B, bits:      30b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_Semaphore
#define h_Semaphore (){}

    #define     RA_Semaphore_CFG                               0x0000

    #define     BA_Semaphore_CFG_DEPTH                         0x0000
    #define     B16Semaphore_CFG_DEPTH                         0x0000
    #define   LSb32Semaphore_CFG_DEPTH                            0
    #define   LSb16Semaphore_CFG_DEPTH                            0
    #define       bSemaphore_CFG_DEPTH                         16
    #define   MSK32Semaphore_CFG_DEPTH                            0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_Semaphore_INTR                              0x0004
    ///////////////////////////////////////////////////////////
    #define     RA_Semaphore_mask                              0x0010

    #define     BA_Semaphore_mask_full                         0x0010
    #define     B16Semaphore_mask_full                         0x0010
    #define   LSb32Semaphore_mask_full                            0
    #define   LSb16Semaphore_mask_full                            0
    #define       bSemaphore_mask_full                         1
    #define   MSK32Semaphore_mask_full                            0x00000001

    #define     BA_Semaphore_mask_emp                          0x0010
    #define     B16Semaphore_mask_emp                          0x0010
    #define   LSb32Semaphore_mask_emp                             1
    #define   LSb16Semaphore_mask_emp                             1
    #define       bSemaphore_mask_emp                          1
    #define   MSK32Semaphore_mask_emp                             0x00000002
    ///////////////////////////////////////////////////////////

    typedef struct SIE_Semaphore {
    ///////////////////////////////////////////////////////////
    #define   GET32Semaphore_CFG_DEPTH(r32)                    _BFGET_(r32,15, 0)
    #define   SET32Semaphore_CFG_DEPTH(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16Semaphore_CFG_DEPTH(r16)                    _BFGET_(r16,15, 0)
    #define   SET16Semaphore_CFG_DEPTH(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32Semaphore_CFG                               {\
            UNSG32 uCFG_DEPTH                                  : 16;\
            UNSG32 RSVDx0_b16                                  : 16;\
          }
    union { UNSG32 u32Semaphore_CFG;
            struct w32Semaphore_CFG;
          };
    ///////////////////////////////////////////////////////////
              SIE_SemaINTR                                     ie_INTR[3];
    ///////////////////////////////////////////////////////////
    #define   GET32Semaphore_mask_full(r32)                    _BFGET_(r32, 0, 0)
    #define   SET32Semaphore_mask_full(r32,v)                  _BFSET_(r32, 0, 0,v)
    #define   GET16Semaphore_mask_full(r16)                    _BFGET_(r16, 0, 0)
    #define   SET16Semaphore_mask_full(r16,v)                  _BFSET_(r16, 0, 0,v)

    #define   GET32Semaphore_mask_emp(r32)                     _BFGET_(r32, 1, 1)
    #define   SET32Semaphore_mask_emp(r32,v)                   _BFSET_(r32, 1, 1,v)
    #define   GET16Semaphore_mask_emp(r16)                     _BFGET_(r16, 1, 1)
    #define   SET16Semaphore_mask_emp(r16,v)                   _BFSET_(r16, 1, 1,v)

    #define     w32Semaphore_mask                              {\
            UNSG32 umask_full                                  :  1;\
            UNSG32 umask_emp                                   :  1;\
            UNSG32 RSVDx10_b2                                  : 30;\
          }
    union { UNSG32 u32Semaphore_mask;
            struct w32Semaphore_mask;
          };
    ///////////////////////////////////////////////////////////
    } SIE_Semaphore;

    typedef union  T32Semaphore_CFG
          { UNSG32 u32;
            struct w32Semaphore_CFG;
                 } T32Semaphore_CFG;
    typedef union  T32Semaphore_mask
          { UNSG32 u32;
            struct w32Semaphore_mask;
                 } T32Semaphore_mask;
    ///////////////////////////////////////////////////////////

    typedef union  TSemaphore_CFG
          { UNSG32 u32[1];
            struct {
            struct w32Semaphore_CFG;
                   };
                 } TSemaphore_CFG;
    typedef union  TSemaphore_mask
          { UNSG32 u32[1];
            struct {
            struct w32Semaphore_mask;
                   };
                 } TSemaphore_mask;

    ///////////////////////////////////////////////////////////
     SIGN32 Semaphore_drvrd(SIE_Semaphore *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 Semaphore_drvwr(SIE_Semaphore *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void Semaphore_reset(SIE_Semaphore *p);
     SIGN32 Semaphore_cmp  (SIE_Semaphore *p, SIE_Semaphore *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define Semaphore_check(p,pie,pfx,hLOG) Semaphore_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define Semaphore_print(p,    pfx,hLOG) Semaphore_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: Semaphore
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE SemaQuery                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 RESP                 (R-)
///               %unsigned 16 CNT                       
///                                    ###
///                                    * Semaphore counter level
///                                    ###
///               %unsigned 16 PTR                       
///                                    ###
///                                    * Semaphore pointer:
///                                    * producer-wptr or consumer-rptr
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_SemaQuery
#define h_SemaQuery (){}

    #define     RA_SemaQuery_RESP                              0x0000

    #define     BA_SemaQuery_RESP_CNT                          0x0000
    #define     B16SemaQuery_RESP_CNT                          0x0000
    #define   LSb32SemaQuery_RESP_CNT                             0
    #define   LSb16SemaQuery_RESP_CNT                             0
    #define       bSemaQuery_RESP_CNT                          16
    #define   MSK32SemaQuery_RESP_CNT                             0x0000FFFF

    #define     BA_SemaQuery_RESP_PTR                          0x0002
    #define     B16SemaQuery_RESP_PTR                          0x0002
    #define   LSb32SemaQuery_RESP_PTR                             16
    #define   LSb16SemaQuery_RESP_PTR                             0
    #define       bSemaQuery_RESP_PTR                          16
    #define   MSK32SemaQuery_RESP_PTR                             0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_SemaQuery {
    ///////////////////////////////////////////////////////////
    #define   GET32SemaQuery_RESP_CNT(r32)                     _BFGET_(r32,15, 0)
    #define   SET32SemaQuery_RESP_CNT(r32,v)                   _BFSET_(r32,15, 0,v)
    #define   GET16SemaQuery_RESP_CNT(r16)                     _BFGET_(r16,15, 0)
    #define   SET16SemaQuery_RESP_CNT(r16,v)                   _BFSET_(r16,15, 0,v)

    #define   GET32SemaQuery_RESP_PTR(r32)                     _BFGET_(r32,31,16)
    #define   SET32SemaQuery_RESP_PTR(r32,v)                   _BFSET_(r32,31,16,v)
    #define   GET16SemaQuery_RESP_PTR(r16)                     _BFGET_(r16,15, 0)
    #define   SET16SemaQuery_RESP_PTR(r16,v)                   _BFSET_(r16,15, 0,v)

    #define     w32SemaQuery_RESP                              {\
            UNSG32 uRESP_CNT                                   : 16;\
            UNSG32 uRESP_PTR                                   : 16;\
          }
    union { UNSG32 u32SemaQuery_RESP;
            struct w32SemaQuery_RESP;
          };
    ///////////////////////////////////////////////////////////
    } SIE_SemaQuery;

    typedef union  T32SemaQuery_RESP
          { UNSG32 u32;
            struct w32SemaQuery_RESP;
                 } T32SemaQuery_RESP;
    ///////////////////////////////////////////////////////////

    typedef union  TSemaQuery_RESP
          { UNSG32 u32[1];
            struct {
            struct w32SemaQuery_RESP;
                   };
                 } TSemaQuery_RESP;

    ///////////////////////////////////////////////////////////
     SIGN32 SemaQuery_drvrd(SIE_SemaQuery *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 SemaQuery_drvwr(SIE_SemaQuery *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void SemaQuery_reset(SIE_SemaQuery *p);
     SIGN32 SemaQuery_cmp  (SIE_SemaQuery *p, SIE_SemaQuery *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define SemaQuery_check(p,pie,pfx,hLOG) SemaQuery_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define SemaQuery_print(p,    pfx,hLOG) SemaQuery_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: SemaQuery
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE SemaQueryMap                             (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 ADDR                 (P)
///               %unsigned 2  byte                      
///               %unsigned 5  ID                        
///                                    ###
///                                    * Semaphore cell index
///                                    ###
///               %unsigned 1  master                    
///                                    : producer                  0x0
///                                    : consumer                  0x1
///                                                 ###
///                                                 * Select which counter to read
///                                                 ###
///               %%        24         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       8b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_SemaQueryMap
#define h_SemaQueryMap (){}

    #define     RA_SemaQueryMap_ADDR                           0x0000

    #define     BA_SemaQueryMap_ADDR_byte                      0x0000
    #define     B16SemaQueryMap_ADDR_byte                      0x0000
    #define   LSb32SemaQueryMap_ADDR_byte                         0
    #define   LSb16SemaQueryMap_ADDR_byte                         0
    #define       bSemaQueryMap_ADDR_byte                      2
    #define   MSK32SemaQueryMap_ADDR_byte                         0x00000003

    #define     BA_SemaQueryMap_ADDR_ID                        0x0000
    #define     B16SemaQueryMap_ADDR_ID                        0x0000
    #define   LSb32SemaQueryMap_ADDR_ID                           2
    #define   LSb16SemaQueryMap_ADDR_ID                           2
    #define       bSemaQueryMap_ADDR_ID                        5
    #define   MSK32SemaQueryMap_ADDR_ID                           0x0000007C

    #define     BA_SemaQueryMap_ADDR_master                    0x0000
    #define     B16SemaQueryMap_ADDR_master                    0x0000
    #define   LSb32SemaQueryMap_ADDR_master                       7
    #define   LSb16SemaQueryMap_ADDR_master                       7
    #define       bSemaQueryMap_ADDR_master                    1
    #define   MSK32SemaQueryMap_ADDR_master                       0x00000080
    #define        SemaQueryMap_ADDR_master_producer                        0x0
    #define        SemaQueryMap_ADDR_master_consumer                        0x1
    ///////////////////////////////////////////////////////////

    typedef struct SIE_SemaQueryMap {
    ///////////////////////////////////////////////////////////
    #define   GET32SemaQueryMap_ADDR_byte(r32)                 _BFGET_(r32, 1, 0)
    #define   SET32SemaQueryMap_ADDR_byte(r32,v)               _BFSET_(r32, 1, 0,v)
    #define   GET16SemaQueryMap_ADDR_byte(r16)                 _BFGET_(r16, 1, 0)
    #define   SET16SemaQueryMap_ADDR_byte(r16,v)               _BFSET_(r16, 1, 0,v)

    #define   GET32SemaQueryMap_ADDR_ID(r32)                   _BFGET_(r32, 6, 2)
    #define   SET32SemaQueryMap_ADDR_ID(r32,v)                 _BFSET_(r32, 6, 2,v)
    #define   GET16SemaQueryMap_ADDR_ID(r16)                   _BFGET_(r16, 6, 2)
    #define   SET16SemaQueryMap_ADDR_ID(r16,v)                 _BFSET_(r16, 6, 2,v)

    #define   GET32SemaQueryMap_ADDR_master(r32)               _BFGET_(r32, 7, 7)
    #define   SET32SemaQueryMap_ADDR_master(r32,v)             _BFSET_(r32, 7, 7,v)
    #define   GET16SemaQueryMap_ADDR_master(r16)               _BFGET_(r16, 7, 7)
    #define   SET16SemaQueryMap_ADDR_master(r16,v)             _BFSET_(r16, 7, 7,v)

    #define     w32SemaQueryMap_ADDR                           {\
            UNSG32 uADDR_byte                                  :  2;\
            UNSG32 uADDR_ID                                    :  5;\
            UNSG32 uADDR_master                                :  1;\
            UNSG32 RSVDx0_b8                                   : 24;\
          }
    union { UNSG32 u32SemaQueryMap_ADDR;
            struct w32SemaQueryMap_ADDR;
          };
    ///////////////////////////////////////////////////////////
    } SIE_SemaQueryMap;

    typedef union  T32SemaQueryMap_ADDR
          { UNSG32 u32;
            struct w32SemaQueryMap_ADDR;
                 } T32SemaQueryMap_ADDR;
    ///////////////////////////////////////////////////////////

    typedef union  TSemaQueryMap_ADDR
          { UNSG32 u32[1];
            struct {
            struct w32SemaQueryMap_ADDR;
                   };
                 } TSemaQueryMap_ADDR;

    ///////////////////////////////////////////////////////////
     SIGN32 SemaQueryMap_drvrd(SIE_SemaQueryMap *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 SemaQueryMap_drvwr(SIE_SemaQueryMap *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void SemaQueryMap_reset(SIE_SemaQueryMap *p);
     SIGN32 SemaQueryMap_cmp  (SIE_SemaQueryMap *p, SIE_SemaQueryMap *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define SemaQueryMap_check(p,pie,pfx,hLOG) SemaQueryMap_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define SemaQueryMap_print(p,    pfx,hLOG) SemaQueryMap_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: SemaQueryMap
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE SemaHub                 biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 Query                (R-)
///     # 0x00000 counter              
///               $SemaQuery           counter           MEM      [64]
///                                    ###
///                                    * Access address as defined above
///                                    ###
///     @ 0x00100 ARR                  (P)
///     # 0x00100 cell                 
///               $Semaphore           cell              REG      [32]
///                                    ###
///                                    * Up-to 32 semaphore cells
///                                    ###
///     @ 0x00380 PUSH                 (W-)
///               %unsigned 8  ID                        
///               %unsigned 8  delta                     
///                                    ###
///                                    * CPU increases PCounter by delta (range from 0 to 255)
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00384 POP                  (W-)
///               %unsigned 8  ID                        
///               %unsigned 8  delta                     
///                                    ###
///                                    * CPU decreases CCounter by delta (range from 0 to 255)
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00388 empty                (WOC-)
///               %unsigned 1  ST_0i                     0x0
///               %unsigned 1  ST_1i                     0x0
///               %unsigned 1  ST_2i                     0x0
///               %unsigned 1  ST_3i                     0x0
///               %unsigned 1  ST_4i                     0x0
///               %unsigned 1  ST_5i                     0x0
///               %unsigned 1  ST_6i                     0x0
///               %unsigned 1  ST_7i                     0x0
///               %unsigned 1  ST_8i                     0x0
///               %unsigned 1  ST_9i                     0x0
///               %unsigned 1  ST_10i                    0x0
///               %unsigned 1  ST_11i                    0x0
///               %unsigned 1  ST_12i                    0x0
///               %unsigned 1  ST_13i                    0x0
///               %unsigned 1  ST_14i                    0x0
///               %unsigned 1  ST_15i                    0x0
///               %unsigned 1  ST_16i                    0x0
///               %unsigned 1  ST_17i                    0x0
///               %unsigned 1  ST_18i                    0x0
///               %unsigned 1  ST_19i                    0x0
///               %unsigned 1  ST_20i                    0x0
///               %unsigned 1  ST_21i                    0x0
///               %unsigned 1  ST_22i                    0x0
///               %unsigned 1  ST_23i                    0x0
///               %unsigned 1  ST_24i                    0x0
///               %unsigned 1  ST_25i                    0x0
///               %unsigned 1  ST_26i                    0x0
///               %unsigned 1  ST_27i                    0x0
///               %unsigned 1  ST_28i                    0x0
///               %unsigned 1  ST_29i                    0x0
///               %unsigned 1  ST_30i                    0x0
///               %unsigned 1  ST_31i                    0x0
///                                    ###
///                                    * All cell 'empty' status
///                                    ###
///     @ 0x0038C full                 (WOC-)
///               %unsigned 1  ST_0i                     0x0
///               %unsigned 1  ST_1i                     0x0
///               %unsigned 1  ST_2i                     0x0
///               %unsigned 1  ST_3i                     0x0
///               %unsigned 1  ST_4i                     0x0
///               %unsigned 1  ST_5i                     0x0
///               %unsigned 1  ST_6i                     0x0
///               %unsigned 1  ST_7i                     0x0
///               %unsigned 1  ST_8i                     0x0
///               %unsigned 1  ST_9i                     0x0
///               %unsigned 1  ST_10i                    0x0
///               %unsigned 1  ST_11i                    0x0
///               %unsigned 1  ST_12i                    0x0
///               %unsigned 1  ST_13i                    0x0
///               %unsigned 1  ST_14i                    0x0
///               %unsigned 1  ST_15i                    0x0
///               %unsigned 1  ST_16i                    0x0
///               %unsigned 1  ST_17i                    0x0
///               %unsigned 1  ST_18i                    0x0
///               %unsigned 1  ST_19i                    0x0
///               %unsigned 1  ST_20i                    0x0
///               %unsigned 1  ST_21i                    0x0
///               %unsigned 1  ST_22i                    0x0
///               %unsigned 1  ST_23i                    0x0
///               %unsigned 1  ST_24i                    0x0
///               %unsigned 1  ST_25i                    0x0
///               %unsigned 1  ST_26i                    0x0
///               %unsigned 1  ST_27i                    0x0
///               %unsigned 1  ST_28i                    0x0
///               %unsigned 1  ST_29i                    0x0
///               %unsigned 1  ST_30i                    0x0
///               %unsigned 1  ST_31i                    0x0
///                                    ###
///                                    * All cell 'full' status
///                                    ###
///     @ 0x00390 almostEmpty          (WOC-)
///               %unsigned 1  ST_0i                     0x0
///               %unsigned 1  ST_1i                     0x0
///               %unsigned 1  ST_2i                     0x0
///               %unsigned 1  ST_3i                     0x0
///               %unsigned 1  ST_4i                     0x0
///               %unsigned 1  ST_5i                     0x0
///               %unsigned 1  ST_6i                     0x0
///               %unsigned 1  ST_7i                     0x0
///               %unsigned 1  ST_8i                     0x0
///               %unsigned 1  ST_9i                     0x0
///               %unsigned 1  ST_10i                    0x0
///               %unsigned 1  ST_11i                    0x0
///               %unsigned 1  ST_12i                    0x0
///               %unsigned 1  ST_13i                    0x0
///               %unsigned 1  ST_14i                    0x0
///               %unsigned 1  ST_15i                    0x0
///               %unsigned 1  ST_16i                    0x0
///               %unsigned 1  ST_17i                    0x0
///               %unsigned 1  ST_18i                    0x0
///               %unsigned 1  ST_19i                    0x0
///               %unsigned 1  ST_20i                    0x0
///               %unsigned 1  ST_21i                    0x0
///               %unsigned 1  ST_22i                    0x0
///               %unsigned 1  ST_23i                    0x0
///               %unsigned 1  ST_24i                    0x0
///               %unsigned 1  ST_25i                    0x0
///               %unsigned 1  ST_26i                    0x0
///               %unsigned 1  ST_27i                    0x0
///               %unsigned 1  ST_28i                    0x0
///               %unsigned 1  ST_29i                    0x0
///               %unsigned 1  ST_30i                    0x0
///               %unsigned 1  ST_31i                    0x0
///                                    ###
///                                    * All cell 'almostEmpty' status
///                                    ###
///     @ 0x00394 almostFull           (WOC-)
///               %unsigned 1  ST_0i                     0x0
///               %unsigned 1  ST_1i                     0x0
///               %unsigned 1  ST_2i                     0x0
///               %unsigned 1  ST_3i                     0x0
///               %unsigned 1  ST_4i                     0x0
///               %unsigned 1  ST_5i                     0x0
///               %unsigned 1  ST_6i                     0x0
///               %unsigned 1  ST_7i                     0x0
///               %unsigned 1  ST_8i                     0x0
///               %unsigned 1  ST_9i                     0x0
///               %unsigned 1  ST_10i                    0x0
///               %unsigned 1  ST_11i                    0x0
///               %unsigned 1  ST_12i                    0x0
///               %unsigned 1  ST_13i                    0x0
///               %unsigned 1  ST_14i                    0x0
///               %unsigned 1  ST_15i                    0x0
///               %unsigned 1  ST_16i                    0x0
///               %unsigned 1  ST_17i                    0x0
///               %unsigned 1  ST_18i                    0x0
///               %unsigned 1  ST_19i                    0x0
///               %unsigned 1  ST_20i                    0x0
///               %unsigned 1  ST_21i                    0x0
///               %unsigned 1  ST_22i                    0x0
///               %unsigned 1  ST_23i                    0x0
///               %unsigned 1  ST_24i                    0x0
///               %unsigned 1  ST_25i                    0x0
///               %unsigned 1  ST_26i                    0x0
///               %unsigned 1  ST_27i                    0x0
///               %unsigned 1  ST_28i                    0x0
///               %unsigned 1  ST_29i                    0x0
///               %unsigned 1  ST_30i                    0x0
///               %unsigned 1  ST_31i                    0x0
///                                    ###
///                                    * All cell 'almostFull' status
///                                    ###
///     @ 0x00398                      (W-)
///     #         # Stuffing bytes...
///               %% 832
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    1024B, bits:    1152b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_SemaHub
#define h_SemaHub (){}

    #define     RA_SemaHub_Query                               0x0000
    #define     RA_SemaHub_counter                             0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_SemaHub_ARR                                 0x0100
    #define     RA_SemaHub_cell                                0x0100
    ///////////////////////////////////////////////////////////
    #define     RA_SemaHub_PUSH                                0x0380

    #define     BA_SemaHub_PUSH_ID                             0x0380
    #define     B16SemaHub_PUSH_ID                             0x0380
    #define   LSb32SemaHub_PUSH_ID                                0
    #define   LSb16SemaHub_PUSH_ID                                0
    #define       bSemaHub_PUSH_ID                             8
    #define   MSK32SemaHub_PUSH_ID                                0x000000FF

    #define     BA_SemaHub_PUSH_delta                          0x0381
    #define     B16SemaHub_PUSH_delta                          0x0380
    #define   LSb32SemaHub_PUSH_delta                             8
    #define   LSb16SemaHub_PUSH_delta                             8
    #define       bSemaHub_PUSH_delta                          8
    #define   MSK32SemaHub_PUSH_delta                             0x0000FF00
    ///////////////////////////////////////////////////////////
    #define     RA_SemaHub_POP                                 0x0384

    #define     BA_SemaHub_POP_ID                              0x0384
    #define     B16SemaHub_POP_ID                              0x0384
    #define   LSb32SemaHub_POP_ID                                 0
    #define   LSb16SemaHub_POP_ID                                 0
    #define       bSemaHub_POP_ID                              8
    #define   MSK32SemaHub_POP_ID                                 0x000000FF

    #define     BA_SemaHub_POP_delta                           0x0385
    #define     B16SemaHub_POP_delta                           0x0384
    #define   LSb32SemaHub_POP_delta                              8
    #define   LSb16SemaHub_POP_delta                              8
    #define       bSemaHub_POP_delta                           8
    #define   MSK32SemaHub_POP_delta                              0x0000FF00
    ///////////////////////////////////////////////////////////
    #define     RA_SemaHub_empty                               0x0388

    #define     BA_SemaHub_empty_ST_0i                         0x0388
    #define     B16SemaHub_empty_ST_0i                         0x0388
    #define   LSb32SemaHub_empty_ST_0i                            0
    #define   LSb16SemaHub_empty_ST_0i                            0
    #define       bSemaHub_empty_ST_0i                         1
    #define   MSK32SemaHub_empty_ST_0i                            0x00000001

    #define     BA_SemaHub_empty_ST_1i                         0x0388
    #define     B16SemaHub_empty_ST_1i                         0x0388
    #define   LSb32SemaHub_empty_ST_1i                            1
    #define   LSb16SemaHub_empty_ST_1i                            1
    #define       bSemaHub_empty_ST_1i                         1
    #define   MSK32SemaHub_empty_ST_1i                            0x00000002

    #define     BA_SemaHub_empty_ST_2i                         0x0388
    #define     B16SemaHub_empty_ST_2i                         0x0388
    #define   LSb32SemaHub_empty_ST_2i                            2
    #define   LSb16SemaHub_empty_ST_2i                            2
    #define       bSemaHub_empty_ST_2i                         1
    #define   MSK32SemaHub_empty_ST_2i                            0x00000004

    #define     BA_SemaHub_empty_ST_3i                         0x0388
    #define     B16SemaHub_empty_ST_3i                         0x0388
    #define   LSb32SemaHub_empty_ST_3i                            3
    #define   LSb16SemaHub_empty_ST_3i                            3
    #define       bSemaHub_empty_ST_3i                         1
    #define   MSK32SemaHub_empty_ST_3i                            0x00000008

    #define     BA_SemaHub_empty_ST_4i                         0x0388
    #define     B16SemaHub_empty_ST_4i                         0x0388
    #define   LSb32SemaHub_empty_ST_4i                            4
    #define   LSb16SemaHub_empty_ST_4i                            4
    #define       bSemaHub_empty_ST_4i                         1
    #define   MSK32SemaHub_empty_ST_4i                            0x00000010

    #define     BA_SemaHub_empty_ST_5i                         0x0388
    #define     B16SemaHub_empty_ST_5i                         0x0388
    #define   LSb32SemaHub_empty_ST_5i                            5
    #define   LSb16SemaHub_empty_ST_5i                            5
    #define       bSemaHub_empty_ST_5i                         1
    #define   MSK32SemaHub_empty_ST_5i                            0x00000020

    #define     BA_SemaHub_empty_ST_6i                         0x0388
    #define     B16SemaHub_empty_ST_6i                         0x0388
    #define   LSb32SemaHub_empty_ST_6i                            6
    #define   LSb16SemaHub_empty_ST_6i                            6
    #define       bSemaHub_empty_ST_6i                         1
    #define   MSK32SemaHub_empty_ST_6i                            0x00000040

    #define     BA_SemaHub_empty_ST_7i                         0x0388
    #define     B16SemaHub_empty_ST_7i                         0x0388
    #define   LSb32SemaHub_empty_ST_7i                            7
    #define   LSb16SemaHub_empty_ST_7i                            7
    #define       bSemaHub_empty_ST_7i                         1
    #define   MSK32SemaHub_empty_ST_7i                            0x00000080

    #define     BA_SemaHub_empty_ST_8i                         0x0389
    #define     B16SemaHub_empty_ST_8i                         0x0388
    #define   LSb32SemaHub_empty_ST_8i                            8
    #define   LSb16SemaHub_empty_ST_8i                            8
    #define       bSemaHub_empty_ST_8i                         1
    #define   MSK32SemaHub_empty_ST_8i                            0x00000100

    #define     BA_SemaHub_empty_ST_9i                         0x0389
    #define     B16SemaHub_empty_ST_9i                         0x0388
    #define   LSb32SemaHub_empty_ST_9i                            9
    #define   LSb16SemaHub_empty_ST_9i                            9
    #define       bSemaHub_empty_ST_9i                         1
    #define   MSK32SemaHub_empty_ST_9i                            0x00000200

    #define     BA_SemaHub_empty_ST_10i                        0x0389
    #define     B16SemaHub_empty_ST_10i                        0x0388
    #define   LSb32SemaHub_empty_ST_10i                           10
    #define   LSb16SemaHub_empty_ST_10i                           10
    #define       bSemaHub_empty_ST_10i                        1
    #define   MSK32SemaHub_empty_ST_10i                           0x00000400

    #define     BA_SemaHub_empty_ST_11i                        0x0389
    #define     B16SemaHub_empty_ST_11i                        0x0388
    #define   LSb32SemaHub_empty_ST_11i                           11
    #define   LSb16SemaHub_empty_ST_11i                           11
    #define       bSemaHub_empty_ST_11i                        1
    #define   MSK32SemaHub_empty_ST_11i                           0x00000800

    #define     BA_SemaHub_empty_ST_12i                        0x0389
    #define     B16SemaHub_empty_ST_12i                        0x0388
    #define   LSb32SemaHub_empty_ST_12i                           12
    #define   LSb16SemaHub_empty_ST_12i                           12
    #define       bSemaHub_empty_ST_12i                        1
    #define   MSK32SemaHub_empty_ST_12i                           0x00001000

    #define     BA_SemaHub_empty_ST_13i                        0x0389
    #define     B16SemaHub_empty_ST_13i                        0x0388
    #define   LSb32SemaHub_empty_ST_13i                           13
    #define   LSb16SemaHub_empty_ST_13i                           13
    #define       bSemaHub_empty_ST_13i                        1
    #define   MSK32SemaHub_empty_ST_13i                           0x00002000

    #define     BA_SemaHub_empty_ST_14i                        0x0389
    #define     B16SemaHub_empty_ST_14i                        0x0388
    #define   LSb32SemaHub_empty_ST_14i                           14
    #define   LSb16SemaHub_empty_ST_14i                           14
    #define       bSemaHub_empty_ST_14i                        1
    #define   MSK32SemaHub_empty_ST_14i                           0x00004000

    #define     BA_SemaHub_empty_ST_15i                        0x0389
    #define     B16SemaHub_empty_ST_15i                        0x0388
    #define   LSb32SemaHub_empty_ST_15i                           15
    #define   LSb16SemaHub_empty_ST_15i                           15
    #define       bSemaHub_empty_ST_15i                        1
    #define   MSK32SemaHub_empty_ST_15i                           0x00008000

    #define     BA_SemaHub_empty_ST_16i                        0x038A
    #define     B16SemaHub_empty_ST_16i                        0x038A
    #define   LSb32SemaHub_empty_ST_16i                           16
    #define   LSb16SemaHub_empty_ST_16i                           0
    #define       bSemaHub_empty_ST_16i                        1
    #define   MSK32SemaHub_empty_ST_16i                           0x00010000

    #define     BA_SemaHub_empty_ST_17i                        0x038A
    #define     B16SemaHub_empty_ST_17i                        0x038A
    #define   LSb32SemaHub_empty_ST_17i                           17
    #define   LSb16SemaHub_empty_ST_17i                           1
    #define       bSemaHub_empty_ST_17i                        1
    #define   MSK32SemaHub_empty_ST_17i                           0x00020000

    #define     BA_SemaHub_empty_ST_18i                        0x038A
    #define     B16SemaHub_empty_ST_18i                        0x038A
    #define   LSb32SemaHub_empty_ST_18i                           18
    #define   LSb16SemaHub_empty_ST_18i                           2
    #define       bSemaHub_empty_ST_18i                        1
    #define   MSK32SemaHub_empty_ST_18i                           0x00040000

    #define     BA_SemaHub_empty_ST_19i                        0x038A
    #define     B16SemaHub_empty_ST_19i                        0x038A
    #define   LSb32SemaHub_empty_ST_19i                           19
    #define   LSb16SemaHub_empty_ST_19i                           3
    #define       bSemaHub_empty_ST_19i                        1
    #define   MSK32SemaHub_empty_ST_19i                           0x00080000

    #define     BA_SemaHub_empty_ST_20i                        0x038A
    #define     B16SemaHub_empty_ST_20i                        0x038A
    #define   LSb32SemaHub_empty_ST_20i                           20
    #define   LSb16SemaHub_empty_ST_20i                           4
    #define       bSemaHub_empty_ST_20i                        1
    #define   MSK32SemaHub_empty_ST_20i                           0x00100000

    #define     BA_SemaHub_empty_ST_21i                        0x038A
    #define     B16SemaHub_empty_ST_21i                        0x038A
    #define   LSb32SemaHub_empty_ST_21i                           21
    #define   LSb16SemaHub_empty_ST_21i                           5
    #define       bSemaHub_empty_ST_21i                        1
    #define   MSK32SemaHub_empty_ST_21i                           0x00200000

    #define     BA_SemaHub_empty_ST_22i                        0x038A
    #define     B16SemaHub_empty_ST_22i                        0x038A
    #define   LSb32SemaHub_empty_ST_22i                           22
    #define   LSb16SemaHub_empty_ST_22i                           6
    #define       bSemaHub_empty_ST_22i                        1
    #define   MSK32SemaHub_empty_ST_22i                           0x00400000

    #define     BA_SemaHub_empty_ST_23i                        0x038A
    #define     B16SemaHub_empty_ST_23i                        0x038A
    #define   LSb32SemaHub_empty_ST_23i                           23
    #define   LSb16SemaHub_empty_ST_23i                           7
    #define       bSemaHub_empty_ST_23i                        1
    #define   MSK32SemaHub_empty_ST_23i                           0x00800000

    #define     BA_SemaHub_empty_ST_24i                        0x038B
    #define     B16SemaHub_empty_ST_24i                        0x038A
    #define   LSb32SemaHub_empty_ST_24i                           24
    #define   LSb16SemaHub_empty_ST_24i                           8
    #define       bSemaHub_empty_ST_24i                        1
    #define   MSK32SemaHub_empty_ST_24i                           0x01000000

    #define     BA_SemaHub_empty_ST_25i                        0x038B
    #define     B16SemaHub_empty_ST_25i                        0x038A
    #define   LSb32SemaHub_empty_ST_25i                           25
    #define   LSb16SemaHub_empty_ST_25i                           9
    #define       bSemaHub_empty_ST_25i                        1
    #define   MSK32SemaHub_empty_ST_25i                           0x02000000

    #define     BA_SemaHub_empty_ST_26i                        0x038B
    #define     B16SemaHub_empty_ST_26i                        0x038A
    #define   LSb32SemaHub_empty_ST_26i                           26
    #define   LSb16SemaHub_empty_ST_26i                           10
    #define       bSemaHub_empty_ST_26i                        1
    #define   MSK32SemaHub_empty_ST_26i                           0x04000000

    #define     BA_SemaHub_empty_ST_27i                        0x038B
    #define     B16SemaHub_empty_ST_27i                        0x038A
    #define   LSb32SemaHub_empty_ST_27i                           27
    #define   LSb16SemaHub_empty_ST_27i                           11
    #define       bSemaHub_empty_ST_27i                        1
    #define   MSK32SemaHub_empty_ST_27i                           0x08000000

    #define     BA_SemaHub_empty_ST_28i                        0x038B
    #define     B16SemaHub_empty_ST_28i                        0x038A
    #define   LSb32SemaHub_empty_ST_28i                           28
    #define   LSb16SemaHub_empty_ST_28i                           12
    #define       bSemaHub_empty_ST_28i                        1
    #define   MSK32SemaHub_empty_ST_28i                           0x10000000

    #define     BA_SemaHub_empty_ST_29i                        0x038B
    #define     B16SemaHub_empty_ST_29i                        0x038A
    #define   LSb32SemaHub_empty_ST_29i                           29
    #define   LSb16SemaHub_empty_ST_29i                           13
    #define       bSemaHub_empty_ST_29i                        1
    #define   MSK32SemaHub_empty_ST_29i                           0x20000000

    #define     BA_SemaHub_empty_ST_30i                        0x038B
    #define     B16SemaHub_empty_ST_30i                        0x038A
    #define   LSb32SemaHub_empty_ST_30i                           30
    #define   LSb16SemaHub_empty_ST_30i                           14
    #define       bSemaHub_empty_ST_30i                        1
    #define   MSK32SemaHub_empty_ST_30i                           0x40000000

    #define     BA_SemaHub_empty_ST_31i                        0x038B
    #define     B16SemaHub_empty_ST_31i                        0x038A
    #define   LSb32SemaHub_empty_ST_31i                           31
    #define   LSb16SemaHub_empty_ST_31i                           15
    #define       bSemaHub_empty_ST_31i                        1
    #define   MSK32SemaHub_empty_ST_31i                           0x80000000
    ///////////////////////////////////////////////////////////
    #define     RA_SemaHub_full                                0x038C

    #define     BA_SemaHub_full_ST_0i                          0x038C
    #define     B16SemaHub_full_ST_0i                          0x038C
    #define   LSb32SemaHub_full_ST_0i                             0
    #define   LSb16SemaHub_full_ST_0i                             0
    #define       bSemaHub_full_ST_0i                          1
    #define   MSK32SemaHub_full_ST_0i                             0x00000001

    #define     BA_SemaHub_full_ST_1i                          0x038C
    #define     B16SemaHub_full_ST_1i                          0x038C
    #define   LSb32SemaHub_full_ST_1i                             1
    #define   LSb16SemaHub_full_ST_1i                             1
    #define       bSemaHub_full_ST_1i                          1
    #define   MSK32SemaHub_full_ST_1i                             0x00000002

    #define     BA_SemaHub_full_ST_2i                          0x038C
    #define     B16SemaHub_full_ST_2i                          0x038C
    #define   LSb32SemaHub_full_ST_2i                             2
    #define   LSb16SemaHub_full_ST_2i                             2
    #define       bSemaHub_full_ST_2i                          1
    #define   MSK32SemaHub_full_ST_2i                             0x00000004

    #define     BA_SemaHub_full_ST_3i                          0x038C
    #define     B16SemaHub_full_ST_3i                          0x038C
    #define   LSb32SemaHub_full_ST_3i                             3
    #define   LSb16SemaHub_full_ST_3i                             3
    #define       bSemaHub_full_ST_3i                          1
    #define   MSK32SemaHub_full_ST_3i                             0x00000008

    #define     BA_SemaHub_full_ST_4i                          0x038C
    #define     B16SemaHub_full_ST_4i                          0x038C
    #define   LSb32SemaHub_full_ST_4i                             4
    #define   LSb16SemaHub_full_ST_4i                             4
    #define       bSemaHub_full_ST_4i                          1
    #define   MSK32SemaHub_full_ST_4i                             0x00000010

    #define     BA_SemaHub_full_ST_5i                          0x038C
    #define     B16SemaHub_full_ST_5i                          0x038C
    #define   LSb32SemaHub_full_ST_5i                             5
    #define   LSb16SemaHub_full_ST_5i                             5
    #define       bSemaHub_full_ST_5i                          1
    #define   MSK32SemaHub_full_ST_5i                             0x00000020

    #define     BA_SemaHub_full_ST_6i                          0x038C
    #define     B16SemaHub_full_ST_6i                          0x038C
    #define   LSb32SemaHub_full_ST_6i                             6
    #define   LSb16SemaHub_full_ST_6i                             6
    #define       bSemaHub_full_ST_6i                          1
    #define   MSK32SemaHub_full_ST_6i                             0x00000040

    #define     BA_SemaHub_full_ST_7i                          0x038C
    #define     B16SemaHub_full_ST_7i                          0x038C
    #define   LSb32SemaHub_full_ST_7i                             7
    #define   LSb16SemaHub_full_ST_7i                             7
    #define       bSemaHub_full_ST_7i                          1
    #define   MSK32SemaHub_full_ST_7i                             0x00000080

    #define     BA_SemaHub_full_ST_8i                          0x038D
    #define     B16SemaHub_full_ST_8i                          0x038C
    #define   LSb32SemaHub_full_ST_8i                             8
    #define   LSb16SemaHub_full_ST_8i                             8
    #define       bSemaHub_full_ST_8i                          1
    #define   MSK32SemaHub_full_ST_8i                             0x00000100

    #define     BA_SemaHub_full_ST_9i                          0x038D
    #define     B16SemaHub_full_ST_9i                          0x038C
    #define   LSb32SemaHub_full_ST_9i                             9
    #define   LSb16SemaHub_full_ST_9i                             9
    #define       bSemaHub_full_ST_9i                          1
    #define   MSK32SemaHub_full_ST_9i                             0x00000200

    #define     BA_SemaHub_full_ST_10i                         0x038D
    #define     B16SemaHub_full_ST_10i                         0x038C
    #define   LSb32SemaHub_full_ST_10i                            10
    #define   LSb16SemaHub_full_ST_10i                            10
    #define       bSemaHub_full_ST_10i                         1
    #define   MSK32SemaHub_full_ST_10i                            0x00000400

    #define     BA_SemaHub_full_ST_11i                         0x038D
    #define     B16SemaHub_full_ST_11i                         0x038C
    #define   LSb32SemaHub_full_ST_11i                            11
    #define   LSb16SemaHub_full_ST_11i                            11
    #define       bSemaHub_full_ST_11i                         1
    #define   MSK32SemaHub_full_ST_11i                            0x00000800

    #define     BA_SemaHub_full_ST_12i                         0x038D
    #define     B16SemaHub_full_ST_12i                         0x038C
    #define   LSb32SemaHub_full_ST_12i                            12
    #define   LSb16SemaHub_full_ST_12i                            12
    #define       bSemaHub_full_ST_12i                         1
    #define   MSK32SemaHub_full_ST_12i                            0x00001000

    #define     BA_SemaHub_full_ST_13i                         0x038D
    #define     B16SemaHub_full_ST_13i                         0x038C
    #define   LSb32SemaHub_full_ST_13i                            13
    #define   LSb16SemaHub_full_ST_13i                            13
    #define       bSemaHub_full_ST_13i                         1
    #define   MSK32SemaHub_full_ST_13i                            0x00002000

    #define     BA_SemaHub_full_ST_14i                         0x038D
    #define     B16SemaHub_full_ST_14i                         0x038C
    #define   LSb32SemaHub_full_ST_14i                            14
    #define   LSb16SemaHub_full_ST_14i                            14
    #define       bSemaHub_full_ST_14i                         1
    #define   MSK32SemaHub_full_ST_14i                            0x00004000

    #define     BA_SemaHub_full_ST_15i                         0x038D
    #define     B16SemaHub_full_ST_15i                         0x038C
    #define   LSb32SemaHub_full_ST_15i                            15
    #define   LSb16SemaHub_full_ST_15i                            15
    #define       bSemaHub_full_ST_15i                         1
    #define   MSK32SemaHub_full_ST_15i                            0x00008000

    #define     BA_SemaHub_full_ST_16i                         0x038E
    #define     B16SemaHub_full_ST_16i                         0x038E
    #define   LSb32SemaHub_full_ST_16i                            16
    #define   LSb16SemaHub_full_ST_16i                            0
    #define       bSemaHub_full_ST_16i                         1
    #define   MSK32SemaHub_full_ST_16i                            0x00010000

    #define     BA_SemaHub_full_ST_17i                         0x038E
    #define     B16SemaHub_full_ST_17i                         0x038E
    #define   LSb32SemaHub_full_ST_17i                            17
    #define   LSb16SemaHub_full_ST_17i                            1
    #define       bSemaHub_full_ST_17i                         1
    #define   MSK32SemaHub_full_ST_17i                            0x00020000

    #define     BA_SemaHub_full_ST_18i                         0x038E
    #define     B16SemaHub_full_ST_18i                         0x038E
    #define   LSb32SemaHub_full_ST_18i                            18
    #define   LSb16SemaHub_full_ST_18i                            2
    #define       bSemaHub_full_ST_18i                         1
    #define   MSK32SemaHub_full_ST_18i                            0x00040000

    #define     BA_SemaHub_full_ST_19i                         0x038E
    #define     B16SemaHub_full_ST_19i                         0x038E
    #define   LSb32SemaHub_full_ST_19i                            19
    #define   LSb16SemaHub_full_ST_19i                            3
    #define       bSemaHub_full_ST_19i                         1
    #define   MSK32SemaHub_full_ST_19i                            0x00080000

    #define     BA_SemaHub_full_ST_20i                         0x038E
    #define     B16SemaHub_full_ST_20i                         0x038E
    #define   LSb32SemaHub_full_ST_20i                            20
    #define   LSb16SemaHub_full_ST_20i                            4
    #define       bSemaHub_full_ST_20i                         1
    #define   MSK32SemaHub_full_ST_20i                            0x00100000

    #define     BA_SemaHub_full_ST_21i                         0x038E
    #define     B16SemaHub_full_ST_21i                         0x038E
    #define   LSb32SemaHub_full_ST_21i                            21
    #define   LSb16SemaHub_full_ST_21i                            5
    #define       bSemaHub_full_ST_21i                         1
    #define   MSK32SemaHub_full_ST_21i                            0x00200000

    #define     BA_SemaHub_full_ST_22i                         0x038E
    #define     B16SemaHub_full_ST_22i                         0x038E
    #define   LSb32SemaHub_full_ST_22i                            22
    #define   LSb16SemaHub_full_ST_22i                            6
    #define       bSemaHub_full_ST_22i                         1
    #define   MSK32SemaHub_full_ST_22i                            0x00400000

    #define     BA_SemaHub_full_ST_23i                         0x038E
    #define     B16SemaHub_full_ST_23i                         0x038E
    #define   LSb32SemaHub_full_ST_23i                            23
    #define   LSb16SemaHub_full_ST_23i                            7
    #define       bSemaHub_full_ST_23i                         1
    #define   MSK32SemaHub_full_ST_23i                            0x00800000

    #define     BA_SemaHub_full_ST_24i                         0x038F
    #define     B16SemaHub_full_ST_24i                         0x038E
    #define   LSb32SemaHub_full_ST_24i                            24
    #define   LSb16SemaHub_full_ST_24i                            8
    #define       bSemaHub_full_ST_24i                         1
    #define   MSK32SemaHub_full_ST_24i                            0x01000000

    #define     BA_SemaHub_full_ST_25i                         0x038F
    #define     B16SemaHub_full_ST_25i                         0x038E
    #define   LSb32SemaHub_full_ST_25i                            25
    #define   LSb16SemaHub_full_ST_25i                            9
    #define       bSemaHub_full_ST_25i                         1
    #define   MSK32SemaHub_full_ST_25i                            0x02000000

    #define     BA_SemaHub_full_ST_26i                         0x038F
    #define     B16SemaHub_full_ST_26i                         0x038E
    #define   LSb32SemaHub_full_ST_26i                            26
    #define   LSb16SemaHub_full_ST_26i                            10
    #define       bSemaHub_full_ST_26i                         1
    #define   MSK32SemaHub_full_ST_26i                            0x04000000

    #define     BA_SemaHub_full_ST_27i                         0x038F
    #define     B16SemaHub_full_ST_27i                         0x038E
    #define   LSb32SemaHub_full_ST_27i                            27
    #define   LSb16SemaHub_full_ST_27i                            11
    #define       bSemaHub_full_ST_27i                         1
    #define   MSK32SemaHub_full_ST_27i                            0x08000000

    #define     BA_SemaHub_full_ST_28i                         0x038F
    #define     B16SemaHub_full_ST_28i                         0x038E
    #define   LSb32SemaHub_full_ST_28i                            28
    #define   LSb16SemaHub_full_ST_28i                            12
    #define       bSemaHub_full_ST_28i                         1
    #define   MSK32SemaHub_full_ST_28i                            0x10000000

    #define     BA_SemaHub_full_ST_29i                         0x038F
    #define     B16SemaHub_full_ST_29i                         0x038E
    #define   LSb32SemaHub_full_ST_29i                            29
    #define   LSb16SemaHub_full_ST_29i                            13
    #define       bSemaHub_full_ST_29i                         1
    #define   MSK32SemaHub_full_ST_29i                            0x20000000

    #define     BA_SemaHub_full_ST_30i                         0x038F
    #define     B16SemaHub_full_ST_30i                         0x038E
    #define   LSb32SemaHub_full_ST_30i                            30
    #define   LSb16SemaHub_full_ST_30i                            14
    #define       bSemaHub_full_ST_30i                         1
    #define   MSK32SemaHub_full_ST_30i                            0x40000000

    #define     BA_SemaHub_full_ST_31i                         0x038F
    #define     B16SemaHub_full_ST_31i                         0x038E
    #define   LSb32SemaHub_full_ST_31i                            31
    #define   LSb16SemaHub_full_ST_31i                            15
    #define       bSemaHub_full_ST_31i                         1
    #define   MSK32SemaHub_full_ST_31i                            0x80000000
    ///////////////////////////////////////////////////////////
    #define     RA_SemaHub_almostEmpty                         0x0390

    #define     BA_SemaHub_almostEmpty_ST_0i                   0x0390
    #define     B16SemaHub_almostEmpty_ST_0i                   0x0390
    #define   LSb32SemaHub_almostEmpty_ST_0i                      0
    #define   LSb16SemaHub_almostEmpty_ST_0i                      0
    #define       bSemaHub_almostEmpty_ST_0i                   1
    #define   MSK32SemaHub_almostEmpty_ST_0i                      0x00000001

    #define     BA_SemaHub_almostEmpty_ST_1i                   0x0390
    #define     B16SemaHub_almostEmpty_ST_1i                   0x0390
    #define   LSb32SemaHub_almostEmpty_ST_1i                      1
    #define   LSb16SemaHub_almostEmpty_ST_1i                      1
    #define       bSemaHub_almostEmpty_ST_1i                   1
    #define   MSK32SemaHub_almostEmpty_ST_1i                      0x00000002

    #define     BA_SemaHub_almostEmpty_ST_2i                   0x0390
    #define     B16SemaHub_almostEmpty_ST_2i                   0x0390
    #define   LSb32SemaHub_almostEmpty_ST_2i                      2
    #define   LSb16SemaHub_almostEmpty_ST_2i                      2
    #define       bSemaHub_almostEmpty_ST_2i                   1
    #define   MSK32SemaHub_almostEmpty_ST_2i                      0x00000004

    #define     BA_SemaHub_almostEmpty_ST_3i                   0x0390
    #define     B16SemaHub_almostEmpty_ST_3i                   0x0390
    #define   LSb32SemaHub_almostEmpty_ST_3i                      3
    #define   LSb16SemaHub_almostEmpty_ST_3i                      3
    #define       bSemaHub_almostEmpty_ST_3i                   1
    #define   MSK32SemaHub_almostEmpty_ST_3i                      0x00000008

    #define     BA_SemaHub_almostEmpty_ST_4i                   0x0390
    #define     B16SemaHub_almostEmpty_ST_4i                   0x0390
    #define   LSb32SemaHub_almostEmpty_ST_4i                      4
    #define   LSb16SemaHub_almostEmpty_ST_4i                      4
    #define       bSemaHub_almostEmpty_ST_4i                   1
    #define   MSK32SemaHub_almostEmpty_ST_4i                      0x00000010

    #define     BA_SemaHub_almostEmpty_ST_5i                   0x0390
    #define     B16SemaHub_almostEmpty_ST_5i                   0x0390
    #define   LSb32SemaHub_almostEmpty_ST_5i                      5
    #define   LSb16SemaHub_almostEmpty_ST_5i                      5
    #define       bSemaHub_almostEmpty_ST_5i                   1
    #define   MSK32SemaHub_almostEmpty_ST_5i                      0x00000020

    #define     BA_SemaHub_almostEmpty_ST_6i                   0x0390
    #define     B16SemaHub_almostEmpty_ST_6i                   0x0390
    #define   LSb32SemaHub_almostEmpty_ST_6i                      6
    #define   LSb16SemaHub_almostEmpty_ST_6i                      6
    #define       bSemaHub_almostEmpty_ST_6i                   1
    #define   MSK32SemaHub_almostEmpty_ST_6i                      0x00000040

    #define     BA_SemaHub_almostEmpty_ST_7i                   0x0390
    #define     B16SemaHub_almostEmpty_ST_7i                   0x0390
    #define   LSb32SemaHub_almostEmpty_ST_7i                      7
    #define   LSb16SemaHub_almostEmpty_ST_7i                      7
    #define       bSemaHub_almostEmpty_ST_7i                   1
    #define   MSK32SemaHub_almostEmpty_ST_7i                      0x00000080

    #define     BA_SemaHub_almostEmpty_ST_8i                   0x0391
    #define     B16SemaHub_almostEmpty_ST_8i                   0x0390
    #define   LSb32SemaHub_almostEmpty_ST_8i                      8
    #define   LSb16SemaHub_almostEmpty_ST_8i                      8
    #define       bSemaHub_almostEmpty_ST_8i                   1
    #define   MSK32SemaHub_almostEmpty_ST_8i                      0x00000100

    #define     BA_SemaHub_almostEmpty_ST_9i                   0x0391
    #define     B16SemaHub_almostEmpty_ST_9i                   0x0390
    #define   LSb32SemaHub_almostEmpty_ST_9i                      9
    #define   LSb16SemaHub_almostEmpty_ST_9i                      9
    #define       bSemaHub_almostEmpty_ST_9i                   1
    #define   MSK32SemaHub_almostEmpty_ST_9i                      0x00000200

    #define     BA_SemaHub_almostEmpty_ST_10i                  0x0391
    #define     B16SemaHub_almostEmpty_ST_10i                  0x0390
    #define   LSb32SemaHub_almostEmpty_ST_10i                     10
    #define   LSb16SemaHub_almostEmpty_ST_10i                     10
    #define       bSemaHub_almostEmpty_ST_10i                  1
    #define   MSK32SemaHub_almostEmpty_ST_10i                     0x00000400

    #define     BA_SemaHub_almostEmpty_ST_11i                  0x0391
    #define     B16SemaHub_almostEmpty_ST_11i                  0x0390
    #define   LSb32SemaHub_almostEmpty_ST_11i                     11
    #define   LSb16SemaHub_almostEmpty_ST_11i                     11
    #define       bSemaHub_almostEmpty_ST_11i                  1
    #define   MSK32SemaHub_almostEmpty_ST_11i                     0x00000800

    #define     BA_SemaHub_almostEmpty_ST_12i                  0x0391
    #define     B16SemaHub_almostEmpty_ST_12i                  0x0390
    #define   LSb32SemaHub_almostEmpty_ST_12i                     12
    #define   LSb16SemaHub_almostEmpty_ST_12i                     12
    #define       bSemaHub_almostEmpty_ST_12i                  1
    #define   MSK32SemaHub_almostEmpty_ST_12i                     0x00001000

    #define     BA_SemaHub_almostEmpty_ST_13i                  0x0391
    #define     B16SemaHub_almostEmpty_ST_13i                  0x0390
    #define   LSb32SemaHub_almostEmpty_ST_13i                     13
    #define   LSb16SemaHub_almostEmpty_ST_13i                     13
    #define       bSemaHub_almostEmpty_ST_13i                  1
    #define   MSK32SemaHub_almostEmpty_ST_13i                     0x00002000

    #define     BA_SemaHub_almostEmpty_ST_14i                  0x0391
    #define     B16SemaHub_almostEmpty_ST_14i                  0x0390
    #define   LSb32SemaHub_almostEmpty_ST_14i                     14
    #define   LSb16SemaHub_almostEmpty_ST_14i                     14
    #define       bSemaHub_almostEmpty_ST_14i                  1
    #define   MSK32SemaHub_almostEmpty_ST_14i                     0x00004000

    #define     BA_SemaHub_almostEmpty_ST_15i                  0x0391
    #define     B16SemaHub_almostEmpty_ST_15i                  0x0390
    #define   LSb32SemaHub_almostEmpty_ST_15i                     15
    #define   LSb16SemaHub_almostEmpty_ST_15i                     15
    #define       bSemaHub_almostEmpty_ST_15i                  1
    #define   MSK32SemaHub_almostEmpty_ST_15i                     0x00008000

    #define     BA_SemaHub_almostEmpty_ST_16i                  0x0392
    #define     B16SemaHub_almostEmpty_ST_16i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_16i                     16
    #define   LSb16SemaHub_almostEmpty_ST_16i                     0
    #define       bSemaHub_almostEmpty_ST_16i                  1
    #define   MSK32SemaHub_almostEmpty_ST_16i                     0x00010000

    #define     BA_SemaHub_almostEmpty_ST_17i                  0x0392
    #define     B16SemaHub_almostEmpty_ST_17i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_17i                     17
    #define   LSb16SemaHub_almostEmpty_ST_17i                     1
    #define       bSemaHub_almostEmpty_ST_17i                  1
    #define   MSK32SemaHub_almostEmpty_ST_17i                     0x00020000

    #define     BA_SemaHub_almostEmpty_ST_18i                  0x0392
    #define     B16SemaHub_almostEmpty_ST_18i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_18i                     18
    #define   LSb16SemaHub_almostEmpty_ST_18i                     2
    #define       bSemaHub_almostEmpty_ST_18i                  1
    #define   MSK32SemaHub_almostEmpty_ST_18i                     0x00040000

    #define     BA_SemaHub_almostEmpty_ST_19i                  0x0392
    #define     B16SemaHub_almostEmpty_ST_19i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_19i                     19
    #define   LSb16SemaHub_almostEmpty_ST_19i                     3
    #define       bSemaHub_almostEmpty_ST_19i                  1
    #define   MSK32SemaHub_almostEmpty_ST_19i                     0x00080000

    #define     BA_SemaHub_almostEmpty_ST_20i                  0x0392
    #define     B16SemaHub_almostEmpty_ST_20i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_20i                     20
    #define   LSb16SemaHub_almostEmpty_ST_20i                     4
    #define       bSemaHub_almostEmpty_ST_20i                  1
    #define   MSK32SemaHub_almostEmpty_ST_20i                     0x00100000

    #define     BA_SemaHub_almostEmpty_ST_21i                  0x0392
    #define     B16SemaHub_almostEmpty_ST_21i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_21i                     21
    #define   LSb16SemaHub_almostEmpty_ST_21i                     5
    #define       bSemaHub_almostEmpty_ST_21i                  1
    #define   MSK32SemaHub_almostEmpty_ST_21i                     0x00200000

    #define     BA_SemaHub_almostEmpty_ST_22i                  0x0392
    #define     B16SemaHub_almostEmpty_ST_22i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_22i                     22
    #define   LSb16SemaHub_almostEmpty_ST_22i                     6
    #define       bSemaHub_almostEmpty_ST_22i                  1
    #define   MSK32SemaHub_almostEmpty_ST_22i                     0x00400000

    #define     BA_SemaHub_almostEmpty_ST_23i                  0x0392
    #define     B16SemaHub_almostEmpty_ST_23i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_23i                     23
    #define   LSb16SemaHub_almostEmpty_ST_23i                     7
    #define       bSemaHub_almostEmpty_ST_23i                  1
    #define   MSK32SemaHub_almostEmpty_ST_23i                     0x00800000

    #define     BA_SemaHub_almostEmpty_ST_24i                  0x0393
    #define     B16SemaHub_almostEmpty_ST_24i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_24i                     24
    #define   LSb16SemaHub_almostEmpty_ST_24i                     8
    #define       bSemaHub_almostEmpty_ST_24i                  1
    #define   MSK32SemaHub_almostEmpty_ST_24i                     0x01000000

    #define     BA_SemaHub_almostEmpty_ST_25i                  0x0393
    #define     B16SemaHub_almostEmpty_ST_25i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_25i                     25
    #define   LSb16SemaHub_almostEmpty_ST_25i                     9
    #define       bSemaHub_almostEmpty_ST_25i                  1
    #define   MSK32SemaHub_almostEmpty_ST_25i                     0x02000000

    #define     BA_SemaHub_almostEmpty_ST_26i                  0x0393
    #define     B16SemaHub_almostEmpty_ST_26i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_26i                     26
    #define   LSb16SemaHub_almostEmpty_ST_26i                     10
    #define       bSemaHub_almostEmpty_ST_26i                  1
    #define   MSK32SemaHub_almostEmpty_ST_26i                     0x04000000

    #define     BA_SemaHub_almostEmpty_ST_27i                  0x0393
    #define     B16SemaHub_almostEmpty_ST_27i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_27i                     27
    #define   LSb16SemaHub_almostEmpty_ST_27i                     11
    #define       bSemaHub_almostEmpty_ST_27i                  1
    #define   MSK32SemaHub_almostEmpty_ST_27i                     0x08000000

    #define     BA_SemaHub_almostEmpty_ST_28i                  0x0393
    #define     B16SemaHub_almostEmpty_ST_28i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_28i                     28
    #define   LSb16SemaHub_almostEmpty_ST_28i                     12
    #define       bSemaHub_almostEmpty_ST_28i                  1
    #define   MSK32SemaHub_almostEmpty_ST_28i                     0x10000000

    #define     BA_SemaHub_almostEmpty_ST_29i                  0x0393
    #define     B16SemaHub_almostEmpty_ST_29i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_29i                     29
    #define   LSb16SemaHub_almostEmpty_ST_29i                     13
    #define       bSemaHub_almostEmpty_ST_29i                  1
    #define   MSK32SemaHub_almostEmpty_ST_29i                     0x20000000

    #define     BA_SemaHub_almostEmpty_ST_30i                  0x0393
    #define     B16SemaHub_almostEmpty_ST_30i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_30i                     30
    #define   LSb16SemaHub_almostEmpty_ST_30i                     14
    #define       bSemaHub_almostEmpty_ST_30i                  1
    #define   MSK32SemaHub_almostEmpty_ST_30i                     0x40000000

    #define     BA_SemaHub_almostEmpty_ST_31i                  0x0393
    #define     B16SemaHub_almostEmpty_ST_31i                  0x0392
    #define   LSb32SemaHub_almostEmpty_ST_31i                     31
    #define   LSb16SemaHub_almostEmpty_ST_31i                     15
    #define       bSemaHub_almostEmpty_ST_31i                  1
    #define   MSK32SemaHub_almostEmpty_ST_31i                     0x80000000
    ///////////////////////////////////////////////////////////
    #define     RA_SemaHub_almostFull                          0x0394

    #define     BA_SemaHub_almostFull_ST_0i                    0x0394
    #define     B16SemaHub_almostFull_ST_0i                    0x0394
    #define   LSb32SemaHub_almostFull_ST_0i                       0
    #define   LSb16SemaHub_almostFull_ST_0i                       0
    #define       bSemaHub_almostFull_ST_0i                    1
    #define   MSK32SemaHub_almostFull_ST_0i                       0x00000001

    #define     BA_SemaHub_almostFull_ST_1i                    0x0394
    #define     B16SemaHub_almostFull_ST_1i                    0x0394
    #define   LSb32SemaHub_almostFull_ST_1i                       1
    #define   LSb16SemaHub_almostFull_ST_1i                       1
    #define       bSemaHub_almostFull_ST_1i                    1
    #define   MSK32SemaHub_almostFull_ST_1i                       0x00000002

    #define     BA_SemaHub_almostFull_ST_2i                    0x0394
    #define     B16SemaHub_almostFull_ST_2i                    0x0394
    #define   LSb32SemaHub_almostFull_ST_2i                       2
    #define   LSb16SemaHub_almostFull_ST_2i                       2
    #define       bSemaHub_almostFull_ST_2i                    1
    #define   MSK32SemaHub_almostFull_ST_2i                       0x00000004

    #define     BA_SemaHub_almostFull_ST_3i                    0x0394
    #define     B16SemaHub_almostFull_ST_3i                    0x0394
    #define   LSb32SemaHub_almostFull_ST_3i                       3
    #define   LSb16SemaHub_almostFull_ST_3i                       3
    #define       bSemaHub_almostFull_ST_3i                    1
    #define   MSK32SemaHub_almostFull_ST_3i                       0x00000008

    #define     BA_SemaHub_almostFull_ST_4i                    0x0394
    #define     B16SemaHub_almostFull_ST_4i                    0x0394
    #define   LSb32SemaHub_almostFull_ST_4i                       4
    #define   LSb16SemaHub_almostFull_ST_4i                       4
    #define       bSemaHub_almostFull_ST_4i                    1
    #define   MSK32SemaHub_almostFull_ST_4i                       0x00000010

    #define     BA_SemaHub_almostFull_ST_5i                    0x0394
    #define     B16SemaHub_almostFull_ST_5i                    0x0394
    #define   LSb32SemaHub_almostFull_ST_5i                       5
    #define   LSb16SemaHub_almostFull_ST_5i                       5
    #define       bSemaHub_almostFull_ST_5i                    1
    #define   MSK32SemaHub_almostFull_ST_5i                       0x00000020

    #define     BA_SemaHub_almostFull_ST_6i                    0x0394
    #define     B16SemaHub_almostFull_ST_6i                    0x0394
    #define   LSb32SemaHub_almostFull_ST_6i                       6
    #define   LSb16SemaHub_almostFull_ST_6i                       6
    #define       bSemaHub_almostFull_ST_6i                    1
    #define   MSK32SemaHub_almostFull_ST_6i                       0x00000040

    #define     BA_SemaHub_almostFull_ST_7i                    0x0394
    #define     B16SemaHub_almostFull_ST_7i                    0x0394
    #define   LSb32SemaHub_almostFull_ST_7i                       7
    #define   LSb16SemaHub_almostFull_ST_7i                       7
    #define       bSemaHub_almostFull_ST_7i                    1
    #define   MSK32SemaHub_almostFull_ST_7i                       0x00000080

    #define     BA_SemaHub_almostFull_ST_8i                    0x0395
    #define     B16SemaHub_almostFull_ST_8i                    0x0394
    #define   LSb32SemaHub_almostFull_ST_8i                       8
    #define   LSb16SemaHub_almostFull_ST_8i                       8
    #define       bSemaHub_almostFull_ST_8i                    1
    #define   MSK32SemaHub_almostFull_ST_8i                       0x00000100

    #define     BA_SemaHub_almostFull_ST_9i                    0x0395
    #define     B16SemaHub_almostFull_ST_9i                    0x0394
    #define   LSb32SemaHub_almostFull_ST_9i                       9
    #define   LSb16SemaHub_almostFull_ST_9i                       9
    #define       bSemaHub_almostFull_ST_9i                    1
    #define   MSK32SemaHub_almostFull_ST_9i                       0x00000200

    #define     BA_SemaHub_almostFull_ST_10i                   0x0395
    #define     B16SemaHub_almostFull_ST_10i                   0x0394
    #define   LSb32SemaHub_almostFull_ST_10i                      10
    #define   LSb16SemaHub_almostFull_ST_10i                      10
    #define       bSemaHub_almostFull_ST_10i                   1
    #define   MSK32SemaHub_almostFull_ST_10i                      0x00000400

    #define     BA_SemaHub_almostFull_ST_11i                   0x0395
    #define     B16SemaHub_almostFull_ST_11i                   0x0394
    #define   LSb32SemaHub_almostFull_ST_11i                      11
    #define   LSb16SemaHub_almostFull_ST_11i                      11
    #define       bSemaHub_almostFull_ST_11i                   1
    #define   MSK32SemaHub_almostFull_ST_11i                      0x00000800

    #define     BA_SemaHub_almostFull_ST_12i                   0x0395
    #define     B16SemaHub_almostFull_ST_12i                   0x0394
    #define   LSb32SemaHub_almostFull_ST_12i                      12
    #define   LSb16SemaHub_almostFull_ST_12i                      12
    #define       bSemaHub_almostFull_ST_12i                   1
    #define   MSK32SemaHub_almostFull_ST_12i                      0x00001000

    #define     BA_SemaHub_almostFull_ST_13i                   0x0395
    #define     B16SemaHub_almostFull_ST_13i                   0x0394
    #define   LSb32SemaHub_almostFull_ST_13i                      13
    #define   LSb16SemaHub_almostFull_ST_13i                      13
    #define       bSemaHub_almostFull_ST_13i                   1
    #define   MSK32SemaHub_almostFull_ST_13i                      0x00002000

    #define     BA_SemaHub_almostFull_ST_14i                   0x0395
    #define     B16SemaHub_almostFull_ST_14i                   0x0394
    #define   LSb32SemaHub_almostFull_ST_14i                      14
    #define   LSb16SemaHub_almostFull_ST_14i                      14
    #define       bSemaHub_almostFull_ST_14i                   1
    #define   MSK32SemaHub_almostFull_ST_14i                      0x00004000

    #define     BA_SemaHub_almostFull_ST_15i                   0x0395
    #define     B16SemaHub_almostFull_ST_15i                   0x0394
    #define   LSb32SemaHub_almostFull_ST_15i                      15
    #define   LSb16SemaHub_almostFull_ST_15i                      15
    #define       bSemaHub_almostFull_ST_15i                   1
    #define   MSK32SemaHub_almostFull_ST_15i                      0x00008000

    #define     BA_SemaHub_almostFull_ST_16i                   0x0396
    #define     B16SemaHub_almostFull_ST_16i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_16i                      16
    #define   LSb16SemaHub_almostFull_ST_16i                      0
    #define       bSemaHub_almostFull_ST_16i                   1
    #define   MSK32SemaHub_almostFull_ST_16i                      0x00010000

    #define     BA_SemaHub_almostFull_ST_17i                   0x0396
    #define     B16SemaHub_almostFull_ST_17i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_17i                      17
    #define   LSb16SemaHub_almostFull_ST_17i                      1
    #define       bSemaHub_almostFull_ST_17i                   1
    #define   MSK32SemaHub_almostFull_ST_17i                      0x00020000

    #define     BA_SemaHub_almostFull_ST_18i                   0x0396
    #define     B16SemaHub_almostFull_ST_18i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_18i                      18
    #define   LSb16SemaHub_almostFull_ST_18i                      2
    #define       bSemaHub_almostFull_ST_18i                   1
    #define   MSK32SemaHub_almostFull_ST_18i                      0x00040000

    #define     BA_SemaHub_almostFull_ST_19i                   0x0396
    #define     B16SemaHub_almostFull_ST_19i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_19i                      19
    #define   LSb16SemaHub_almostFull_ST_19i                      3
    #define       bSemaHub_almostFull_ST_19i                   1
    #define   MSK32SemaHub_almostFull_ST_19i                      0x00080000

    #define     BA_SemaHub_almostFull_ST_20i                   0x0396
    #define     B16SemaHub_almostFull_ST_20i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_20i                      20
    #define   LSb16SemaHub_almostFull_ST_20i                      4
    #define       bSemaHub_almostFull_ST_20i                   1
    #define   MSK32SemaHub_almostFull_ST_20i                      0x00100000

    #define     BA_SemaHub_almostFull_ST_21i                   0x0396
    #define     B16SemaHub_almostFull_ST_21i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_21i                      21
    #define   LSb16SemaHub_almostFull_ST_21i                      5
    #define       bSemaHub_almostFull_ST_21i                   1
    #define   MSK32SemaHub_almostFull_ST_21i                      0x00200000

    #define     BA_SemaHub_almostFull_ST_22i                   0x0396
    #define     B16SemaHub_almostFull_ST_22i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_22i                      22
    #define   LSb16SemaHub_almostFull_ST_22i                      6
    #define       bSemaHub_almostFull_ST_22i                   1
    #define   MSK32SemaHub_almostFull_ST_22i                      0x00400000

    #define     BA_SemaHub_almostFull_ST_23i                   0x0396
    #define     B16SemaHub_almostFull_ST_23i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_23i                      23
    #define   LSb16SemaHub_almostFull_ST_23i                      7
    #define       bSemaHub_almostFull_ST_23i                   1
    #define   MSK32SemaHub_almostFull_ST_23i                      0x00800000

    #define     BA_SemaHub_almostFull_ST_24i                   0x0397
    #define     B16SemaHub_almostFull_ST_24i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_24i                      24
    #define   LSb16SemaHub_almostFull_ST_24i                      8
    #define       bSemaHub_almostFull_ST_24i                   1
    #define   MSK32SemaHub_almostFull_ST_24i                      0x01000000

    #define     BA_SemaHub_almostFull_ST_25i                   0x0397
    #define     B16SemaHub_almostFull_ST_25i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_25i                      25
    #define   LSb16SemaHub_almostFull_ST_25i                      9
    #define       bSemaHub_almostFull_ST_25i                   1
    #define   MSK32SemaHub_almostFull_ST_25i                      0x02000000

    #define     BA_SemaHub_almostFull_ST_26i                   0x0397
    #define     B16SemaHub_almostFull_ST_26i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_26i                      26
    #define   LSb16SemaHub_almostFull_ST_26i                      10
    #define       bSemaHub_almostFull_ST_26i                   1
    #define   MSK32SemaHub_almostFull_ST_26i                      0x04000000

    #define     BA_SemaHub_almostFull_ST_27i                   0x0397
    #define     B16SemaHub_almostFull_ST_27i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_27i                      27
    #define   LSb16SemaHub_almostFull_ST_27i                      11
    #define       bSemaHub_almostFull_ST_27i                   1
    #define   MSK32SemaHub_almostFull_ST_27i                      0x08000000

    #define     BA_SemaHub_almostFull_ST_28i                   0x0397
    #define     B16SemaHub_almostFull_ST_28i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_28i                      28
    #define   LSb16SemaHub_almostFull_ST_28i                      12
    #define       bSemaHub_almostFull_ST_28i                   1
    #define   MSK32SemaHub_almostFull_ST_28i                      0x10000000

    #define     BA_SemaHub_almostFull_ST_29i                   0x0397
    #define     B16SemaHub_almostFull_ST_29i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_29i                      29
    #define   LSb16SemaHub_almostFull_ST_29i                      13
    #define       bSemaHub_almostFull_ST_29i                   1
    #define   MSK32SemaHub_almostFull_ST_29i                      0x20000000

    #define     BA_SemaHub_almostFull_ST_30i                   0x0397
    #define     B16SemaHub_almostFull_ST_30i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_30i                      30
    #define   LSb16SemaHub_almostFull_ST_30i                      14
    #define       bSemaHub_almostFull_ST_30i                   1
    #define   MSK32SemaHub_almostFull_ST_30i                      0x40000000

    #define     BA_SemaHub_almostFull_ST_31i                   0x0397
    #define     B16SemaHub_almostFull_ST_31i                   0x0396
    #define   LSb32SemaHub_almostFull_ST_31i                      31
    #define   LSb16SemaHub_almostFull_ST_31i                      15
    #define       bSemaHub_almostFull_ST_31i                   1
    #define   MSK32SemaHub_almostFull_ST_31i                      0x80000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_SemaHub {
    ///////////////////////////////////////////////////////////
              SIE_SemaQuery                                    ie_counter[64];
    ///////////////////////////////////////////////////////////
              SIE_Semaphore                                    ie_cell[32];
    ///////////////////////////////////////////////////////////
    #define   GET32SemaHub_PUSH_ID(r32)                        _BFGET_(r32, 7, 0)
    #define   SET32SemaHub_PUSH_ID(r32,v)                      _BFSET_(r32, 7, 0,v)
    #define   GET16SemaHub_PUSH_ID(r16)                        _BFGET_(r16, 7, 0)
    #define   SET16SemaHub_PUSH_ID(r16,v)                      _BFSET_(r16, 7, 0,v)

    #define   GET32SemaHub_PUSH_delta(r32)                     _BFGET_(r32,15, 8)
    #define   SET32SemaHub_PUSH_delta(r32,v)                   _BFSET_(r32,15, 8,v)
    #define   GET16SemaHub_PUSH_delta(r16)                     _BFGET_(r16,15, 8)
    #define   SET16SemaHub_PUSH_delta(r16,v)                   _BFSET_(r16,15, 8,v)

    #define     w32SemaHub_PUSH                                {\
            UNSG32 uPUSH_ID                                    :  8;\
            UNSG32 uPUSH_delta                                 :  8;\
            UNSG32 RSVDx380_b16                                : 16;\
          }
    union { UNSG32 u32SemaHub_PUSH;
            struct w32SemaHub_PUSH;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SemaHub_POP_ID(r32)                         _BFGET_(r32, 7, 0)
    #define   SET32SemaHub_POP_ID(r32,v)                       _BFSET_(r32, 7, 0,v)
    #define   GET16SemaHub_POP_ID(r16)                         _BFGET_(r16, 7, 0)
    #define   SET16SemaHub_POP_ID(r16,v)                       _BFSET_(r16, 7, 0,v)

    #define   GET32SemaHub_POP_delta(r32)                      _BFGET_(r32,15, 8)
    #define   SET32SemaHub_POP_delta(r32,v)                    _BFSET_(r32,15, 8,v)
    #define   GET16SemaHub_POP_delta(r16)                      _BFGET_(r16,15, 8)
    #define   SET16SemaHub_POP_delta(r16,v)                    _BFSET_(r16,15, 8,v)

    #define     w32SemaHub_POP                                 {\
            UNSG32 uPOP_ID                                     :  8;\
            UNSG32 uPOP_delta                                  :  8;\
            UNSG32 RSVDx384_b16                                : 16;\
          }
    union { UNSG32 u32SemaHub_POP;
            struct w32SemaHub_POP;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SemaHub_empty_ST_0i(r32)                    _BFGET_(r32, 0, 0)
    #define   SET32SemaHub_empty_ST_0i(r32,v)                  _BFSET_(r32, 0, 0,v)
    #define   GET16SemaHub_empty_ST_0i(r16)                    _BFGET_(r16, 0, 0)
    #define   SET16SemaHub_empty_ST_0i(r16,v)                  _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHub_empty_ST_1i(r32)                    _BFGET_(r32, 1, 1)
    #define   SET32SemaHub_empty_ST_1i(r32,v)                  _BFSET_(r32, 1, 1,v)
    #define   GET16SemaHub_empty_ST_1i(r16)                    _BFGET_(r16, 1, 1)
    #define   SET16SemaHub_empty_ST_1i(r16,v)                  _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHub_empty_ST_2i(r32)                    _BFGET_(r32, 2, 2)
    #define   SET32SemaHub_empty_ST_2i(r32,v)                  _BFSET_(r32, 2, 2,v)
    #define   GET16SemaHub_empty_ST_2i(r16)                    _BFGET_(r16, 2, 2)
    #define   SET16SemaHub_empty_ST_2i(r16,v)                  _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHub_empty_ST_3i(r32)                    _BFGET_(r32, 3, 3)
    #define   SET32SemaHub_empty_ST_3i(r32,v)                  _BFSET_(r32, 3, 3,v)
    #define   GET16SemaHub_empty_ST_3i(r16)                    _BFGET_(r16, 3, 3)
    #define   SET16SemaHub_empty_ST_3i(r16,v)                  _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHub_empty_ST_4i(r32)                    _BFGET_(r32, 4, 4)
    #define   SET32SemaHub_empty_ST_4i(r32,v)                  _BFSET_(r32, 4, 4,v)
    #define   GET16SemaHub_empty_ST_4i(r16)                    _BFGET_(r16, 4, 4)
    #define   SET16SemaHub_empty_ST_4i(r16,v)                  _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHub_empty_ST_5i(r32)                    _BFGET_(r32, 5, 5)
    #define   SET32SemaHub_empty_ST_5i(r32,v)                  _BFSET_(r32, 5, 5,v)
    #define   GET16SemaHub_empty_ST_5i(r16)                    _BFGET_(r16, 5, 5)
    #define   SET16SemaHub_empty_ST_5i(r16,v)                  _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHub_empty_ST_6i(r32)                    _BFGET_(r32, 6, 6)
    #define   SET32SemaHub_empty_ST_6i(r32,v)                  _BFSET_(r32, 6, 6,v)
    #define   GET16SemaHub_empty_ST_6i(r16)                    _BFGET_(r16, 6, 6)
    #define   SET16SemaHub_empty_ST_6i(r16,v)                  _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHub_empty_ST_7i(r32)                    _BFGET_(r32, 7, 7)
    #define   SET32SemaHub_empty_ST_7i(r32,v)                  _BFSET_(r32, 7, 7,v)
    #define   GET16SemaHub_empty_ST_7i(r16)                    _BFGET_(r16, 7, 7)
    #define   SET16SemaHub_empty_ST_7i(r16,v)                  _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHub_empty_ST_8i(r32)                    _BFGET_(r32, 8, 8)
    #define   SET32SemaHub_empty_ST_8i(r32,v)                  _BFSET_(r32, 8, 8,v)
    #define   GET16SemaHub_empty_ST_8i(r16)                    _BFGET_(r16, 8, 8)
    #define   SET16SemaHub_empty_ST_8i(r16,v)                  _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHub_empty_ST_9i(r32)                    _BFGET_(r32, 9, 9)
    #define   SET32SemaHub_empty_ST_9i(r32,v)                  _BFSET_(r32, 9, 9,v)
    #define   GET16SemaHub_empty_ST_9i(r16)                    _BFGET_(r16, 9, 9)
    #define   SET16SemaHub_empty_ST_9i(r16,v)                  _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHub_empty_ST_10i(r32)                   _BFGET_(r32,10,10)
    #define   SET32SemaHub_empty_ST_10i(r32,v)                 _BFSET_(r32,10,10,v)
    #define   GET16SemaHub_empty_ST_10i(r16)                   _BFGET_(r16,10,10)
    #define   SET16SemaHub_empty_ST_10i(r16,v)                 _BFSET_(r16,10,10,v)

    #define   GET32SemaHub_empty_ST_11i(r32)                   _BFGET_(r32,11,11)
    #define   SET32SemaHub_empty_ST_11i(r32,v)                 _BFSET_(r32,11,11,v)
    #define   GET16SemaHub_empty_ST_11i(r16)                   _BFGET_(r16,11,11)
    #define   SET16SemaHub_empty_ST_11i(r16,v)                 _BFSET_(r16,11,11,v)

    #define   GET32SemaHub_empty_ST_12i(r32)                   _BFGET_(r32,12,12)
    #define   SET32SemaHub_empty_ST_12i(r32,v)                 _BFSET_(r32,12,12,v)
    #define   GET16SemaHub_empty_ST_12i(r16)                   _BFGET_(r16,12,12)
    #define   SET16SemaHub_empty_ST_12i(r16,v)                 _BFSET_(r16,12,12,v)

    #define   GET32SemaHub_empty_ST_13i(r32)                   _BFGET_(r32,13,13)
    #define   SET32SemaHub_empty_ST_13i(r32,v)                 _BFSET_(r32,13,13,v)
    #define   GET16SemaHub_empty_ST_13i(r16)                   _BFGET_(r16,13,13)
    #define   SET16SemaHub_empty_ST_13i(r16,v)                 _BFSET_(r16,13,13,v)

    #define   GET32SemaHub_empty_ST_14i(r32)                   _BFGET_(r32,14,14)
    #define   SET32SemaHub_empty_ST_14i(r32,v)                 _BFSET_(r32,14,14,v)
    #define   GET16SemaHub_empty_ST_14i(r16)                   _BFGET_(r16,14,14)
    #define   SET16SemaHub_empty_ST_14i(r16,v)                 _BFSET_(r16,14,14,v)

    #define   GET32SemaHub_empty_ST_15i(r32)                   _BFGET_(r32,15,15)
    #define   SET32SemaHub_empty_ST_15i(r32,v)                 _BFSET_(r32,15,15,v)
    #define   GET16SemaHub_empty_ST_15i(r16)                   _BFGET_(r16,15,15)
    #define   SET16SemaHub_empty_ST_15i(r16,v)                 _BFSET_(r16,15,15,v)

    #define   GET32SemaHub_empty_ST_16i(r32)                   _BFGET_(r32,16,16)
    #define   SET32SemaHub_empty_ST_16i(r32,v)                 _BFSET_(r32,16,16,v)
    #define   GET16SemaHub_empty_ST_16i(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16SemaHub_empty_ST_16i(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHub_empty_ST_17i(r32)                   _BFGET_(r32,17,17)
    #define   SET32SemaHub_empty_ST_17i(r32,v)                 _BFSET_(r32,17,17,v)
    #define   GET16SemaHub_empty_ST_17i(r16)                   _BFGET_(r16, 1, 1)
    #define   SET16SemaHub_empty_ST_17i(r16,v)                 _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHub_empty_ST_18i(r32)                   _BFGET_(r32,18,18)
    #define   SET32SemaHub_empty_ST_18i(r32,v)                 _BFSET_(r32,18,18,v)
    #define   GET16SemaHub_empty_ST_18i(r16)                   _BFGET_(r16, 2, 2)
    #define   SET16SemaHub_empty_ST_18i(r16,v)                 _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHub_empty_ST_19i(r32)                   _BFGET_(r32,19,19)
    #define   SET32SemaHub_empty_ST_19i(r32,v)                 _BFSET_(r32,19,19,v)
    #define   GET16SemaHub_empty_ST_19i(r16)                   _BFGET_(r16, 3, 3)
    #define   SET16SemaHub_empty_ST_19i(r16,v)                 _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHub_empty_ST_20i(r32)                   _BFGET_(r32,20,20)
    #define   SET32SemaHub_empty_ST_20i(r32,v)                 _BFSET_(r32,20,20,v)
    #define   GET16SemaHub_empty_ST_20i(r16)                   _BFGET_(r16, 4, 4)
    #define   SET16SemaHub_empty_ST_20i(r16,v)                 _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHub_empty_ST_21i(r32)                   _BFGET_(r32,21,21)
    #define   SET32SemaHub_empty_ST_21i(r32,v)                 _BFSET_(r32,21,21,v)
    #define   GET16SemaHub_empty_ST_21i(r16)                   _BFGET_(r16, 5, 5)
    #define   SET16SemaHub_empty_ST_21i(r16,v)                 _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHub_empty_ST_22i(r32)                   _BFGET_(r32,22,22)
    #define   SET32SemaHub_empty_ST_22i(r32,v)                 _BFSET_(r32,22,22,v)
    #define   GET16SemaHub_empty_ST_22i(r16)                   _BFGET_(r16, 6, 6)
    #define   SET16SemaHub_empty_ST_22i(r16,v)                 _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHub_empty_ST_23i(r32)                   _BFGET_(r32,23,23)
    #define   SET32SemaHub_empty_ST_23i(r32,v)                 _BFSET_(r32,23,23,v)
    #define   GET16SemaHub_empty_ST_23i(r16)                   _BFGET_(r16, 7, 7)
    #define   SET16SemaHub_empty_ST_23i(r16,v)                 _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHub_empty_ST_24i(r32)                   _BFGET_(r32,24,24)
    #define   SET32SemaHub_empty_ST_24i(r32,v)                 _BFSET_(r32,24,24,v)
    #define   GET16SemaHub_empty_ST_24i(r16)                   _BFGET_(r16, 8, 8)
    #define   SET16SemaHub_empty_ST_24i(r16,v)                 _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHub_empty_ST_25i(r32)                   _BFGET_(r32,25,25)
    #define   SET32SemaHub_empty_ST_25i(r32,v)                 _BFSET_(r32,25,25,v)
    #define   GET16SemaHub_empty_ST_25i(r16)                   _BFGET_(r16, 9, 9)
    #define   SET16SemaHub_empty_ST_25i(r16,v)                 _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHub_empty_ST_26i(r32)                   _BFGET_(r32,26,26)
    #define   SET32SemaHub_empty_ST_26i(r32,v)                 _BFSET_(r32,26,26,v)
    #define   GET16SemaHub_empty_ST_26i(r16)                   _BFGET_(r16,10,10)
    #define   SET16SemaHub_empty_ST_26i(r16,v)                 _BFSET_(r16,10,10,v)

    #define   GET32SemaHub_empty_ST_27i(r32)                   _BFGET_(r32,27,27)
    #define   SET32SemaHub_empty_ST_27i(r32,v)                 _BFSET_(r32,27,27,v)
    #define   GET16SemaHub_empty_ST_27i(r16)                   _BFGET_(r16,11,11)
    #define   SET16SemaHub_empty_ST_27i(r16,v)                 _BFSET_(r16,11,11,v)

    #define   GET32SemaHub_empty_ST_28i(r32)                   _BFGET_(r32,28,28)
    #define   SET32SemaHub_empty_ST_28i(r32,v)                 _BFSET_(r32,28,28,v)
    #define   GET16SemaHub_empty_ST_28i(r16)                   _BFGET_(r16,12,12)
    #define   SET16SemaHub_empty_ST_28i(r16,v)                 _BFSET_(r16,12,12,v)

    #define   GET32SemaHub_empty_ST_29i(r32)                   _BFGET_(r32,29,29)
    #define   SET32SemaHub_empty_ST_29i(r32,v)                 _BFSET_(r32,29,29,v)
    #define   GET16SemaHub_empty_ST_29i(r16)                   _BFGET_(r16,13,13)
    #define   SET16SemaHub_empty_ST_29i(r16,v)                 _BFSET_(r16,13,13,v)

    #define   GET32SemaHub_empty_ST_30i(r32)                   _BFGET_(r32,30,30)
    #define   SET32SemaHub_empty_ST_30i(r32,v)                 _BFSET_(r32,30,30,v)
    #define   GET16SemaHub_empty_ST_30i(r16)                   _BFGET_(r16,14,14)
    #define   SET16SemaHub_empty_ST_30i(r16,v)                 _BFSET_(r16,14,14,v)

    #define   GET32SemaHub_empty_ST_31i(r32)                   _BFGET_(r32,31,31)
    #define   SET32SemaHub_empty_ST_31i(r32,v)                 _BFSET_(r32,31,31,v)
    #define   GET16SemaHub_empty_ST_31i(r16)                   _BFGET_(r16,15,15)
    #define   SET16SemaHub_empty_ST_31i(r16,v)                 _BFSET_(r16,15,15,v)

    #define     w32SemaHub_empty                               {\
            UNSG32 uempty_ST_0i                                :  1;\
            UNSG32 uempty_ST_1i                                :  1;\
            UNSG32 uempty_ST_2i                                :  1;\
            UNSG32 uempty_ST_3i                                :  1;\
            UNSG32 uempty_ST_4i                                :  1;\
            UNSG32 uempty_ST_5i                                :  1;\
            UNSG32 uempty_ST_6i                                :  1;\
            UNSG32 uempty_ST_7i                                :  1;\
            UNSG32 uempty_ST_8i                                :  1;\
            UNSG32 uempty_ST_9i                                :  1;\
            UNSG32 uempty_ST_10i                               :  1;\
            UNSG32 uempty_ST_11i                               :  1;\
            UNSG32 uempty_ST_12i                               :  1;\
            UNSG32 uempty_ST_13i                               :  1;\
            UNSG32 uempty_ST_14i                               :  1;\
            UNSG32 uempty_ST_15i                               :  1;\
            UNSG32 uempty_ST_16i                               :  1;\
            UNSG32 uempty_ST_17i                               :  1;\
            UNSG32 uempty_ST_18i                               :  1;\
            UNSG32 uempty_ST_19i                               :  1;\
            UNSG32 uempty_ST_20i                               :  1;\
            UNSG32 uempty_ST_21i                               :  1;\
            UNSG32 uempty_ST_22i                               :  1;\
            UNSG32 uempty_ST_23i                               :  1;\
            UNSG32 uempty_ST_24i                               :  1;\
            UNSG32 uempty_ST_25i                               :  1;\
            UNSG32 uempty_ST_26i                               :  1;\
            UNSG32 uempty_ST_27i                               :  1;\
            UNSG32 uempty_ST_28i                               :  1;\
            UNSG32 uempty_ST_29i                               :  1;\
            UNSG32 uempty_ST_30i                               :  1;\
            UNSG32 uempty_ST_31i                               :  1;\
          }
    union { UNSG32 u32SemaHub_empty;
            struct w32SemaHub_empty;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SemaHub_full_ST_0i(r32)                     _BFGET_(r32, 0, 0)
    #define   SET32SemaHub_full_ST_0i(r32,v)                   _BFSET_(r32, 0, 0,v)
    #define   GET16SemaHub_full_ST_0i(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16SemaHub_full_ST_0i(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHub_full_ST_1i(r32)                     _BFGET_(r32, 1, 1)
    #define   SET32SemaHub_full_ST_1i(r32,v)                   _BFSET_(r32, 1, 1,v)
    #define   GET16SemaHub_full_ST_1i(r16)                     _BFGET_(r16, 1, 1)
    #define   SET16SemaHub_full_ST_1i(r16,v)                   _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHub_full_ST_2i(r32)                     _BFGET_(r32, 2, 2)
    #define   SET32SemaHub_full_ST_2i(r32,v)                   _BFSET_(r32, 2, 2,v)
    #define   GET16SemaHub_full_ST_2i(r16)                     _BFGET_(r16, 2, 2)
    #define   SET16SemaHub_full_ST_2i(r16,v)                   _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHub_full_ST_3i(r32)                     _BFGET_(r32, 3, 3)
    #define   SET32SemaHub_full_ST_3i(r32,v)                   _BFSET_(r32, 3, 3,v)
    #define   GET16SemaHub_full_ST_3i(r16)                     _BFGET_(r16, 3, 3)
    #define   SET16SemaHub_full_ST_3i(r16,v)                   _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHub_full_ST_4i(r32)                     _BFGET_(r32, 4, 4)
    #define   SET32SemaHub_full_ST_4i(r32,v)                   _BFSET_(r32, 4, 4,v)
    #define   GET16SemaHub_full_ST_4i(r16)                     _BFGET_(r16, 4, 4)
    #define   SET16SemaHub_full_ST_4i(r16,v)                   _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHub_full_ST_5i(r32)                     _BFGET_(r32, 5, 5)
    #define   SET32SemaHub_full_ST_5i(r32,v)                   _BFSET_(r32, 5, 5,v)
    #define   GET16SemaHub_full_ST_5i(r16)                     _BFGET_(r16, 5, 5)
    #define   SET16SemaHub_full_ST_5i(r16,v)                   _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHub_full_ST_6i(r32)                     _BFGET_(r32, 6, 6)
    #define   SET32SemaHub_full_ST_6i(r32,v)                   _BFSET_(r32, 6, 6,v)
    #define   GET16SemaHub_full_ST_6i(r16)                     _BFGET_(r16, 6, 6)
    #define   SET16SemaHub_full_ST_6i(r16,v)                   _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHub_full_ST_7i(r32)                     _BFGET_(r32, 7, 7)
    #define   SET32SemaHub_full_ST_7i(r32,v)                   _BFSET_(r32, 7, 7,v)
    #define   GET16SemaHub_full_ST_7i(r16)                     _BFGET_(r16, 7, 7)
    #define   SET16SemaHub_full_ST_7i(r16,v)                   _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHub_full_ST_8i(r32)                     _BFGET_(r32, 8, 8)
    #define   SET32SemaHub_full_ST_8i(r32,v)                   _BFSET_(r32, 8, 8,v)
    #define   GET16SemaHub_full_ST_8i(r16)                     _BFGET_(r16, 8, 8)
    #define   SET16SemaHub_full_ST_8i(r16,v)                   _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHub_full_ST_9i(r32)                     _BFGET_(r32, 9, 9)
    #define   SET32SemaHub_full_ST_9i(r32,v)                   _BFSET_(r32, 9, 9,v)
    #define   GET16SemaHub_full_ST_9i(r16)                     _BFGET_(r16, 9, 9)
    #define   SET16SemaHub_full_ST_9i(r16,v)                   _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHub_full_ST_10i(r32)                    _BFGET_(r32,10,10)
    #define   SET32SemaHub_full_ST_10i(r32,v)                  _BFSET_(r32,10,10,v)
    #define   GET16SemaHub_full_ST_10i(r16)                    _BFGET_(r16,10,10)
    #define   SET16SemaHub_full_ST_10i(r16,v)                  _BFSET_(r16,10,10,v)

    #define   GET32SemaHub_full_ST_11i(r32)                    _BFGET_(r32,11,11)
    #define   SET32SemaHub_full_ST_11i(r32,v)                  _BFSET_(r32,11,11,v)
    #define   GET16SemaHub_full_ST_11i(r16)                    _BFGET_(r16,11,11)
    #define   SET16SemaHub_full_ST_11i(r16,v)                  _BFSET_(r16,11,11,v)

    #define   GET32SemaHub_full_ST_12i(r32)                    _BFGET_(r32,12,12)
    #define   SET32SemaHub_full_ST_12i(r32,v)                  _BFSET_(r32,12,12,v)
    #define   GET16SemaHub_full_ST_12i(r16)                    _BFGET_(r16,12,12)
    #define   SET16SemaHub_full_ST_12i(r16,v)                  _BFSET_(r16,12,12,v)

    #define   GET32SemaHub_full_ST_13i(r32)                    _BFGET_(r32,13,13)
    #define   SET32SemaHub_full_ST_13i(r32,v)                  _BFSET_(r32,13,13,v)
    #define   GET16SemaHub_full_ST_13i(r16)                    _BFGET_(r16,13,13)
    #define   SET16SemaHub_full_ST_13i(r16,v)                  _BFSET_(r16,13,13,v)

    #define   GET32SemaHub_full_ST_14i(r32)                    _BFGET_(r32,14,14)
    #define   SET32SemaHub_full_ST_14i(r32,v)                  _BFSET_(r32,14,14,v)
    #define   GET16SemaHub_full_ST_14i(r16)                    _BFGET_(r16,14,14)
    #define   SET16SemaHub_full_ST_14i(r16,v)                  _BFSET_(r16,14,14,v)

    #define   GET32SemaHub_full_ST_15i(r32)                    _BFGET_(r32,15,15)
    #define   SET32SemaHub_full_ST_15i(r32,v)                  _BFSET_(r32,15,15,v)
    #define   GET16SemaHub_full_ST_15i(r16)                    _BFGET_(r16,15,15)
    #define   SET16SemaHub_full_ST_15i(r16,v)                  _BFSET_(r16,15,15,v)

    #define   GET32SemaHub_full_ST_16i(r32)                    _BFGET_(r32,16,16)
    #define   SET32SemaHub_full_ST_16i(r32,v)                  _BFSET_(r32,16,16,v)
    #define   GET16SemaHub_full_ST_16i(r16)                    _BFGET_(r16, 0, 0)
    #define   SET16SemaHub_full_ST_16i(r16,v)                  _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHub_full_ST_17i(r32)                    _BFGET_(r32,17,17)
    #define   SET32SemaHub_full_ST_17i(r32,v)                  _BFSET_(r32,17,17,v)
    #define   GET16SemaHub_full_ST_17i(r16)                    _BFGET_(r16, 1, 1)
    #define   SET16SemaHub_full_ST_17i(r16,v)                  _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHub_full_ST_18i(r32)                    _BFGET_(r32,18,18)
    #define   SET32SemaHub_full_ST_18i(r32,v)                  _BFSET_(r32,18,18,v)
    #define   GET16SemaHub_full_ST_18i(r16)                    _BFGET_(r16, 2, 2)
    #define   SET16SemaHub_full_ST_18i(r16,v)                  _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHub_full_ST_19i(r32)                    _BFGET_(r32,19,19)
    #define   SET32SemaHub_full_ST_19i(r32,v)                  _BFSET_(r32,19,19,v)
    #define   GET16SemaHub_full_ST_19i(r16)                    _BFGET_(r16, 3, 3)
    #define   SET16SemaHub_full_ST_19i(r16,v)                  _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHub_full_ST_20i(r32)                    _BFGET_(r32,20,20)
    #define   SET32SemaHub_full_ST_20i(r32,v)                  _BFSET_(r32,20,20,v)
    #define   GET16SemaHub_full_ST_20i(r16)                    _BFGET_(r16, 4, 4)
    #define   SET16SemaHub_full_ST_20i(r16,v)                  _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHub_full_ST_21i(r32)                    _BFGET_(r32,21,21)
    #define   SET32SemaHub_full_ST_21i(r32,v)                  _BFSET_(r32,21,21,v)
    #define   GET16SemaHub_full_ST_21i(r16)                    _BFGET_(r16, 5, 5)
    #define   SET16SemaHub_full_ST_21i(r16,v)                  _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHub_full_ST_22i(r32)                    _BFGET_(r32,22,22)
    #define   SET32SemaHub_full_ST_22i(r32,v)                  _BFSET_(r32,22,22,v)
    #define   GET16SemaHub_full_ST_22i(r16)                    _BFGET_(r16, 6, 6)
    #define   SET16SemaHub_full_ST_22i(r16,v)                  _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHub_full_ST_23i(r32)                    _BFGET_(r32,23,23)
    #define   SET32SemaHub_full_ST_23i(r32,v)                  _BFSET_(r32,23,23,v)
    #define   GET16SemaHub_full_ST_23i(r16)                    _BFGET_(r16, 7, 7)
    #define   SET16SemaHub_full_ST_23i(r16,v)                  _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHub_full_ST_24i(r32)                    _BFGET_(r32,24,24)
    #define   SET32SemaHub_full_ST_24i(r32,v)                  _BFSET_(r32,24,24,v)
    #define   GET16SemaHub_full_ST_24i(r16)                    _BFGET_(r16, 8, 8)
    #define   SET16SemaHub_full_ST_24i(r16,v)                  _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHub_full_ST_25i(r32)                    _BFGET_(r32,25,25)
    #define   SET32SemaHub_full_ST_25i(r32,v)                  _BFSET_(r32,25,25,v)
    #define   GET16SemaHub_full_ST_25i(r16)                    _BFGET_(r16, 9, 9)
    #define   SET16SemaHub_full_ST_25i(r16,v)                  _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHub_full_ST_26i(r32)                    _BFGET_(r32,26,26)
    #define   SET32SemaHub_full_ST_26i(r32,v)                  _BFSET_(r32,26,26,v)
    #define   GET16SemaHub_full_ST_26i(r16)                    _BFGET_(r16,10,10)
    #define   SET16SemaHub_full_ST_26i(r16,v)                  _BFSET_(r16,10,10,v)

    #define   GET32SemaHub_full_ST_27i(r32)                    _BFGET_(r32,27,27)
    #define   SET32SemaHub_full_ST_27i(r32,v)                  _BFSET_(r32,27,27,v)
    #define   GET16SemaHub_full_ST_27i(r16)                    _BFGET_(r16,11,11)
    #define   SET16SemaHub_full_ST_27i(r16,v)                  _BFSET_(r16,11,11,v)

    #define   GET32SemaHub_full_ST_28i(r32)                    _BFGET_(r32,28,28)
    #define   SET32SemaHub_full_ST_28i(r32,v)                  _BFSET_(r32,28,28,v)
    #define   GET16SemaHub_full_ST_28i(r16)                    _BFGET_(r16,12,12)
    #define   SET16SemaHub_full_ST_28i(r16,v)                  _BFSET_(r16,12,12,v)

    #define   GET32SemaHub_full_ST_29i(r32)                    _BFGET_(r32,29,29)
    #define   SET32SemaHub_full_ST_29i(r32,v)                  _BFSET_(r32,29,29,v)
    #define   GET16SemaHub_full_ST_29i(r16)                    _BFGET_(r16,13,13)
    #define   SET16SemaHub_full_ST_29i(r16,v)                  _BFSET_(r16,13,13,v)

    #define   GET32SemaHub_full_ST_30i(r32)                    _BFGET_(r32,30,30)
    #define   SET32SemaHub_full_ST_30i(r32,v)                  _BFSET_(r32,30,30,v)
    #define   GET16SemaHub_full_ST_30i(r16)                    _BFGET_(r16,14,14)
    #define   SET16SemaHub_full_ST_30i(r16,v)                  _BFSET_(r16,14,14,v)

    #define   GET32SemaHub_full_ST_31i(r32)                    _BFGET_(r32,31,31)
    #define   SET32SemaHub_full_ST_31i(r32,v)                  _BFSET_(r32,31,31,v)
    #define   GET16SemaHub_full_ST_31i(r16)                    _BFGET_(r16,15,15)
    #define   SET16SemaHub_full_ST_31i(r16,v)                  _BFSET_(r16,15,15,v)

    #define     w32SemaHub_full                                {\
            UNSG32 ufull_ST_0i                                 :  1;\
            UNSG32 ufull_ST_1i                                 :  1;\
            UNSG32 ufull_ST_2i                                 :  1;\
            UNSG32 ufull_ST_3i                                 :  1;\
            UNSG32 ufull_ST_4i                                 :  1;\
            UNSG32 ufull_ST_5i                                 :  1;\
            UNSG32 ufull_ST_6i                                 :  1;\
            UNSG32 ufull_ST_7i                                 :  1;\
            UNSG32 ufull_ST_8i                                 :  1;\
            UNSG32 ufull_ST_9i                                 :  1;\
            UNSG32 ufull_ST_10i                                :  1;\
            UNSG32 ufull_ST_11i                                :  1;\
            UNSG32 ufull_ST_12i                                :  1;\
            UNSG32 ufull_ST_13i                                :  1;\
            UNSG32 ufull_ST_14i                                :  1;\
            UNSG32 ufull_ST_15i                                :  1;\
            UNSG32 ufull_ST_16i                                :  1;\
            UNSG32 ufull_ST_17i                                :  1;\
            UNSG32 ufull_ST_18i                                :  1;\
            UNSG32 ufull_ST_19i                                :  1;\
            UNSG32 ufull_ST_20i                                :  1;\
            UNSG32 ufull_ST_21i                                :  1;\
            UNSG32 ufull_ST_22i                                :  1;\
            UNSG32 ufull_ST_23i                                :  1;\
            UNSG32 ufull_ST_24i                                :  1;\
            UNSG32 ufull_ST_25i                                :  1;\
            UNSG32 ufull_ST_26i                                :  1;\
            UNSG32 ufull_ST_27i                                :  1;\
            UNSG32 ufull_ST_28i                                :  1;\
            UNSG32 ufull_ST_29i                                :  1;\
            UNSG32 ufull_ST_30i                                :  1;\
            UNSG32 ufull_ST_31i                                :  1;\
          }
    union { UNSG32 u32SemaHub_full;
            struct w32SemaHub_full;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SemaHub_almostEmpty_ST_0i(r32)              _BFGET_(r32, 0, 0)
    #define   SET32SemaHub_almostEmpty_ST_0i(r32,v)            _BFSET_(r32, 0, 0,v)
    #define   GET16SemaHub_almostEmpty_ST_0i(r16)              _BFGET_(r16, 0, 0)
    #define   SET16SemaHub_almostEmpty_ST_0i(r16,v)            _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHub_almostEmpty_ST_1i(r32)              _BFGET_(r32, 1, 1)
    #define   SET32SemaHub_almostEmpty_ST_1i(r32,v)            _BFSET_(r32, 1, 1,v)
    #define   GET16SemaHub_almostEmpty_ST_1i(r16)              _BFGET_(r16, 1, 1)
    #define   SET16SemaHub_almostEmpty_ST_1i(r16,v)            _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHub_almostEmpty_ST_2i(r32)              _BFGET_(r32, 2, 2)
    #define   SET32SemaHub_almostEmpty_ST_2i(r32,v)            _BFSET_(r32, 2, 2,v)
    #define   GET16SemaHub_almostEmpty_ST_2i(r16)              _BFGET_(r16, 2, 2)
    #define   SET16SemaHub_almostEmpty_ST_2i(r16,v)            _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHub_almostEmpty_ST_3i(r32)              _BFGET_(r32, 3, 3)
    #define   SET32SemaHub_almostEmpty_ST_3i(r32,v)            _BFSET_(r32, 3, 3,v)
    #define   GET16SemaHub_almostEmpty_ST_3i(r16)              _BFGET_(r16, 3, 3)
    #define   SET16SemaHub_almostEmpty_ST_3i(r16,v)            _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHub_almostEmpty_ST_4i(r32)              _BFGET_(r32, 4, 4)
    #define   SET32SemaHub_almostEmpty_ST_4i(r32,v)            _BFSET_(r32, 4, 4,v)
    #define   GET16SemaHub_almostEmpty_ST_4i(r16)              _BFGET_(r16, 4, 4)
    #define   SET16SemaHub_almostEmpty_ST_4i(r16,v)            _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHub_almostEmpty_ST_5i(r32)              _BFGET_(r32, 5, 5)
    #define   SET32SemaHub_almostEmpty_ST_5i(r32,v)            _BFSET_(r32, 5, 5,v)
    #define   GET16SemaHub_almostEmpty_ST_5i(r16)              _BFGET_(r16, 5, 5)
    #define   SET16SemaHub_almostEmpty_ST_5i(r16,v)            _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHub_almostEmpty_ST_6i(r32)              _BFGET_(r32, 6, 6)
    #define   SET32SemaHub_almostEmpty_ST_6i(r32,v)            _BFSET_(r32, 6, 6,v)
    #define   GET16SemaHub_almostEmpty_ST_6i(r16)              _BFGET_(r16, 6, 6)
    #define   SET16SemaHub_almostEmpty_ST_6i(r16,v)            _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHub_almostEmpty_ST_7i(r32)              _BFGET_(r32, 7, 7)
    #define   SET32SemaHub_almostEmpty_ST_7i(r32,v)            _BFSET_(r32, 7, 7,v)
    #define   GET16SemaHub_almostEmpty_ST_7i(r16)              _BFGET_(r16, 7, 7)
    #define   SET16SemaHub_almostEmpty_ST_7i(r16,v)            _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHub_almostEmpty_ST_8i(r32)              _BFGET_(r32, 8, 8)
    #define   SET32SemaHub_almostEmpty_ST_8i(r32,v)            _BFSET_(r32, 8, 8,v)
    #define   GET16SemaHub_almostEmpty_ST_8i(r16)              _BFGET_(r16, 8, 8)
    #define   SET16SemaHub_almostEmpty_ST_8i(r16,v)            _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHub_almostEmpty_ST_9i(r32)              _BFGET_(r32, 9, 9)
    #define   SET32SemaHub_almostEmpty_ST_9i(r32,v)            _BFSET_(r32, 9, 9,v)
    #define   GET16SemaHub_almostEmpty_ST_9i(r16)              _BFGET_(r16, 9, 9)
    #define   SET16SemaHub_almostEmpty_ST_9i(r16,v)            _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHub_almostEmpty_ST_10i(r32)             _BFGET_(r32,10,10)
    #define   SET32SemaHub_almostEmpty_ST_10i(r32,v)           _BFSET_(r32,10,10,v)
    #define   GET16SemaHub_almostEmpty_ST_10i(r16)             _BFGET_(r16,10,10)
    #define   SET16SemaHub_almostEmpty_ST_10i(r16,v)           _BFSET_(r16,10,10,v)

    #define   GET32SemaHub_almostEmpty_ST_11i(r32)             _BFGET_(r32,11,11)
    #define   SET32SemaHub_almostEmpty_ST_11i(r32,v)           _BFSET_(r32,11,11,v)
    #define   GET16SemaHub_almostEmpty_ST_11i(r16)             _BFGET_(r16,11,11)
    #define   SET16SemaHub_almostEmpty_ST_11i(r16,v)           _BFSET_(r16,11,11,v)

    #define   GET32SemaHub_almostEmpty_ST_12i(r32)             _BFGET_(r32,12,12)
    #define   SET32SemaHub_almostEmpty_ST_12i(r32,v)           _BFSET_(r32,12,12,v)
    #define   GET16SemaHub_almostEmpty_ST_12i(r16)             _BFGET_(r16,12,12)
    #define   SET16SemaHub_almostEmpty_ST_12i(r16,v)           _BFSET_(r16,12,12,v)

    #define   GET32SemaHub_almostEmpty_ST_13i(r32)             _BFGET_(r32,13,13)
    #define   SET32SemaHub_almostEmpty_ST_13i(r32,v)           _BFSET_(r32,13,13,v)
    #define   GET16SemaHub_almostEmpty_ST_13i(r16)             _BFGET_(r16,13,13)
    #define   SET16SemaHub_almostEmpty_ST_13i(r16,v)           _BFSET_(r16,13,13,v)

    #define   GET32SemaHub_almostEmpty_ST_14i(r32)             _BFGET_(r32,14,14)
    #define   SET32SemaHub_almostEmpty_ST_14i(r32,v)           _BFSET_(r32,14,14,v)
    #define   GET16SemaHub_almostEmpty_ST_14i(r16)             _BFGET_(r16,14,14)
    #define   SET16SemaHub_almostEmpty_ST_14i(r16,v)           _BFSET_(r16,14,14,v)

    #define   GET32SemaHub_almostEmpty_ST_15i(r32)             _BFGET_(r32,15,15)
    #define   SET32SemaHub_almostEmpty_ST_15i(r32,v)           _BFSET_(r32,15,15,v)
    #define   GET16SemaHub_almostEmpty_ST_15i(r16)             _BFGET_(r16,15,15)
    #define   SET16SemaHub_almostEmpty_ST_15i(r16,v)           _BFSET_(r16,15,15,v)

    #define   GET32SemaHub_almostEmpty_ST_16i(r32)             _BFGET_(r32,16,16)
    #define   SET32SemaHub_almostEmpty_ST_16i(r32,v)           _BFSET_(r32,16,16,v)
    #define   GET16SemaHub_almostEmpty_ST_16i(r16)             _BFGET_(r16, 0, 0)
    #define   SET16SemaHub_almostEmpty_ST_16i(r16,v)           _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHub_almostEmpty_ST_17i(r32)             _BFGET_(r32,17,17)
    #define   SET32SemaHub_almostEmpty_ST_17i(r32,v)           _BFSET_(r32,17,17,v)
    #define   GET16SemaHub_almostEmpty_ST_17i(r16)             _BFGET_(r16, 1, 1)
    #define   SET16SemaHub_almostEmpty_ST_17i(r16,v)           _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHub_almostEmpty_ST_18i(r32)             _BFGET_(r32,18,18)
    #define   SET32SemaHub_almostEmpty_ST_18i(r32,v)           _BFSET_(r32,18,18,v)
    #define   GET16SemaHub_almostEmpty_ST_18i(r16)             _BFGET_(r16, 2, 2)
    #define   SET16SemaHub_almostEmpty_ST_18i(r16,v)           _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHub_almostEmpty_ST_19i(r32)             _BFGET_(r32,19,19)
    #define   SET32SemaHub_almostEmpty_ST_19i(r32,v)           _BFSET_(r32,19,19,v)
    #define   GET16SemaHub_almostEmpty_ST_19i(r16)             _BFGET_(r16, 3, 3)
    #define   SET16SemaHub_almostEmpty_ST_19i(r16,v)           _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHub_almostEmpty_ST_20i(r32)             _BFGET_(r32,20,20)
    #define   SET32SemaHub_almostEmpty_ST_20i(r32,v)           _BFSET_(r32,20,20,v)
    #define   GET16SemaHub_almostEmpty_ST_20i(r16)             _BFGET_(r16, 4, 4)
    #define   SET16SemaHub_almostEmpty_ST_20i(r16,v)           _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHub_almostEmpty_ST_21i(r32)             _BFGET_(r32,21,21)
    #define   SET32SemaHub_almostEmpty_ST_21i(r32,v)           _BFSET_(r32,21,21,v)
    #define   GET16SemaHub_almostEmpty_ST_21i(r16)             _BFGET_(r16, 5, 5)
    #define   SET16SemaHub_almostEmpty_ST_21i(r16,v)           _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHub_almostEmpty_ST_22i(r32)             _BFGET_(r32,22,22)
    #define   SET32SemaHub_almostEmpty_ST_22i(r32,v)           _BFSET_(r32,22,22,v)
    #define   GET16SemaHub_almostEmpty_ST_22i(r16)             _BFGET_(r16, 6, 6)
    #define   SET16SemaHub_almostEmpty_ST_22i(r16,v)           _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHub_almostEmpty_ST_23i(r32)             _BFGET_(r32,23,23)
    #define   SET32SemaHub_almostEmpty_ST_23i(r32,v)           _BFSET_(r32,23,23,v)
    #define   GET16SemaHub_almostEmpty_ST_23i(r16)             _BFGET_(r16, 7, 7)
    #define   SET16SemaHub_almostEmpty_ST_23i(r16,v)           _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHub_almostEmpty_ST_24i(r32)             _BFGET_(r32,24,24)
    #define   SET32SemaHub_almostEmpty_ST_24i(r32,v)           _BFSET_(r32,24,24,v)
    #define   GET16SemaHub_almostEmpty_ST_24i(r16)             _BFGET_(r16, 8, 8)
    #define   SET16SemaHub_almostEmpty_ST_24i(r16,v)           _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHub_almostEmpty_ST_25i(r32)             _BFGET_(r32,25,25)
    #define   SET32SemaHub_almostEmpty_ST_25i(r32,v)           _BFSET_(r32,25,25,v)
    #define   GET16SemaHub_almostEmpty_ST_25i(r16)             _BFGET_(r16, 9, 9)
    #define   SET16SemaHub_almostEmpty_ST_25i(r16,v)           _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHub_almostEmpty_ST_26i(r32)             _BFGET_(r32,26,26)
    #define   SET32SemaHub_almostEmpty_ST_26i(r32,v)           _BFSET_(r32,26,26,v)
    #define   GET16SemaHub_almostEmpty_ST_26i(r16)             _BFGET_(r16,10,10)
    #define   SET16SemaHub_almostEmpty_ST_26i(r16,v)           _BFSET_(r16,10,10,v)

    #define   GET32SemaHub_almostEmpty_ST_27i(r32)             _BFGET_(r32,27,27)
    #define   SET32SemaHub_almostEmpty_ST_27i(r32,v)           _BFSET_(r32,27,27,v)
    #define   GET16SemaHub_almostEmpty_ST_27i(r16)             _BFGET_(r16,11,11)
    #define   SET16SemaHub_almostEmpty_ST_27i(r16,v)           _BFSET_(r16,11,11,v)

    #define   GET32SemaHub_almostEmpty_ST_28i(r32)             _BFGET_(r32,28,28)
    #define   SET32SemaHub_almostEmpty_ST_28i(r32,v)           _BFSET_(r32,28,28,v)
    #define   GET16SemaHub_almostEmpty_ST_28i(r16)             _BFGET_(r16,12,12)
    #define   SET16SemaHub_almostEmpty_ST_28i(r16,v)           _BFSET_(r16,12,12,v)

    #define   GET32SemaHub_almostEmpty_ST_29i(r32)             _BFGET_(r32,29,29)
    #define   SET32SemaHub_almostEmpty_ST_29i(r32,v)           _BFSET_(r32,29,29,v)
    #define   GET16SemaHub_almostEmpty_ST_29i(r16)             _BFGET_(r16,13,13)
    #define   SET16SemaHub_almostEmpty_ST_29i(r16,v)           _BFSET_(r16,13,13,v)

    #define   GET32SemaHub_almostEmpty_ST_30i(r32)             _BFGET_(r32,30,30)
    #define   SET32SemaHub_almostEmpty_ST_30i(r32,v)           _BFSET_(r32,30,30,v)
    #define   GET16SemaHub_almostEmpty_ST_30i(r16)             _BFGET_(r16,14,14)
    #define   SET16SemaHub_almostEmpty_ST_30i(r16,v)           _BFSET_(r16,14,14,v)

    #define   GET32SemaHub_almostEmpty_ST_31i(r32)             _BFGET_(r32,31,31)
    #define   SET32SemaHub_almostEmpty_ST_31i(r32,v)           _BFSET_(r32,31,31,v)
    #define   GET16SemaHub_almostEmpty_ST_31i(r16)             _BFGET_(r16,15,15)
    #define   SET16SemaHub_almostEmpty_ST_31i(r16,v)           _BFSET_(r16,15,15,v)

    #define     w32SemaHub_almostEmpty                         {\
            UNSG32 ualmostEmpty_ST_0i                          :  1;\
            UNSG32 ualmostEmpty_ST_1i                          :  1;\
            UNSG32 ualmostEmpty_ST_2i                          :  1;\
            UNSG32 ualmostEmpty_ST_3i                          :  1;\
            UNSG32 ualmostEmpty_ST_4i                          :  1;\
            UNSG32 ualmostEmpty_ST_5i                          :  1;\
            UNSG32 ualmostEmpty_ST_6i                          :  1;\
            UNSG32 ualmostEmpty_ST_7i                          :  1;\
            UNSG32 ualmostEmpty_ST_8i                          :  1;\
            UNSG32 ualmostEmpty_ST_9i                          :  1;\
            UNSG32 ualmostEmpty_ST_10i                         :  1;\
            UNSG32 ualmostEmpty_ST_11i                         :  1;\
            UNSG32 ualmostEmpty_ST_12i                         :  1;\
            UNSG32 ualmostEmpty_ST_13i                         :  1;\
            UNSG32 ualmostEmpty_ST_14i                         :  1;\
            UNSG32 ualmostEmpty_ST_15i                         :  1;\
            UNSG32 ualmostEmpty_ST_16i                         :  1;\
            UNSG32 ualmostEmpty_ST_17i                         :  1;\
            UNSG32 ualmostEmpty_ST_18i                         :  1;\
            UNSG32 ualmostEmpty_ST_19i                         :  1;\
            UNSG32 ualmostEmpty_ST_20i                         :  1;\
            UNSG32 ualmostEmpty_ST_21i                         :  1;\
            UNSG32 ualmostEmpty_ST_22i                         :  1;\
            UNSG32 ualmostEmpty_ST_23i                         :  1;\
            UNSG32 ualmostEmpty_ST_24i                         :  1;\
            UNSG32 ualmostEmpty_ST_25i                         :  1;\
            UNSG32 ualmostEmpty_ST_26i                         :  1;\
            UNSG32 ualmostEmpty_ST_27i                         :  1;\
            UNSG32 ualmostEmpty_ST_28i                         :  1;\
            UNSG32 ualmostEmpty_ST_29i                         :  1;\
            UNSG32 ualmostEmpty_ST_30i                         :  1;\
            UNSG32 ualmostEmpty_ST_31i                         :  1;\
          }
    union { UNSG32 u32SemaHub_almostEmpty;
            struct w32SemaHub_almostEmpty;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32SemaHub_almostFull_ST_0i(r32)               _BFGET_(r32, 0, 0)
    #define   SET32SemaHub_almostFull_ST_0i(r32,v)             _BFSET_(r32, 0, 0,v)
    #define   GET16SemaHub_almostFull_ST_0i(r16)               _BFGET_(r16, 0, 0)
    #define   SET16SemaHub_almostFull_ST_0i(r16,v)             _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHub_almostFull_ST_1i(r32)               _BFGET_(r32, 1, 1)
    #define   SET32SemaHub_almostFull_ST_1i(r32,v)             _BFSET_(r32, 1, 1,v)
    #define   GET16SemaHub_almostFull_ST_1i(r16)               _BFGET_(r16, 1, 1)
    #define   SET16SemaHub_almostFull_ST_1i(r16,v)             _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHub_almostFull_ST_2i(r32)               _BFGET_(r32, 2, 2)
    #define   SET32SemaHub_almostFull_ST_2i(r32,v)             _BFSET_(r32, 2, 2,v)
    #define   GET16SemaHub_almostFull_ST_2i(r16)               _BFGET_(r16, 2, 2)
    #define   SET16SemaHub_almostFull_ST_2i(r16,v)             _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHub_almostFull_ST_3i(r32)               _BFGET_(r32, 3, 3)
    #define   SET32SemaHub_almostFull_ST_3i(r32,v)             _BFSET_(r32, 3, 3,v)
    #define   GET16SemaHub_almostFull_ST_3i(r16)               _BFGET_(r16, 3, 3)
    #define   SET16SemaHub_almostFull_ST_3i(r16,v)             _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHub_almostFull_ST_4i(r32)               _BFGET_(r32, 4, 4)
    #define   SET32SemaHub_almostFull_ST_4i(r32,v)             _BFSET_(r32, 4, 4,v)
    #define   GET16SemaHub_almostFull_ST_4i(r16)               _BFGET_(r16, 4, 4)
    #define   SET16SemaHub_almostFull_ST_4i(r16,v)             _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHub_almostFull_ST_5i(r32)               _BFGET_(r32, 5, 5)
    #define   SET32SemaHub_almostFull_ST_5i(r32,v)             _BFSET_(r32, 5, 5,v)
    #define   GET16SemaHub_almostFull_ST_5i(r16)               _BFGET_(r16, 5, 5)
    #define   SET16SemaHub_almostFull_ST_5i(r16,v)             _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHub_almostFull_ST_6i(r32)               _BFGET_(r32, 6, 6)
    #define   SET32SemaHub_almostFull_ST_6i(r32,v)             _BFSET_(r32, 6, 6,v)
    #define   GET16SemaHub_almostFull_ST_6i(r16)               _BFGET_(r16, 6, 6)
    #define   SET16SemaHub_almostFull_ST_6i(r16,v)             _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHub_almostFull_ST_7i(r32)               _BFGET_(r32, 7, 7)
    #define   SET32SemaHub_almostFull_ST_7i(r32,v)             _BFSET_(r32, 7, 7,v)
    #define   GET16SemaHub_almostFull_ST_7i(r16)               _BFGET_(r16, 7, 7)
    #define   SET16SemaHub_almostFull_ST_7i(r16,v)             _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHub_almostFull_ST_8i(r32)               _BFGET_(r32, 8, 8)
    #define   SET32SemaHub_almostFull_ST_8i(r32,v)             _BFSET_(r32, 8, 8,v)
    #define   GET16SemaHub_almostFull_ST_8i(r16)               _BFGET_(r16, 8, 8)
    #define   SET16SemaHub_almostFull_ST_8i(r16,v)             _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHub_almostFull_ST_9i(r32)               _BFGET_(r32, 9, 9)
    #define   SET32SemaHub_almostFull_ST_9i(r32,v)             _BFSET_(r32, 9, 9,v)
    #define   GET16SemaHub_almostFull_ST_9i(r16)               _BFGET_(r16, 9, 9)
    #define   SET16SemaHub_almostFull_ST_9i(r16,v)             _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHub_almostFull_ST_10i(r32)              _BFGET_(r32,10,10)
    #define   SET32SemaHub_almostFull_ST_10i(r32,v)            _BFSET_(r32,10,10,v)
    #define   GET16SemaHub_almostFull_ST_10i(r16)              _BFGET_(r16,10,10)
    #define   SET16SemaHub_almostFull_ST_10i(r16,v)            _BFSET_(r16,10,10,v)

    #define   GET32SemaHub_almostFull_ST_11i(r32)              _BFGET_(r32,11,11)
    #define   SET32SemaHub_almostFull_ST_11i(r32,v)            _BFSET_(r32,11,11,v)
    #define   GET16SemaHub_almostFull_ST_11i(r16)              _BFGET_(r16,11,11)
    #define   SET16SemaHub_almostFull_ST_11i(r16,v)            _BFSET_(r16,11,11,v)

    #define   GET32SemaHub_almostFull_ST_12i(r32)              _BFGET_(r32,12,12)
    #define   SET32SemaHub_almostFull_ST_12i(r32,v)            _BFSET_(r32,12,12,v)
    #define   GET16SemaHub_almostFull_ST_12i(r16)              _BFGET_(r16,12,12)
    #define   SET16SemaHub_almostFull_ST_12i(r16,v)            _BFSET_(r16,12,12,v)

    #define   GET32SemaHub_almostFull_ST_13i(r32)              _BFGET_(r32,13,13)
    #define   SET32SemaHub_almostFull_ST_13i(r32,v)            _BFSET_(r32,13,13,v)
    #define   GET16SemaHub_almostFull_ST_13i(r16)              _BFGET_(r16,13,13)
    #define   SET16SemaHub_almostFull_ST_13i(r16,v)            _BFSET_(r16,13,13,v)

    #define   GET32SemaHub_almostFull_ST_14i(r32)              _BFGET_(r32,14,14)
    #define   SET32SemaHub_almostFull_ST_14i(r32,v)            _BFSET_(r32,14,14,v)
    #define   GET16SemaHub_almostFull_ST_14i(r16)              _BFGET_(r16,14,14)
    #define   SET16SemaHub_almostFull_ST_14i(r16,v)            _BFSET_(r16,14,14,v)

    #define   GET32SemaHub_almostFull_ST_15i(r32)              _BFGET_(r32,15,15)
    #define   SET32SemaHub_almostFull_ST_15i(r32,v)            _BFSET_(r32,15,15,v)
    #define   GET16SemaHub_almostFull_ST_15i(r16)              _BFGET_(r16,15,15)
    #define   SET16SemaHub_almostFull_ST_15i(r16,v)            _BFSET_(r16,15,15,v)

    #define   GET32SemaHub_almostFull_ST_16i(r32)              _BFGET_(r32,16,16)
    #define   SET32SemaHub_almostFull_ST_16i(r32,v)            _BFSET_(r32,16,16,v)
    #define   GET16SemaHub_almostFull_ST_16i(r16)              _BFGET_(r16, 0, 0)
    #define   SET16SemaHub_almostFull_ST_16i(r16,v)            _BFSET_(r16, 0, 0,v)

    #define   GET32SemaHub_almostFull_ST_17i(r32)              _BFGET_(r32,17,17)
    #define   SET32SemaHub_almostFull_ST_17i(r32,v)            _BFSET_(r32,17,17,v)
    #define   GET16SemaHub_almostFull_ST_17i(r16)              _BFGET_(r16, 1, 1)
    #define   SET16SemaHub_almostFull_ST_17i(r16,v)            _BFSET_(r16, 1, 1,v)

    #define   GET32SemaHub_almostFull_ST_18i(r32)              _BFGET_(r32,18,18)
    #define   SET32SemaHub_almostFull_ST_18i(r32,v)            _BFSET_(r32,18,18,v)
    #define   GET16SemaHub_almostFull_ST_18i(r16)              _BFGET_(r16, 2, 2)
    #define   SET16SemaHub_almostFull_ST_18i(r16,v)            _BFSET_(r16, 2, 2,v)

    #define   GET32SemaHub_almostFull_ST_19i(r32)              _BFGET_(r32,19,19)
    #define   SET32SemaHub_almostFull_ST_19i(r32,v)            _BFSET_(r32,19,19,v)
    #define   GET16SemaHub_almostFull_ST_19i(r16)              _BFGET_(r16, 3, 3)
    #define   SET16SemaHub_almostFull_ST_19i(r16,v)            _BFSET_(r16, 3, 3,v)

    #define   GET32SemaHub_almostFull_ST_20i(r32)              _BFGET_(r32,20,20)
    #define   SET32SemaHub_almostFull_ST_20i(r32,v)            _BFSET_(r32,20,20,v)
    #define   GET16SemaHub_almostFull_ST_20i(r16)              _BFGET_(r16, 4, 4)
    #define   SET16SemaHub_almostFull_ST_20i(r16,v)            _BFSET_(r16, 4, 4,v)

    #define   GET32SemaHub_almostFull_ST_21i(r32)              _BFGET_(r32,21,21)
    #define   SET32SemaHub_almostFull_ST_21i(r32,v)            _BFSET_(r32,21,21,v)
    #define   GET16SemaHub_almostFull_ST_21i(r16)              _BFGET_(r16, 5, 5)
    #define   SET16SemaHub_almostFull_ST_21i(r16,v)            _BFSET_(r16, 5, 5,v)

    #define   GET32SemaHub_almostFull_ST_22i(r32)              _BFGET_(r32,22,22)
    #define   SET32SemaHub_almostFull_ST_22i(r32,v)            _BFSET_(r32,22,22,v)
    #define   GET16SemaHub_almostFull_ST_22i(r16)              _BFGET_(r16, 6, 6)
    #define   SET16SemaHub_almostFull_ST_22i(r16,v)            _BFSET_(r16, 6, 6,v)

    #define   GET32SemaHub_almostFull_ST_23i(r32)              _BFGET_(r32,23,23)
    #define   SET32SemaHub_almostFull_ST_23i(r32,v)            _BFSET_(r32,23,23,v)
    #define   GET16SemaHub_almostFull_ST_23i(r16)              _BFGET_(r16, 7, 7)
    #define   SET16SemaHub_almostFull_ST_23i(r16,v)            _BFSET_(r16, 7, 7,v)

    #define   GET32SemaHub_almostFull_ST_24i(r32)              _BFGET_(r32,24,24)
    #define   SET32SemaHub_almostFull_ST_24i(r32,v)            _BFSET_(r32,24,24,v)
    #define   GET16SemaHub_almostFull_ST_24i(r16)              _BFGET_(r16, 8, 8)
    #define   SET16SemaHub_almostFull_ST_24i(r16,v)            _BFSET_(r16, 8, 8,v)

    #define   GET32SemaHub_almostFull_ST_25i(r32)              _BFGET_(r32,25,25)
    #define   SET32SemaHub_almostFull_ST_25i(r32,v)            _BFSET_(r32,25,25,v)
    #define   GET16SemaHub_almostFull_ST_25i(r16)              _BFGET_(r16, 9, 9)
    #define   SET16SemaHub_almostFull_ST_25i(r16,v)            _BFSET_(r16, 9, 9,v)

    #define   GET32SemaHub_almostFull_ST_26i(r32)              _BFGET_(r32,26,26)
    #define   SET32SemaHub_almostFull_ST_26i(r32,v)            _BFSET_(r32,26,26,v)
    #define   GET16SemaHub_almostFull_ST_26i(r16)              _BFGET_(r16,10,10)
    #define   SET16SemaHub_almostFull_ST_26i(r16,v)            _BFSET_(r16,10,10,v)

    #define   GET32SemaHub_almostFull_ST_27i(r32)              _BFGET_(r32,27,27)
    #define   SET32SemaHub_almostFull_ST_27i(r32,v)            _BFSET_(r32,27,27,v)
    #define   GET16SemaHub_almostFull_ST_27i(r16)              _BFGET_(r16,11,11)
    #define   SET16SemaHub_almostFull_ST_27i(r16,v)            _BFSET_(r16,11,11,v)

    #define   GET32SemaHub_almostFull_ST_28i(r32)              _BFGET_(r32,28,28)
    #define   SET32SemaHub_almostFull_ST_28i(r32,v)            _BFSET_(r32,28,28,v)
    #define   GET16SemaHub_almostFull_ST_28i(r16)              _BFGET_(r16,12,12)
    #define   SET16SemaHub_almostFull_ST_28i(r16,v)            _BFSET_(r16,12,12,v)

    #define   GET32SemaHub_almostFull_ST_29i(r32)              _BFGET_(r32,29,29)
    #define   SET32SemaHub_almostFull_ST_29i(r32,v)            _BFSET_(r32,29,29,v)
    #define   GET16SemaHub_almostFull_ST_29i(r16)              _BFGET_(r16,13,13)
    #define   SET16SemaHub_almostFull_ST_29i(r16,v)            _BFSET_(r16,13,13,v)

    #define   GET32SemaHub_almostFull_ST_30i(r32)              _BFGET_(r32,30,30)
    #define   SET32SemaHub_almostFull_ST_30i(r32,v)            _BFSET_(r32,30,30,v)
    #define   GET16SemaHub_almostFull_ST_30i(r16)              _BFGET_(r16,14,14)
    #define   SET16SemaHub_almostFull_ST_30i(r16,v)            _BFSET_(r16,14,14,v)

    #define   GET32SemaHub_almostFull_ST_31i(r32)              _BFGET_(r32,31,31)
    #define   SET32SemaHub_almostFull_ST_31i(r32,v)            _BFSET_(r32,31,31,v)
    #define   GET16SemaHub_almostFull_ST_31i(r16)              _BFGET_(r16,15,15)
    #define   SET16SemaHub_almostFull_ST_31i(r16,v)            _BFSET_(r16,15,15,v)

    #define     w32SemaHub_almostFull                          {\
            UNSG32 ualmostFull_ST_0i                           :  1;\
            UNSG32 ualmostFull_ST_1i                           :  1;\
            UNSG32 ualmostFull_ST_2i                           :  1;\
            UNSG32 ualmostFull_ST_3i                           :  1;\
            UNSG32 ualmostFull_ST_4i                           :  1;\
            UNSG32 ualmostFull_ST_5i                           :  1;\
            UNSG32 ualmostFull_ST_6i                           :  1;\
            UNSG32 ualmostFull_ST_7i                           :  1;\
            UNSG32 ualmostFull_ST_8i                           :  1;\
            UNSG32 ualmostFull_ST_9i                           :  1;\
            UNSG32 ualmostFull_ST_10i                          :  1;\
            UNSG32 ualmostFull_ST_11i                          :  1;\
            UNSG32 ualmostFull_ST_12i                          :  1;\
            UNSG32 ualmostFull_ST_13i                          :  1;\
            UNSG32 ualmostFull_ST_14i                          :  1;\
            UNSG32 ualmostFull_ST_15i                          :  1;\
            UNSG32 ualmostFull_ST_16i                          :  1;\
            UNSG32 ualmostFull_ST_17i                          :  1;\
            UNSG32 ualmostFull_ST_18i                          :  1;\
            UNSG32 ualmostFull_ST_19i                          :  1;\
            UNSG32 ualmostFull_ST_20i                          :  1;\
            UNSG32 ualmostFull_ST_21i                          :  1;\
            UNSG32 ualmostFull_ST_22i                          :  1;\
            UNSG32 ualmostFull_ST_23i                          :  1;\
            UNSG32 ualmostFull_ST_24i                          :  1;\
            UNSG32 ualmostFull_ST_25i                          :  1;\
            UNSG32 ualmostFull_ST_26i                          :  1;\
            UNSG32 ualmostFull_ST_27i                          :  1;\
            UNSG32 ualmostFull_ST_28i                          :  1;\
            UNSG32 ualmostFull_ST_29i                          :  1;\
            UNSG32 ualmostFull_ST_30i                          :  1;\
            UNSG32 ualmostFull_ST_31i                          :  1;\
          }
    union { UNSG32 u32SemaHub_almostFull;
            struct w32SemaHub_almostFull;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx398                                    [104];
    ///////////////////////////////////////////////////////////
    } SIE_SemaHub;

    typedef union  T32SemaHub_PUSH
          { UNSG32 u32;
            struct w32SemaHub_PUSH;
                 } T32SemaHub_PUSH;
    typedef union  T32SemaHub_POP
          { UNSG32 u32;
            struct w32SemaHub_POP;
                 } T32SemaHub_POP;
    typedef union  T32SemaHub_empty
          { UNSG32 u32;
            struct w32SemaHub_empty;
                 } T32SemaHub_empty;
    typedef union  T32SemaHub_full
          { UNSG32 u32;
            struct w32SemaHub_full;
                 } T32SemaHub_full;
    typedef union  T32SemaHub_almostEmpty
          { UNSG32 u32;
            struct w32SemaHub_almostEmpty;
                 } T32SemaHub_almostEmpty;
    typedef union  T32SemaHub_almostFull
          { UNSG32 u32;
            struct w32SemaHub_almostFull;
                 } T32SemaHub_almostFull;
    ///////////////////////////////////////////////////////////

    typedef union  TSemaHub_PUSH
          { UNSG32 u32[1];
            struct {
            struct w32SemaHub_PUSH;
                   };
                 } TSemaHub_PUSH;
    typedef union  TSemaHub_POP
          { UNSG32 u32[1];
            struct {
            struct w32SemaHub_POP;
                   };
                 } TSemaHub_POP;
    typedef union  TSemaHub_empty
          { UNSG32 u32[1];
            struct {
            struct w32SemaHub_empty;
                   };
                 } TSemaHub_empty;
    typedef union  TSemaHub_full
          { UNSG32 u32[1];
            struct {
            struct w32SemaHub_full;
                   };
                 } TSemaHub_full;
    typedef union  TSemaHub_almostEmpty
          { UNSG32 u32[1];
            struct {
            struct w32SemaHub_almostEmpty;
                   };
                 } TSemaHub_almostEmpty;
    typedef union  TSemaHub_almostFull
          { UNSG32 u32[1];
            struct {
            struct w32SemaHub_almostFull;
                   };
                 } TSemaHub_almostFull;

    ///////////////////////////////////////////////////////////
     SIGN32 SemaHub_drvrd(SIE_SemaHub *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 SemaHub_drvwr(SIE_SemaHub *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void SemaHub_reset(SIE_SemaHub *p);
     SIGN32 SemaHub_cmp  (SIE_SemaHub *p, SIE_SemaHub *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define SemaHub_check(p,pie,pfx,hLOG) SemaHub_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define SemaHub_print(p,    pfx,hLOG) SemaHub_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: SemaHub
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FiFo                    biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 CFG                  (W-)
///               %unsigned 20 BASE                      
///                                    ###
///                                    * Base address (byte-address) of a FIFO in the shared SRAM. A channel's read/write pointers will be added to this “BASE” to get exact location of shared SRAM.
///                                    * Note: aligned with base SRAM data bus.
///                                    * For example, if SRAM data is 64-bit, then base[2:0] should be 3'b0;
///                                    ###
///               %%        12         # Stuffing bits...
///     @ 0x00004 START                (W-)
///               %unsigned 1  EN                        0x0
///                                    ###
///                                    * Write 1 to this register will enable this channel, or 0 to this register will disable this channel.
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00008 CLEAR                (W-)
///               %unsigned 1  EN                        
///                                    ###
///                                    * Write anything to clear FIFO pointers to 0.
///                                    * Note :
///                                    * CPU should make sure to disabled the channel (write 0 to START_EN register) before issue clear command, otherwise the clear request will be ignored.
///                                    * Do not restart the channel when clear operation is in process.
///                                    * HW will make sure there is no pending transactions before execute the clear operation.
///                                    * Associated semaphore cell needs reset separately by re-write “CFG_DEPTH”
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x0000C FLUSH                (W-)
///               %unsigned 1  EN                        
///                                    ###
///                                    * No support for now
///                                    ###
///               %%        31         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:      23b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FiFo
#define h_FiFo (){}

    #define     RA_FiFo_CFG                                    0x0000

    #define     BA_FiFo_CFG_BASE                               0x0000
    #define     B16FiFo_CFG_BASE                               0x0000
    #define   LSb32FiFo_CFG_BASE                                  0
    #define   LSb16FiFo_CFG_BASE                                  0
    #define       bFiFo_CFG_BASE                               20
    #define   MSK32FiFo_CFG_BASE                                  0x000FFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_FiFo_START                                  0x0004

    #define     BA_FiFo_START_EN                               0x0004
    #define     B16FiFo_START_EN                               0x0004
    #define   LSb32FiFo_START_EN                                  0
    #define   LSb16FiFo_START_EN                                  0
    #define       bFiFo_START_EN                               1
    #define   MSK32FiFo_START_EN                                  0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_FiFo_CLEAR                                  0x0008

    #define     BA_FiFo_CLEAR_EN                               0x0008
    #define     B16FiFo_CLEAR_EN                               0x0008
    #define   LSb32FiFo_CLEAR_EN                                  0
    #define   LSb16FiFo_CLEAR_EN                                  0
    #define       bFiFo_CLEAR_EN                               1
    #define   MSK32FiFo_CLEAR_EN                                  0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_FiFo_FLUSH                                  0x000C

    #define     BA_FiFo_FLUSH_EN                               0x000C
    #define     B16FiFo_FLUSH_EN                               0x000C
    #define   LSb32FiFo_FLUSH_EN                                  0
    #define   LSb16FiFo_FLUSH_EN                                  0
    #define       bFiFo_FLUSH_EN                               1
    #define   MSK32FiFo_FLUSH_EN                                  0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FiFo {
    ///////////////////////////////////////////////////////////
    #define   GET32FiFo_CFG_BASE(r32)                          _BFGET_(r32,19, 0)
    #define   SET32FiFo_CFG_BASE(r32,v)                        _BFSET_(r32,19, 0,v)

    #define     w32FiFo_CFG                                    {\
            UNSG32 uCFG_BASE                                   : 20;\
            UNSG32 RSVDx0_b20                                  : 12;\
          }
    union { UNSG32 u32FiFo_CFG;
            struct w32FiFo_CFG;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FiFo_START_EN(r32)                          _BFGET_(r32, 0, 0)
    #define   SET32FiFo_START_EN(r32,v)                        _BFSET_(r32, 0, 0,v)
    #define   GET16FiFo_START_EN(r16)                          _BFGET_(r16, 0, 0)
    #define   SET16FiFo_START_EN(r16,v)                        _BFSET_(r16, 0, 0,v)

    #define     w32FiFo_START                                  {\
            UNSG32 uSTART_EN                                   :  1;\
            UNSG32 RSVDx4_b1                                   : 31;\
          }
    union { UNSG32 u32FiFo_START;
            struct w32FiFo_START;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FiFo_CLEAR_EN(r32)                          _BFGET_(r32, 0, 0)
    #define   SET32FiFo_CLEAR_EN(r32,v)                        _BFSET_(r32, 0, 0,v)
    #define   GET16FiFo_CLEAR_EN(r16)                          _BFGET_(r16, 0, 0)
    #define   SET16FiFo_CLEAR_EN(r16,v)                        _BFSET_(r16, 0, 0,v)

    #define     w32FiFo_CLEAR                                  {\
            UNSG32 uCLEAR_EN                                   :  1;\
            UNSG32 RSVDx8_b1                                   : 31;\
          }
    union { UNSG32 u32FiFo_CLEAR;
            struct w32FiFo_CLEAR;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FiFo_FLUSH_EN(r32)                          _BFGET_(r32, 0, 0)
    #define   SET32FiFo_FLUSH_EN(r32,v)                        _BFSET_(r32, 0, 0,v)
    #define   GET16FiFo_FLUSH_EN(r16)                          _BFGET_(r16, 0, 0)
    #define   SET16FiFo_FLUSH_EN(r16,v)                        _BFSET_(r16, 0, 0,v)

    #define     w32FiFo_FLUSH                                  {\
            UNSG32 uFLUSH_EN                                   :  1;\
            UNSG32 RSVDxC_b1                                   : 31;\
          }
    union { UNSG32 u32FiFo_FLUSH;
            struct w32FiFo_FLUSH;
          };
    ///////////////////////////////////////////////////////////
    } SIE_FiFo;

    typedef union  T32FiFo_CFG
          { UNSG32 u32;
            struct w32FiFo_CFG;
                 } T32FiFo_CFG;
    typedef union  T32FiFo_START
          { UNSG32 u32;
            struct w32FiFo_START;
                 } T32FiFo_START;
    typedef union  T32FiFo_CLEAR
          { UNSG32 u32;
            struct w32FiFo_CLEAR;
                 } T32FiFo_CLEAR;
    typedef union  T32FiFo_FLUSH
          { UNSG32 u32;
            struct w32FiFo_FLUSH;
                 } T32FiFo_FLUSH;
    ///////////////////////////////////////////////////////////

    typedef union  TFiFo_CFG
          { UNSG32 u32[1];
            struct {
            struct w32FiFo_CFG;
                   };
                 } TFiFo_CFG;
    typedef union  TFiFo_START
          { UNSG32 u32[1];
            struct {
            struct w32FiFo_START;
                   };
                 } TFiFo_START;
    typedef union  TFiFo_CLEAR
          { UNSG32 u32[1];
            struct {
            struct w32FiFo_CLEAR;
                   };
                 } TFiFo_CLEAR;
    typedef union  TFiFo_FLUSH
          { UNSG32 u32[1];
            struct {
            struct w32FiFo_FLUSH;
                   };
                 } TFiFo_FLUSH;

    ///////////////////////////////////////////////////////////
     SIGN32 FiFo_drvrd(SIE_FiFo *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FiFo_drvwr(SIE_FiFo *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FiFo_reset(SIE_FiFo *p);
     SIGN32 FiFo_cmp  (SIE_FiFo *p, SIE_FiFo *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FiFo_check(p,pie,pfx,hLOG) FiFo_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FiFo_print(p,    pfx,hLOG) FiFo_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FiFo
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE HBO                     biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 FiFoCtl              
///               $SemaHub             FiFoCtl           REG          
///     @ 0x00400 ARR                  (P)
///     # 0x00400 FiFo                 
///               $FiFo                FiFo              REG      [32]
///                                    ###
///                                    * Up-to 32 FIFO channels
///                                    * FiFo[N] is controlled by HBO.FiFoCtl.Channel[N]
///                                    ###
///     @ 0x00600 BUSY                 (R-)
///               %unsigned 32 ST                        
///                                    ###
///                                    * Per channel status
///                                    * Indicate the clear operation status.
///                                    * 1: clear is in process.
///                                    * 0 : clear is done.
///                                    ###
///     @ 0x00604                      (W-)
///     #         # Stuffing bytes...
///               %% 2016
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    1792B, bits:    1920b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_HBO
#define h_HBO (){}

    #define     RA_HBO_FiFoCtl                                 0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_HBO_ARR                                     0x0400
    #define     RA_HBO_FiFo                                    0x0400
    ///////////////////////////////////////////////////////////
    #define     RA_HBO_BUSY                                    0x0600

    #define     BA_HBO_BUSY_ST                                 0x0600
    #define     B16HBO_BUSY_ST                                 0x0600
    #define   LSb32HBO_BUSY_ST                                    0
    #define   LSb16HBO_BUSY_ST                                    0
    #define       bHBO_BUSY_ST                                 32
    #define   MSK32HBO_BUSY_ST                                    0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_HBO {
    ///////////////////////////////////////////////////////////
              SIE_SemaHub                                      ie_FiFoCtl;
    ///////////////////////////////////////////////////////////
              SIE_FiFo                                         ie_FiFo[32];
    ///////////////////////////////////////////////////////////
    #define   GET32HBO_BUSY_ST(r32)                            _BFGET_(r32,31, 0)
    #define   SET32HBO_BUSY_ST(r32,v)                          _BFSET_(r32,31, 0,v)

    #define     w32HBO_BUSY                                    {\
            UNSG32 uBUSY_ST                                    : 32;\
          }
    union { UNSG32 u32HBO_BUSY;
            struct w32HBO_BUSY;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx604                                    [252];
    ///////////////////////////////////////////////////////////
    } SIE_HBO;

    typedef union  T32HBO_BUSY
          { UNSG32 u32;
            struct w32HBO_BUSY;
                 } T32HBO_BUSY;
    ///////////////////////////////////////////////////////////

    typedef union  THBO_BUSY
          { UNSG32 u32[1];
            struct {
            struct w32HBO_BUSY;
                   };
                 } THBO_BUSY;

    ///////////////////////////////////////////////////////////
     SIGN32 HBO_drvrd(SIE_HBO *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 HBO_drvwr(SIE_HBO *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void HBO_reset(SIE_HBO *p);
     SIGN32 HBO_cmp  (SIE_HBO *p, SIE_HBO *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define HBO_check(p,pie,pfx,hLOG) HBO_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define HBO_print(p,    pfx,hLOG) HBO_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: HBO
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE LLDesFmt                biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 mem                  (P)
///               %unsigned 16 size                      
///                                    ###
///                                    * The size of one piece of scattered memory.
///                                    ###
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_LLDesFmt
#define h_LLDesFmt (){}

    #define     RA_LLDesFmt_mem                                0x0000

    #define     BA_LLDesFmt_mem_size                           0x0000
    #define     B16LLDesFmt_mem_size                           0x0000
    #define   LSb32LLDesFmt_mem_size                              0
    #define   LSb16LLDesFmt_mem_size                              0
    #define       bLLDesFmt_mem_size                           16
    #define   MSK32LLDesFmt_mem_size                              0x0000FFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_LLDesFmt {
    ///////////////////////////////////////////////////////////
    #define   GET32LLDesFmt_mem_size(r32)                      _BFGET_(r32,15, 0)
    #define   SET32LLDesFmt_mem_size(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16LLDesFmt_mem_size(r16)                      _BFGET_(r16,15, 0)
    #define   SET16LLDesFmt_mem_size(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32LLDesFmt_mem                                {\
            UNSG32 umem_size                                   : 16;\
            UNSG32 RSVDx0_b16                                  : 16;\
          }
    union { UNSG32 u32LLDesFmt_mem;
            struct w32LLDesFmt_mem;
          };
    ///////////////////////////////////////////////////////////
    } SIE_LLDesFmt;

    typedef union  T32LLDesFmt_mem
          { UNSG32 u32;
            struct w32LLDesFmt_mem;
                 } T32LLDesFmt_mem;
    ///////////////////////////////////////////////////////////

    typedef union  TLLDesFmt_mem
          { UNSG32 u32[1];
            struct {
            struct w32LLDesFmt_mem;
                   };
                 } TLLDesFmt_mem;

    ///////////////////////////////////////////////////////////
     SIGN32 LLDesFmt_drvrd(SIE_LLDesFmt *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 LLDesFmt_drvwr(SIE_LLDesFmt *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void LLDesFmt_reset(SIE_LLDesFmt *p);
     SIGN32 LLDesFmt_cmp  (SIE_LLDesFmt *p, SIE_LLDesFmt *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define LLDesFmt_check(p,pie,pfx,hLOG) LLDesFmt_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define LLDesFmt_print(p,    pfx,hLOG) LLDesFmt_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: LLDesFmt
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubCmdHDR                               (4,4)
///     ###
///     * 32-bit dHub command header
///     * [0:31]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 DESC                 (W-)
///               %unsigned 16 size                      
///                                    ###
///                                    * amount of data to be transferred, in bytes or MTU.
///                                    * Size of 0 is forbidden.
///                                    ###
///               %unsigned 1  sizeMTU                   
///                                    ###
///                                    * 0: size given in bytes;
///                                    * 1: size given in MTU (see dHubChCtl.CFG.MTU for MTU size definition)
///                                    ###
///               %unsigned 1  semOpMTU                  
///                                    ###
///                                    * 0: semaphore operations applied on dHubCmd level
///                                    * 1: semaphore operations applied on MTU level
///                                    ###
///               %unsigned 5  chkSemId                  
///                                    ###
///                                    * ID of semaphore to check before cmd / MTU;
///                                    * 0 indicates semaphore check is disabled
///                                    ###
///               %unsigned 5  updSemId                  
///                                    ###
///                                    * ID of semaphore to update after cmd / MTU;
///                                    * 0 indicates semaphore update is disabled
///                                    ###
///               %unsigned 1  interrupt                 
///                                    ###
///                                    * 1: raise interrupt upon command finish
///                                    * end dHubCmdHDR
///                                    ###
///               %%        3          # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      29b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubCmdHDR
#define h_dHubCmdHDR (){}

    #define     RA_dHubCmdHDR_DESC                             0x0000

    #define     BA_dHubCmdHDR_DESC_size                        0x0000
    #define     B16dHubCmdHDR_DESC_size                        0x0000
    #define   LSb32dHubCmdHDR_DESC_size                           0
    #define   LSb16dHubCmdHDR_DESC_size                           0
    #define       bdHubCmdHDR_DESC_size                        16
    #define   MSK32dHubCmdHDR_DESC_size                           0x0000FFFF

    #define     BA_dHubCmdHDR_DESC_sizeMTU                     0x0002
    #define     B16dHubCmdHDR_DESC_sizeMTU                     0x0002
    #define   LSb32dHubCmdHDR_DESC_sizeMTU                        16
    #define   LSb16dHubCmdHDR_DESC_sizeMTU                        0
    #define       bdHubCmdHDR_DESC_sizeMTU                     1
    #define   MSK32dHubCmdHDR_DESC_sizeMTU                        0x00010000

    #define     BA_dHubCmdHDR_DESC_semOpMTU                    0x0002
    #define     B16dHubCmdHDR_DESC_semOpMTU                    0x0002
    #define   LSb32dHubCmdHDR_DESC_semOpMTU                       17
    #define   LSb16dHubCmdHDR_DESC_semOpMTU                       1
    #define       bdHubCmdHDR_DESC_semOpMTU                    1
    #define   MSK32dHubCmdHDR_DESC_semOpMTU                       0x00020000

    #define     BA_dHubCmdHDR_DESC_chkSemId                    0x0002
    #define     B16dHubCmdHDR_DESC_chkSemId                    0x0002
    #define   LSb32dHubCmdHDR_DESC_chkSemId                       18
    #define   LSb16dHubCmdHDR_DESC_chkSemId                       2
    #define       bdHubCmdHDR_DESC_chkSemId                    5
    #define   MSK32dHubCmdHDR_DESC_chkSemId                       0x007C0000

    #define     BA_dHubCmdHDR_DESC_updSemId                    0x0002
    #define     B16dHubCmdHDR_DESC_updSemId                    0x0002
    #define   LSb32dHubCmdHDR_DESC_updSemId                       23
    #define   LSb16dHubCmdHDR_DESC_updSemId                       7
    #define       bdHubCmdHDR_DESC_updSemId                    5
    #define   MSK32dHubCmdHDR_DESC_updSemId                       0x0F800000

    #define     BA_dHubCmdHDR_DESC_interrupt                   0x0003
    #define     B16dHubCmdHDR_DESC_interrupt                   0x0002
    #define   LSb32dHubCmdHDR_DESC_interrupt                      28
    #define   LSb16dHubCmdHDR_DESC_interrupt                      12
    #define       bdHubCmdHDR_DESC_interrupt                   1
    #define   MSK32dHubCmdHDR_DESC_interrupt                      0x10000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubCmdHDR {
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmdHDR_DESC_size(r32)                   _BFGET_(r32,15, 0)
    #define   SET32dHubCmdHDR_DESC_size(r32,v)                 _BFSET_(r32,15, 0,v)
    #define   GET16dHubCmdHDR_DESC_size(r16)                   _BFGET_(r16,15, 0)
    #define   SET16dHubCmdHDR_DESC_size(r16,v)                 _BFSET_(r16,15, 0,v)

    #define   GET32dHubCmdHDR_DESC_sizeMTU(r32)                _BFGET_(r32,16,16)
    #define   SET32dHubCmdHDR_DESC_sizeMTU(r32,v)              _BFSET_(r32,16,16,v)
    #define   GET16dHubCmdHDR_DESC_sizeMTU(r16)                _BFGET_(r16, 0, 0)
    #define   SET16dHubCmdHDR_DESC_sizeMTU(r16,v)              _BFSET_(r16, 0, 0,v)

    #define   GET32dHubCmdHDR_DESC_semOpMTU(r32)               _BFGET_(r32,17,17)
    #define   SET32dHubCmdHDR_DESC_semOpMTU(r32,v)             _BFSET_(r32,17,17,v)
    #define   GET16dHubCmdHDR_DESC_semOpMTU(r16)               _BFGET_(r16, 1, 1)
    #define   SET16dHubCmdHDR_DESC_semOpMTU(r16,v)             _BFSET_(r16, 1, 1,v)

    #define   GET32dHubCmdHDR_DESC_chkSemId(r32)               _BFGET_(r32,22,18)
    #define   SET32dHubCmdHDR_DESC_chkSemId(r32,v)             _BFSET_(r32,22,18,v)
    #define   GET16dHubCmdHDR_DESC_chkSemId(r16)               _BFGET_(r16, 6, 2)
    #define   SET16dHubCmdHDR_DESC_chkSemId(r16,v)             _BFSET_(r16, 6, 2,v)

    #define   GET32dHubCmdHDR_DESC_updSemId(r32)               _BFGET_(r32,27,23)
    #define   SET32dHubCmdHDR_DESC_updSemId(r32,v)             _BFSET_(r32,27,23,v)
    #define   GET16dHubCmdHDR_DESC_updSemId(r16)               _BFGET_(r16,11, 7)
    #define   SET16dHubCmdHDR_DESC_updSemId(r16,v)             _BFSET_(r16,11, 7,v)

    #define   GET32dHubCmdHDR_DESC_interrupt(r32)              _BFGET_(r32,28,28)
    #define   SET32dHubCmdHDR_DESC_interrupt(r32,v)            _BFSET_(r32,28,28,v)
    #define   GET16dHubCmdHDR_DESC_interrupt(r16)              _BFGET_(r16,12,12)
    #define   SET16dHubCmdHDR_DESC_interrupt(r16,v)            _BFSET_(r16,12,12,v)

    #define     w32dHubCmdHDR_DESC                             {\
            UNSG32 uDESC_size                                  : 16;\
            UNSG32 uDESC_sizeMTU                               :  1;\
            UNSG32 uDESC_semOpMTU                              :  1;\
            UNSG32 uDESC_chkSemId                              :  5;\
            UNSG32 uDESC_updSemId                              :  5;\
            UNSG32 uDESC_interrupt                             :  1;\
            UNSG32 RSVDx0_b29                                  :  3;\
          }
    union { UNSG32 u32dHubCmdHDR_DESC;
            struct w32dHubCmdHDR_DESC;
          };
    ///////////////////////////////////////////////////////////
    } SIE_dHubCmdHDR;

    typedef union  T32dHubCmdHDR_DESC
          { UNSG32 u32;
            struct w32dHubCmdHDR_DESC;
                 } T32dHubCmdHDR_DESC;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubCmdHDR_DESC
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmdHDR_DESC;
                   };
                 } TdHubCmdHDR_DESC;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubCmdHDR_drvrd(SIE_dHubCmdHDR *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubCmdHDR_drvwr(SIE_dHubCmdHDR *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubCmdHDR_reset(SIE_dHubCmdHDR *p);
     SIGN32 dHubCmdHDR_cmp  (SIE_dHubCmdHDR *p, SIE_dHubCmdHDR *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubCmdHDR_check(p,pie,pfx,hLOG) dHubCmdHDR_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubCmdHDR_print(p,    pfx,hLOG) dHubCmdHDR_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubCmdHDR
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubCmd                 biu              (4,4)
///     ###
///     * 64-bit dHub command issued by read/write masters
///     * [0:31]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 MEM                  (W-)
///               %unsigned 32 addr                      
///                                    ###
///                                    * DRAM data address, in bytes; not necessarily MTU aligned.
///                                    * [32:63]
///                                    ###
///     @ 0x00004                      (P)
///     # 0x00004 HDR                  
///               $dHubCmdHDR          HDR               REG          
///                                    ###
///                                    * end dHubCmd
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      61b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubCmd
#define h_dHubCmd (){}

    #define     RA_dHubCmd_MEM                                 0x0000

    #define     BA_dHubCmd_MEM_addr                            0x0000
    #define     B16dHubCmd_MEM_addr                            0x0000
    #define   LSb32dHubCmd_MEM_addr                               0
    #define   LSb16dHubCmd_MEM_addr                               0
    #define       bdHubCmd_MEM_addr                            32
    #define   MSK32dHubCmd_MEM_addr                               0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmd_HDR                                 0x0004
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubCmd {
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd_MEM_addr(r32)                       _BFGET_(r32,31, 0)
    #define   SET32dHubCmd_MEM_addr(r32,v)                     _BFSET_(r32,31, 0,v)

    #define     w32dHubCmd_MEM                                 {\
            UNSG32 uMEM_addr                                   : 32;\
          }
    union { UNSG32 u32dHubCmd_MEM;
            struct w32dHubCmd_MEM;
          };
    ///////////////////////////////////////////////////////////
              SIE_dHubCmdHDR                                   ie_HDR;
    ///////////////////////////////////////////////////////////
    } SIE_dHubCmd;

    typedef union  T32dHubCmd_MEM
          { UNSG32 u32;
            struct w32dHubCmd_MEM;
                 } T32dHubCmd_MEM;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubCmd_MEM
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd_MEM;
                   };
                 } TdHubCmd_MEM;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubCmd_drvrd(SIE_dHubCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubCmd_drvwr(SIE_dHubCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubCmd_reset(SIE_dHubCmd *p);
     SIGN32 dHubCmd_cmp  (SIE_dHubCmd *p, SIE_dHubCmd *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubCmd_check(p,pie,pfx,hLOG) dHubCmd_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubCmd_print(p,    pfx,hLOG) dHubCmd_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubCmd
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubChannel             biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 CFG                  (W-)
///               %unsigned 2  MTU                       
///                                    : 8byte                     0x0
///                                    : 32byte                    0x1
///                                    : 128byte                   0x2
///                                    : 1024byte                  0x3
///                                                 ###
///                                                 * Minimum transfer unit of the channel
///                                                 ###
///               %unsigned 1  QoS                       
///                                    ###
///                                    * Write 1 to turn on QoS detection
///                                    ###
///               %unsigned 1  selfLoop                  
///                                    ###
///                                    * Write 1 to enable cmd looping support; 0 to turn off
///                                    ###
///               %unsigned 1  intrCtl                   0x0
///                                    : cmdDone                   0x0
///                                    : chIdle                    0x1
///                                                 ###
///                                                 * 0 : default vlaue, the interrupt is triggered by the finish of the dHub command if the interrupt bit is defined in the dHub command.
///                                                 * 1 : The interrupt is triggered if the dHub channel is idle ( no busy and no pending and the corresponding dHub command Q is empty).
///                                                 ###
///               %%        27         # Stuffing bits...
///     @ 0x00004 START                (W-)
///               %unsigned 1  EN                        0x0
///                                    ###
///                                    * Write 1 to enable the channel; 0 to pause the channel
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00008 CLEAR                (W-)
///               %unsigned 1  EN                        
///                                    ###
///                                    * Write anything to reset the channel controller state
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x0000C FLUSH                (W-)
///               %unsigned 1  EN                        
///                                    ###
///                                    * Write anything to start the data flushing process. Invalid for read (M2H) channels
///                                    * end dHubChannel
///                                    ###
///               %%        31         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:       8b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubChannel
#define h_dHubChannel (){}

    #define     RA_dHubChannel_CFG                             0x0000

    #define     BA_dHubChannel_CFG_MTU                         0x0000
    #define     B16dHubChannel_CFG_MTU                         0x0000
    #define   LSb32dHubChannel_CFG_MTU                            0
    #define   LSb16dHubChannel_CFG_MTU                            0
    #define       bdHubChannel_CFG_MTU                         2
    #define   MSK32dHubChannel_CFG_MTU                            0x00000003
    #define        dHubChannel_CFG_MTU_8byte                                0x0
    #define        dHubChannel_CFG_MTU_32byte                               0x1
    #define        dHubChannel_CFG_MTU_128byte                              0x2
    #define        dHubChannel_CFG_MTU_1024byte                             0x3

    #define     BA_dHubChannel_CFG_QoS                         0x0000
    #define     B16dHubChannel_CFG_QoS                         0x0000
    #define   LSb32dHubChannel_CFG_QoS                            2
    #define   LSb16dHubChannel_CFG_QoS                            2
    #define       bdHubChannel_CFG_QoS                         1
    #define   MSK32dHubChannel_CFG_QoS                            0x00000004

    #define     BA_dHubChannel_CFG_selfLoop                    0x0000
    #define     B16dHubChannel_CFG_selfLoop                    0x0000
    #define   LSb32dHubChannel_CFG_selfLoop                       3
    #define   LSb16dHubChannel_CFG_selfLoop                       3
    #define       bdHubChannel_CFG_selfLoop                    1
    #define   MSK32dHubChannel_CFG_selfLoop                       0x00000008

    #define     BA_dHubChannel_CFG_intrCtl                     0x0000
    #define     B16dHubChannel_CFG_intrCtl                     0x0000
    #define   LSb32dHubChannel_CFG_intrCtl                        4
    #define   LSb16dHubChannel_CFG_intrCtl                        4
    #define       bdHubChannel_CFG_intrCtl                     1
    #define   MSK32dHubChannel_CFG_intrCtl                        0x00000010
    #define        dHubChannel_CFG_intrCtl_cmdDone                          0x0
    #define        dHubChannel_CFG_intrCtl_chIdle                           0x1
    ///////////////////////////////////////////////////////////
    #define     RA_dHubChannel_START                           0x0004

    #define     BA_dHubChannel_START_EN                        0x0004
    #define     B16dHubChannel_START_EN                        0x0004
    #define   LSb32dHubChannel_START_EN                           0
    #define   LSb16dHubChannel_START_EN                           0
    #define       bdHubChannel_START_EN                        1
    #define   MSK32dHubChannel_START_EN                           0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_dHubChannel_CLEAR                           0x0008

    #define     BA_dHubChannel_CLEAR_EN                        0x0008
    #define     B16dHubChannel_CLEAR_EN                        0x0008
    #define   LSb32dHubChannel_CLEAR_EN                           0
    #define   LSb16dHubChannel_CLEAR_EN                           0
    #define       bdHubChannel_CLEAR_EN                        1
    #define   MSK32dHubChannel_CLEAR_EN                           0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_dHubChannel_FLUSH                           0x000C

    #define     BA_dHubChannel_FLUSH_EN                        0x000C
    #define     B16dHubChannel_FLUSH_EN                        0x000C
    #define   LSb32dHubChannel_FLUSH_EN                           0
    #define   LSb16dHubChannel_FLUSH_EN                           0
    #define       bdHubChannel_FLUSH_EN                        1
    #define   MSK32dHubChannel_FLUSH_EN                           0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubChannel {
    ///////////////////////////////////////////////////////////
    #define   GET32dHubChannel_CFG_MTU(r32)                    _BFGET_(r32, 1, 0)
    #define   SET32dHubChannel_CFG_MTU(r32,v)                  _BFSET_(r32, 1, 0,v)
    #define   GET16dHubChannel_CFG_MTU(r16)                    _BFGET_(r16, 1, 0)
    #define   SET16dHubChannel_CFG_MTU(r16,v)                  _BFSET_(r16, 1, 0,v)

    #define   GET32dHubChannel_CFG_QoS(r32)                    _BFGET_(r32, 2, 2)
    #define   SET32dHubChannel_CFG_QoS(r32,v)                  _BFSET_(r32, 2, 2,v)
    #define   GET16dHubChannel_CFG_QoS(r16)                    _BFGET_(r16, 2, 2)
    #define   SET16dHubChannel_CFG_QoS(r16,v)                  _BFSET_(r16, 2, 2,v)

    #define   GET32dHubChannel_CFG_selfLoop(r32)               _BFGET_(r32, 3, 3)
    #define   SET32dHubChannel_CFG_selfLoop(r32,v)             _BFSET_(r32, 3, 3,v)
    #define   GET16dHubChannel_CFG_selfLoop(r16)               _BFGET_(r16, 3, 3)
    #define   SET16dHubChannel_CFG_selfLoop(r16,v)             _BFSET_(r16, 3, 3,v)

    #define   GET32dHubChannel_CFG_intrCtl(r32)                _BFGET_(r32, 4, 4)
    #define   SET32dHubChannel_CFG_intrCtl(r32,v)              _BFSET_(r32, 4, 4,v)
    #define   GET16dHubChannel_CFG_intrCtl(r16)                _BFGET_(r16, 4, 4)
    #define   SET16dHubChannel_CFG_intrCtl(r16,v)              _BFSET_(r16, 4, 4,v)

    #define     w32dHubChannel_CFG                             {\
            UNSG32 uCFG_MTU                                    :  2;\
            UNSG32 uCFG_QoS                                    :  1;\
            UNSG32 uCFG_selfLoop                               :  1;\
            UNSG32 uCFG_intrCtl                                :  1;\
            UNSG32 RSVDx0_b5                                   : 27;\
          }
    union { UNSG32 u32dHubChannel_CFG;
            struct w32dHubChannel_CFG;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubChannel_START_EN(r32)                   _BFGET_(r32, 0, 0)
    #define   SET32dHubChannel_START_EN(r32,v)                 _BFSET_(r32, 0, 0,v)
    #define   GET16dHubChannel_START_EN(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16dHubChannel_START_EN(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define     w32dHubChannel_START                           {\
            UNSG32 uSTART_EN                                   :  1;\
            UNSG32 RSVDx4_b1                                   : 31;\
          }
    union { UNSG32 u32dHubChannel_START;
            struct w32dHubChannel_START;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubChannel_CLEAR_EN(r32)                   _BFGET_(r32, 0, 0)
    #define   SET32dHubChannel_CLEAR_EN(r32,v)                 _BFSET_(r32, 0, 0,v)
    #define   GET16dHubChannel_CLEAR_EN(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16dHubChannel_CLEAR_EN(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define     w32dHubChannel_CLEAR                           {\
            UNSG32 uCLEAR_EN                                   :  1;\
            UNSG32 RSVDx8_b1                                   : 31;\
          }
    union { UNSG32 u32dHubChannel_CLEAR;
            struct w32dHubChannel_CLEAR;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubChannel_FLUSH_EN(r32)                   _BFGET_(r32, 0, 0)
    #define   SET32dHubChannel_FLUSH_EN(r32,v)                 _BFSET_(r32, 0, 0,v)
    #define   GET16dHubChannel_FLUSH_EN(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16dHubChannel_FLUSH_EN(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define     w32dHubChannel_FLUSH                           {\
            UNSG32 uFLUSH_EN                                   :  1;\
            UNSG32 RSVDxC_b1                                   : 31;\
          }
    union { UNSG32 u32dHubChannel_FLUSH;
            struct w32dHubChannel_FLUSH;
          };
    ///////////////////////////////////////////////////////////
    } SIE_dHubChannel;

    typedef union  T32dHubChannel_CFG
          { UNSG32 u32;
            struct w32dHubChannel_CFG;
                 } T32dHubChannel_CFG;
    typedef union  T32dHubChannel_START
          { UNSG32 u32;
            struct w32dHubChannel_START;
                 } T32dHubChannel_START;
    typedef union  T32dHubChannel_CLEAR
          { UNSG32 u32;
            struct w32dHubChannel_CLEAR;
                 } T32dHubChannel_CLEAR;
    typedef union  T32dHubChannel_FLUSH
          { UNSG32 u32;
            struct w32dHubChannel_FLUSH;
                 } T32dHubChannel_FLUSH;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubChannel_CFG
          { UNSG32 u32[1];
            struct {
            struct w32dHubChannel_CFG;
                   };
                 } TdHubChannel_CFG;
    typedef union  TdHubChannel_START
          { UNSG32 u32[1];
            struct {
            struct w32dHubChannel_START;
                   };
                 } TdHubChannel_START;
    typedef union  TdHubChannel_CLEAR
          { UNSG32 u32[1];
            struct {
            struct w32dHubChannel_CLEAR;
                   };
                 } TdHubChannel_CLEAR;
    typedef union  TdHubChannel_FLUSH
          { UNSG32 u32[1];
            struct {
            struct w32dHubChannel_FLUSH;
                   };
                 } TdHubChannel_FLUSH;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubChannel_drvrd(SIE_dHubChannel *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubChannel_drvwr(SIE_dHubChannel *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubChannel_reset(SIE_dHubChannel *p);
     SIGN32 dHubChannel_cmp  (SIE_dHubChannel *p, SIE_dHubChannel *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubChannel_check(p,pie,pfx,hLOG) dHubChannel_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubChannel_print(p,    pfx,hLOG) dHubChannel_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubChannel
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubReg                 biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 SemaHub              
///               $SemaHub             SemaHub           REG          
///                                    ###
///                                    * For dHub internal interrupts, also provide semaphore service for external (all channels will be opened to external to access).
///                                    * Channel 0 is used for dHub.HBO interrupt.
///                                    * Channel N+1 is used for dHub.Channel[N] interrupt.
///                                    ###
///     @ 0x00400                      (P)
///     # 0x00400 HBO                  
///               $HBO                 HBO               REG          
///                                    ###
///                                    * For dHub channels (command/data queues), also provide (unused) FIFO service for external.
///                                    * Channel 2N is used for dHub.Channel[N] command.
///                                    * Channel 2N+1 is used for dHub.Channel[N] data.
///                                    ###
///     @ 0x00B00 ARR                  (P)
///     # 0x00B00 channelCtl           
///               $dHubChannel         channelCtl        REG      [16]
///                                    ###
///                                    * Up-to 16 channels
///                                    ###
///     @ 0x00C00 BUSY                 (R-)
///               %unsigned 16 ST                        
///                                    ###
///                                    * Per channel status
///                                    * 0: no ongoing command is being processed, and no flushing is taking place
///                                    * 1: channel controller is busy
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00C04 PENDING              (R-)
///               %unsigned 16 ST                        
///                                    ###
///                                    * Per channel status
///                                    * 0: Response queue is empty, meaning no outstanding AXI transactions
///                                    * 1: there exist some outstanding AXI transactions
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00C08 busRstEn             (RW-)
///               %unsigned 1  reg                       0x0
///                                    ###
///                                    * Write one to this register will trigger gate-keeper to take over the AXI bus.
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00C0C busRstDone           (R-)
///               %unsigned 1  reg                       0x1
///                                    ###
///                                    * After gate-keeper take over the AXI bus, it will assert this bit once there is no outstanding transactions on AXI bus.
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00C10 flowCtl              (P)
///               %unsigned 8  rAlpha                    0x0
///               %unsigned 8  wAlpha                    0x0
///                                    ###
///                                    * Flow control parameter for read and write axi master.
///                                    * clkCnt=(alpha*bstLen)>>4.
///                                    * This # of clock cycles will be blocked for the axi master after an axi command with the burst length of “bstLen”.
///                                    * When set alpha to be 0, the master will never be blocked.
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00C14 axiCmdCol            (P)
///               %unsigned 16 rCnt                      0x0
///               %unsigned 16 wCnt                      0x0
///                                    ###
///                                    * Axi command collection. The counter value indicate read/write do the command collection for # of clock cycles, start from the first command pushed to an empty command Q. Here are the conditions that will trigger the Axi master to send out command.
///                                    * Cmd Q full or the counter count down to “0” from the programmed value.
///                                    * Set the counter to 0 will disable the command collection.
///                                    * end dHubReg
///                                    ###
///     @ 0x00C18                      (W-)
///     #         # Stuffing bytes...
///               %% 1856
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    3328B, bits:    3282b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubReg
#define h_dHubReg (){}

    #define     RA_dHubReg_SemaHub                             0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg_HBO                                 0x0400
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg_ARR                                 0x0B00
    #define     RA_dHubReg_channelCtl                          0x0B00
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg_BUSY                                0x0C00

    #define     BA_dHubReg_BUSY_ST                             0x0C00
    #define     B16dHubReg_BUSY_ST                             0x0C00
    #define   LSb32dHubReg_BUSY_ST                                0
    #define   LSb16dHubReg_BUSY_ST                                0
    #define       bdHubReg_BUSY_ST                             16
    #define   MSK32dHubReg_BUSY_ST                                0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg_PENDING                             0x0C04

    #define     BA_dHubReg_PENDING_ST                          0x0C04
    #define     B16dHubReg_PENDING_ST                          0x0C04
    #define   LSb32dHubReg_PENDING_ST                             0
    #define   LSb16dHubReg_PENDING_ST                             0
    #define       bdHubReg_PENDING_ST                          16
    #define   MSK32dHubReg_PENDING_ST                             0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg_busRstEn                            0x0C08

    #define     BA_dHubReg_busRstEn_reg                        0x0C08
    #define     B16dHubReg_busRstEn_reg                        0x0C08
    #define   LSb32dHubReg_busRstEn_reg                           0
    #define   LSb16dHubReg_busRstEn_reg                           0
    #define       bdHubReg_busRstEn_reg                        1
    #define   MSK32dHubReg_busRstEn_reg                           0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg_busRstDone                          0x0C0C

    #define     BA_dHubReg_busRstDone_reg                      0x0C0C
    #define     B16dHubReg_busRstDone_reg                      0x0C0C
    #define   LSb32dHubReg_busRstDone_reg                         0
    #define   LSb16dHubReg_busRstDone_reg                         0
    #define       bdHubReg_busRstDone_reg                      1
    #define   MSK32dHubReg_busRstDone_reg                         0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg_flowCtl                             0x0C10

    #define     BA_dHubReg_flowCtl_rAlpha                      0x0C10
    #define     B16dHubReg_flowCtl_rAlpha                      0x0C10
    #define   LSb32dHubReg_flowCtl_rAlpha                         0
    #define   LSb16dHubReg_flowCtl_rAlpha                         0
    #define       bdHubReg_flowCtl_rAlpha                      8
    #define   MSK32dHubReg_flowCtl_rAlpha                         0x000000FF

    #define     BA_dHubReg_flowCtl_wAlpha                      0x0C11
    #define     B16dHubReg_flowCtl_wAlpha                      0x0C10
    #define   LSb32dHubReg_flowCtl_wAlpha                         8
    #define   LSb16dHubReg_flowCtl_wAlpha                         8
    #define       bdHubReg_flowCtl_wAlpha                      8
    #define   MSK32dHubReg_flowCtl_wAlpha                         0x0000FF00
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg_axiCmdCol                           0x0C14

    #define     BA_dHubReg_axiCmdCol_rCnt                      0x0C14
    #define     B16dHubReg_axiCmdCol_rCnt                      0x0C14
    #define   LSb32dHubReg_axiCmdCol_rCnt                         0
    #define   LSb16dHubReg_axiCmdCol_rCnt                         0
    #define       bdHubReg_axiCmdCol_rCnt                      16
    #define   MSK32dHubReg_axiCmdCol_rCnt                         0x0000FFFF

    #define     BA_dHubReg_axiCmdCol_wCnt                      0x0C16
    #define     B16dHubReg_axiCmdCol_wCnt                      0x0C16
    #define   LSb32dHubReg_axiCmdCol_wCnt                         16
    #define   LSb16dHubReg_axiCmdCol_wCnt                         0
    #define       bdHubReg_axiCmdCol_wCnt                      16
    #define   MSK32dHubReg_axiCmdCol_wCnt                         0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubReg {
    ///////////////////////////////////////////////////////////
              SIE_SemaHub                                      ie_SemaHub;
    ///////////////////////////////////////////////////////////
              SIE_HBO                                          ie_HBO;
    ///////////////////////////////////////////////////////////
              SIE_dHubChannel                                  ie_channelCtl[16];
    ///////////////////////////////////////////////////////////
    #define   GET32dHubReg_BUSY_ST(r32)                        _BFGET_(r32,15, 0)
    #define   SET32dHubReg_BUSY_ST(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16dHubReg_BUSY_ST(r16)                        _BFGET_(r16,15, 0)
    #define   SET16dHubReg_BUSY_ST(r16,v)                      _BFSET_(r16,15, 0,v)

    #define     w32dHubReg_BUSY                                {\
            UNSG32 uBUSY_ST                                    : 16;\
            UNSG32 RSVDxC00_b16                                : 16;\
          }
    union { UNSG32 u32dHubReg_BUSY;
            struct w32dHubReg_BUSY;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubReg_PENDING_ST(r32)                     _BFGET_(r32,15, 0)
    #define   SET32dHubReg_PENDING_ST(r32,v)                   _BFSET_(r32,15, 0,v)
    #define   GET16dHubReg_PENDING_ST(r16)                     _BFGET_(r16,15, 0)
    #define   SET16dHubReg_PENDING_ST(r16,v)                   _BFSET_(r16,15, 0,v)

    #define     w32dHubReg_PENDING                             {\
            UNSG32 uPENDING_ST                                 : 16;\
            UNSG32 RSVDxC04_b16                                : 16;\
          }
    union { UNSG32 u32dHubReg_PENDING;
            struct w32dHubReg_PENDING;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubReg_busRstEn_reg(r32)                   _BFGET_(r32, 0, 0)
    #define   SET32dHubReg_busRstEn_reg(r32,v)                 _BFSET_(r32, 0, 0,v)
    #define   GET16dHubReg_busRstEn_reg(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16dHubReg_busRstEn_reg(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define     w32dHubReg_busRstEn                            {\
            UNSG32 ubusRstEn_reg                               :  1;\
            UNSG32 RSVDxC08_b1                                 : 31;\
          }
    union { UNSG32 u32dHubReg_busRstEn;
            struct w32dHubReg_busRstEn;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubReg_busRstDone_reg(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32dHubReg_busRstDone_reg(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16dHubReg_busRstDone_reg(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16dHubReg_busRstDone_reg(r16,v)               _BFSET_(r16, 0, 0,v)

    #define     w32dHubReg_busRstDone                          {\
            UNSG32 ubusRstDone_reg                             :  1;\
            UNSG32 RSVDxC0C_b1                                 : 31;\
          }
    union { UNSG32 u32dHubReg_busRstDone;
            struct w32dHubReg_busRstDone;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubReg_flowCtl_rAlpha(r32)                 _BFGET_(r32, 7, 0)
    #define   SET32dHubReg_flowCtl_rAlpha(r32,v)               _BFSET_(r32, 7, 0,v)
    #define   GET16dHubReg_flowCtl_rAlpha(r16)                 _BFGET_(r16, 7, 0)
    #define   SET16dHubReg_flowCtl_rAlpha(r16,v)               _BFSET_(r16, 7, 0,v)

    #define   GET32dHubReg_flowCtl_wAlpha(r32)                 _BFGET_(r32,15, 8)
    #define   SET32dHubReg_flowCtl_wAlpha(r32,v)               _BFSET_(r32,15, 8,v)
    #define   GET16dHubReg_flowCtl_wAlpha(r16)                 _BFGET_(r16,15, 8)
    #define   SET16dHubReg_flowCtl_wAlpha(r16,v)               _BFSET_(r16,15, 8,v)

    #define     w32dHubReg_flowCtl                             {\
            UNSG32 uflowCtl_rAlpha                             :  8;\
            UNSG32 uflowCtl_wAlpha                             :  8;\
            UNSG32 RSVDxC10_b16                                : 16;\
          }
    union { UNSG32 u32dHubReg_flowCtl;
            struct w32dHubReg_flowCtl;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubReg_axiCmdCol_rCnt(r32)                 _BFGET_(r32,15, 0)
    #define   SET32dHubReg_axiCmdCol_rCnt(r32,v)               _BFSET_(r32,15, 0,v)
    #define   GET16dHubReg_axiCmdCol_rCnt(r16)                 _BFGET_(r16,15, 0)
    #define   SET16dHubReg_axiCmdCol_rCnt(r16,v)               _BFSET_(r16,15, 0,v)

    #define   GET32dHubReg_axiCmdCol_wCnt(r32)                 _BFGET_(r32,31,16)
    #define   SET32dHubReg_axiCmdCol_wCnt(r32,v)               _BFSET_(r32,31,16,v)
    #define   GET16dHubReg_axiCmdCol_wCnt(r16)                 _BFGET_(r16,15, 0)
    #define   SET16dHubReg_axiCmdCol_wCnt(r16,v)               _BFSET_(r16,15, 0,v)

    #define     w32dHubReg_axiCmdCol                           {\
            UNSG32 uaxiCmdCol_rCnt                             : 16;\
            UNSG32 uaxiCmdCol_wCnt                             : 16;\
          }
    union { UNSG32 u32dHubReg_axiCmdCol;
            struct w32dHubReg_axiCmdCol;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC18                                    [232];
    ///////////////////////////////////////////////////////////
    } SIE_dHubReg;

    typedef union  T32dHubReg_BUSY
          { UNSG32 u32;
            struct w32dHubReg_BUSY;
                 } T32dHubReg_BUSY;
    typedef union  T32dHubReg_PENDING
          { UNSG32 u32;
            struct w32dHubReg_PENDING;
                 } T32dHubReg_PENDING;
    typedef union  T32dHubReg_busRstEn
          { UNSG32 u32;
            struct w32dHubReg_busRstEn;
                 } T32dHubReg_busRstEn;
    typedef union  T32dHubReg_busRstDone
          { UNSG32 u32;
            struct w32dHubReg_busRstDone;
                 } T32dHubReg_busRstDone;
    typedef union  T32dHubReg_flowCtl
          { UNSG32 u32;
            struct w32dHubReg_flowCtl;
                 } T32dHubReg_flowCtl;
    typedef union  T32dHubReg_axiCmdCol
          { UNSG32 u32;
            struct w32dHubReg_axiCmdCol;
                 } T32dHubReg_axiCmdCol;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubReg_BUSY
          { UNSG32 u32[1];
            struct {
            struct w32dHubReg_BUSY;
                   };
                 } TdHubReg_BUSY;
    typedef union  TdHubReg_PENDING
          { UNSG32 u32[1];
            struct {
            struct w32dHubReg_PENDING;
                   };
                 } TdHubReg_PENDING;
    typedef union  TdHubReg_busRstEn
          { UNSG32 u32[1];
            struct {
            struct w32dHubReg_busRstEn;
                   };
                 } TdHubReg_busRstEn;
    typedef union  TdHubReg_busRstDone
          { UNSG32 u32[1];
            struct {
            struct w32dHubReg_busRstDone;
                   };
                 } TdHubReg_busRstDone;
    typedef union  TdHubReg_flowCtl
          { UNSG32 u32[1];
            struct {
            struct w32dHubReg_flowCtl;
                   };
                 } TdHubReg_flowCtl;
    typedef union  TdHubReg_axiCmdCol
          { UNSG32 u32[1];
            struct {
            struct w32dHubReg_axiCmdCol;
                   };
                 } TdHubReg_axiCmdCol;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubReg_drvrd(SIE_dHubReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubReg_drvwr(SIE_dHubReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubReg_reset(SIE_dHubReg *p);
     SIGN32 dHubReg_cmp  (SIE_dHubReg *p, SIE_dHubReg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubReg_check(p,pie,pfx,hLOG) dHubReg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubReg_print(p,    pfx,hLOG) dHubReg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubReg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubCmd2D               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 MEM                  (W-)
///               %unsigned 32 addr                      
///                                    ###
///                                    * DRAM data address of the 2D buffer, in bytes.
///                                    ###
///     @ 0x00004 DESC                 (W-)
///               %unsigned 16 stride                    
///                                    ###
///                                    * Line stride size in bytes
///                                    ###
///               %unsigned 13 numLine                   
///                                    ###
///                                    * Number of lines in buffer. Size of 0 is forbidden.
///                                    ###
///               %unsigned 2  hdrLoop                   
///                                    ###
///                                    * Size of line-loop for choosing dHubCmdHDR
///                                    * 0 is treated as 4
///                                    ###
///               %unsigned 1  interrupt                 
///                                    ###
///                                    * 1: raise interrupt upon whole 2D command finish.
///                                    * 1: set the last 1D command interrupt bit.
///                                    * 0 : use the default 1D command interrupt bit.
///                                    ###
///     @ 0x00008 START                (W-)
///               %unsigned 1  EN                        0x0
///                                    ###
///                                    * Write 1 to enable the channel; 0 to pause the channel
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x0000C CLEAR                (W-)
///               %unsigned 1  EN                        
///                                    ###
///                                    * Write anything to reset the 2D engine.
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00010                      (P)
///     # 0x00010 HDR                  
///               $dHubCmdHDR          HDR               REG       [4]
///                                    ###
///                                    * Headers used in generating dHubCmd for each line in looping order, loop size (1,2,3,4) specified by DESC_hdrLoop
///                                    * end dHubCmd2D
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      32B, bits:     182b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubCmd2D
#define h_dHubCmd2D (){}

    #define     RA_dHubCmd2D_MEM                               0x0000

    #define     BA_dHubCmd2D_MEM_addr                          0x0000
    #define     B16dHubCmd2D_MEM_addr                          0x0000
    #define   LSb32dHubCmd2D_MEM_addr                             0
    #define   LSb16dHubCmd2D_MEM_addr                             0
    #define       bdHubCmd2D_MEM_addr                          32
    #define   MSK32dHubCmd2D_MEM_addr                             0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmd2D_DESC                              0x0004

    #define     BA_dHubCmd2D_DESC_stride                       0x0004
    #define     B16dHubCmd2D_DESC_stride                       0x0004
    #define   LSb32dHubCmd2D_DESC_stride                          0
    #define   LSb16dHubCmd2D_DESC_stride                          0
    #define       bdHubCmd2D_DESC_stride                       16
    #define   MSK32dHubCmd2D_DESC_stride                          0x0000FFFF

    #define     BA_dHubCmd2D_DESC_numLine                      0x0006
    #define     B16dHubCmd2D_DESC_numLine                      0x0006
    #define   LSb32dHubCmd2D_DESC_numLine                         16
    #define   LSb16dHubCmd2D_DESC_numLine                         0
    #define       bdHubCmd2D_DESC_numLine                      13
    #define   MSK32dHubCmd2D_DESC_numLine                         0x1FFF0000

    #define     BA_dHubCmd2D_DESC_hdrLoop                      0x0007
    #define     B16dHubCmd2D_DESC_hdrLoop                      0x0006
    #define   LSb32dHubCmd2D_DESC_hdrLoop                         29
    #define   LSb16dHubCmd2D_DESC_hdrLoop                         13
    #define       bdHubCmd2D_DESC_hdrLoop                      2
    #define   MSK32dHubCmd2D_DESC_hdrLoop                         0x60000000

    #define     BA_dHubCmd2D_DESC_interrupt                    0x0007
    #define     B16dHubCmd2D_DESC_interrupt                    0x0006
    #define   LSb32dHubCmd2D_DESC_interrupt                       31
    #define   LSb16dHubCmd2D_DESC_interrupt                       15
    #define       bdHubCmd2D_DESC_interrupt                    1
    #define   MSK32dHubCmd2D_DESC_interrupt                       0x80000000
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmd2D_START                             0x0008

    #define     BA_dHubCmd2D_START_EN                          0x0008
    #define     B16dHubCmd2D_START_EN                          0x0008
    #define   LSb32dHubCmd2D_START_EN                             0
    #define   LSb16dHubCmd2D_START_EN                             0
    #define       bdHubCmd2D_START_EN                          1
    #define   MSK32dHubCmd2D_START_EN                             0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmd2D_CLEAR                             0x000C

    #define     BA_dHubCmd2D_CLEAR_EN                          0x000C
    #define     B16dHubCmd2D_CLEAR_EN                          0x000C
    #define   LSb32dHubCmd2D_CLEAR_EN                             0
    #define   LSb16dHubCmd2D_CLEAR_EN                             0
    #define       bdHubCmd2D_CLEAR_EN                          1
    #define   MSK32dHubCmd2D_CLEAR_EN                             0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_dHubCmd2D_HDR                               0x0010
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubCmd2D {
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd2D_MEM_addr(r32)                     _BFGET_(r32,31, 0)
    #define   SET32dHubCmd2D_MEM_addr(r32,v)                   _BFSET_(r32,31, 0,v)

    #define     w32dHubCmd2D_MEM                               {\
            UNSG32 uMEM_addr                                   : 32;\
          }
    union { UNSG32 u32dHubCmd2D_MEM;
            struct w32dHubCmd2D_MEM;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd2D_DESC_stride(r32)                  _BFGET_(r32,15, 0)
    #define   SET32dHubCmd2D_DESC_stride(r32,v)                _BFSET_(r32,15, 0,v)
    #define   GET16dHubCmd2D_DESC_stride(r16)                  _BFGET_(r16,15, 0)
    #define   SET16dHubCmd2D_DESC_stride(r16,v)                _BFSET_(r16,15, 0,v)

    #define   GET32dHubCmd2D_DESC_numLine(r32)                 _BFGET_(r32,28,16)
    #define   SET32dHubCmd2D_DESC_numLine(r32,v)               _BFSET_(r32,28,16,v)
    #define   GET16dHubCmd2D_DESC_numLine(r16)                 _BFGET_(r16,12, 0)
    #define   SET16dHubCmd2D_DESC_numLine(r16,v)               _BFSET_(r16,12, 0,v)

    #define   GET32dHubCmd2D_DESC_hdrLoop(r32)                 _BFGET_(r32,30,29)
    #define   SET32dHubCmd2D_DESC_hdrLoop(r32,v)               _BFSET_(r32,30,29,v)
    #define   GET16dHubCmd2D_DESC_hdrLoop(r16)                 _BFGET_(r16,14,13)
    #define   SET16dHubCmd2D_DESC_hdrLoop(r16,v)               _BFSET_(r16,14,13,v)

    #define   GET32dHubCmd2D_DESC_interrupt(r32)               _BFGET_(r32,31,31)
    #define   SET32dHubCmd2D_DESC_interrupt(r32,v)             _BFSET_(r32,31,31,v)
    #define   GET16dHubCmd2D_DESC_interrupt(r16)               _BFGET_(r16,15,15)
    #define   SET16dHubCmd2D_DESC_interrupt(r16,v)             _BFSET_(r16,15,15,v)

    #define     w32dHubCmd2D_DESC                              {\
            UNSG32 uDESC_stride                                : 16;\
            UNSG32 uDESC_numLine                               : 13;\
            UNSG32 uDESC_hdrLoop                               :  2;\
            UNSG32 uDESC_interrupt                             :  1;\
          }
    union { UNSG32 u32dHubCmd2D_DESC;
            struct w32dHubCmd2D_DESC;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd2D_START_EN(r32)                     _BFGET_(r32, 0, 0)
    #define   SET32dHubCmd2D_START_EN(r32,v)                   _BFSET_(r32, 0, 0,v)
    #define   GET16dHubCmd2D_START_EN(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16dHubCmd2D_START_EN(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define     w32dHubCmd2D_START                             {\
            UNSG32 uSTART_EN                                   :  1;\
            UNSG32 RSVDx8_b1                                   : 31;\
          }
    union { UNSG32 u32dHubCmd2D_START;
            struct w32dHubCmd2D_START;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dHubCmd2D_CLEAR_EN(r32)                     _BFGET_(r32, 0, 0)
    #define   SET32dHubCmd2D_CLEAR_EN(r32,v)                   _BFSET_(r32, 0, 0,v)
    #define   GET16dHubCmd2D_CLEAR_EN(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16dHubCmd2D_CLEAR_EN(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define     w32dHubCmd2D_CLEAR                             {\
            UNSG32 uCLEAR_EN                                   :  1;\
            UNSG32 RSVDxC_b1                                   : 31;\
          }
    union { UNSG32 u32dHubCmd2D_CLEAR;
            struct w32dHubCmd2D_CLEAR;
          };
    ///////////////////////////////////////////////////////////
              SIE_dHubCmdHDR                                   ie_HDR[4];
    ///////////////////////////////////////////////////////////
    } SIE_dHubCmd2D;

    typedef union  T32dHubCmd2D_MEM
          { UNSG32 u32;
            struct w32dHubCmd2D_MEM;
                 } T32dHubCmd2D_MEM;
    typedef union  T32dHubCmd2D_DESC
          { UNSG32 u32;
            struct w32dHubCmd2D_DESC;
                 } T32dHubCmd2D_DESC;
    typedef union  T32dHubCmd2D_START
          { UNSG32 u32;
            struct w32dHubCmd2D_START;
                 } T32dHubCmd2D_START;
    typedef union  T32dHubCmd2D_CLEAR
          { UNSG32 u32;
            struct w32dHubCmd2D_CLEAR;
                 } T32dHubCmd2D_CLEAR;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubCmd2D_MEM
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd2D_MEM;
                   };
                 } TdHubCmd2D_MEM;
    typedef union  TdHubCmd2D_DESC
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd2D_DESC;
                   };
                 } TdHubCmd2D_DESC;
    typedef union  TdHubCmd2D_START
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd2D_START;
                   };
                 } TdHubCmd2D_START;
    typedef union  TdHubCmd2D_CLEAR
          { UNSG32 u32[1];
            struct {
            struct w32dHubCmd2D_CLEAR;
                   };
                 } TdHubCmd2D_CLEAR;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubCmd2D_drvrd(SIE_dHubCmd2D *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubCmd2D_drvwr(SIE_dHubCmd2D *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubCmd2D_reset(SIE_dHubCmd2D *p);
     SIGN32 dHubCmd2D_cmp  (SIE_dHubCmd2D *p, SIE_dHubCmd2D *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubCmd2D_check(p,pie,pfx,hLOG) dHubCmd2D_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubCmd2D_print(p,    pfx,hLOG) dHubCmd2D_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubCmd2D
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubQuery                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 RESP                 (R-)
///               %unsigned 16 ST                        
///                                    ###
///                                    * Dhub channel state machine status.
///                                    ###
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubQuery
#define h_dHubQuery (){}

    #define     RA_dHubQuery_RESP                              0x0000

    #define     BA_dHubQuery_RESP_ST                           0x0000
    #define     B16dHubQuery_RESP_ST                           0x0000
    #define   LSb32dHubQuery_RESP_ST                              0
    #define   LSb16dHubQuery_RESP_ST                              0
    #define       bdHubQuery_RESP_ST                           16
    #define   MSK32dHubQuery_RESP_ST                              0x0000FFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubQuery {
    ///////////////////////////////////////////////////////////
    #define   GET32dHubQuery_RESP_ST(r32)                      _BFGET_(r32,15, 0)
    #define   SET32dHubQuery_RESP_ST(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16dHubQuery_RESP_ST(r16)                      _BFGET_(r16,15, 0)
    #define   SET16dHubQuery_RESP_ST(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32dHubQuery_RESP                              {\
            UNSG32 uRESP_ST                                    : 16;\
            UNSG32 RSVDx0_b16                                  : 16;\
          }
    union { UNSG32 u32dHubQuery_RESP;
            struct w32dHubQuery_RESP;
          };
    ///////////////////////////////////////////////////////////
    } SIE_dHubQuery;

    typedef union  T32dHubQuery_RESP
          { UNSG32 u32;
            struct w32dHubQuery_RESP;
                 } T32dHubQuery_RESP;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubQuery_RESP
          { UNSG32 u32[1];
            struct {
            struct w32dHubQuery_RESP;
                   };
                 } TdHubQuery_RESP;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubQuery_drvrd(SIE_dHubQuery *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubQuery_drvwr(SIE_dHubQuery *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubQuery_reset(SIE_dHubQuery *p);
     SIGN32 dHubQuery_cmp  (SIE_dHubQuery *p, SIE_dHubQuery *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubQuery_check(p,pie,pfx,hLOG) dHubQuery_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubQuery_print(p,    pfx,hLOG) dHubQuery_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubQuery
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dHubReg2D               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 dHub                 
///               $dHubReg             dHub              REG          
///     @ 0x00D00 ARR                  (P)
///     # 0x00D00 Cmd2D                
///               $dHubCmd2D           Cmd2D             REG      [16]
///                                    ###
///                                    * Up-to 16 2D channels.
///                                    * 2D Channel[N] is connected to dHub.Channel[N] command queue, that is, dHub.HBO.Channel[2N]
///                                    * Note: Number of 2D channels could be less than dHub channels (rest of are 1D only)
///                                    ###
///     @ 0x00F00 BUSY                 (R-)
///               %unsigned 16 ST                        
///                                    ###
///                                    * Per channel status
///                                    * 0: no ongoing command is being processed
///                                    * 1: channel controller is busy
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00F04                      (W-)
///     #         # Stuffing bytes...
///               %% 480
///     @ 0x00F40                      (P)
///     # 0x00F40 CH_ST                
///               $dHubQuery           CH_ST             MEM      [16]
///                                    ###
///                                    * end dHubReg2D
///                                    ###
///     @ 0x00F80                      (W-)
///     #         # Stuffing bytes...
///               %% 1024
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    4096B, bits:    6242b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dHubReg2D
#define h_dHubReg2D (){}

    #define     RA_dHubReg2D_dHub                              0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg2D_ARR                               0x0D00
    #define     RA_dHubReg2D_Cmd2D                             0x0D00
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg2D_BUSY                              0x0F00

    #define     BA_dHubReg2D_BUSY_ST                           0x0F00
    #define     B16dHubReg2D_BUSY_ST                           0x0F00
    #define   LSb32dHubReg2D_BUSY_ST                              0
    #define   LSb16dHubReg2D_BUSY_ST                              0
    #define       bdHubReg2D_BUSY_ST                           16
    #define   MSK32dHubReg2D_BUSY_ST                              0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dHubReg2D_CH_ST                             0x0F40
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dHubReg2D {
    ///////////////////////////////////////////////////////////
              SIE_dHubReg                                      ie_dHub;
    ///////////////////////////////////////////////////////////
              SIE_dHubCmd2D                                    ie_Cmd2D[16];
    ///////////////////////////////////////////////////////////
    #define   GET32dHubReg2D_BUSY_ST(r32)                      _BFGET_(r32,15, 0)
    #define   SET32dHubReg2D_BUSY_ST(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16dHubReg2D_BUSY_ST(r16)                      _BFGET_(r16,15, 0)
    #define   SET16dHubReg2D_BUSY_ST(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32dHubReg2D_BUSY                              {\
            UNSG32 uBUSY_ST                                    : 16;\
            UNSG32 RSVDxF00_b16                                : 16;\
          }
    union { UNSG32 u32dHubReg2D_BUSY;
            struct w32dHubReg2D_BUSY;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxF04                                    [60];
    ///////////////////////////////////////////////////////////
              SIE_dHubQuery                                    ie_CH_ST[16];
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxF80                                    [128];
    ///////////////////////////////////////////////////////////
    } SIE_dHubReg2D;

    typedef union  T32dHubReg2D_BUSY
          { UNSG32 u32;
            struct w32dHubReg2D_BUSY;
                 } T32dHubReg2D_BUSY;
    ///////////////////////////////////////////////////////////

    typedef union  TdHubReg2D_BUSY
          { UNSG32 u32[1];
            struct {
            struct w32dHubReg2D_BUSY;
                   };
                 } TdHubReg2D_BUSY;

    ///////////////////////////////////////////////////////////
     SIGN32 dHubReg2D_drvrd(SIE_dHubReg2D *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dHubReg2D_drvwr(SIE_dHubReg2D *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dHubReg2D_reset(SIE_dHubReg2D *p);
     SIGN32 dHubReg2D_cmp  (SIE_dHubReg2D *p, SIE_dHubReg2D *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dHubReg2D_check(p,pie,pfx,hLOG) dHubReg2D_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dHubReg2D_print(p,    pfx,hLOG) dHubReg2D_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dHubReg2D
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE crcTblEntry                              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 32 word                      
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_crcTblEntry
#define h_crcTblEntry (){}

    #define     BA_crcTblEntry_word                            0x0000
    #define     B16crcTblEntry_word                            0x0000
    #define   LSb32crcTblEntry_word                               0
    #define   LSb16crcTblEntry_word                               0
    #define       bcrcTblEntry_word                            32
    #define   MSK32crcTblEntry_word                               0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_crcTblEntry {
    ///////////////////////////////////////////////////////////
    #define   GET32crcTblEntry_word(r32)                       _BFGET_(r32,31, 0)
    #define   SET32crcTblEntry_word(r32,v)                     _BFSET_(r32,31, 0,v)

            UNSG32 u_word                                      : 32;
    ///////////////////////////////////////////////////////////
    } SIE_crcTblEntry;

    ///////////////////////////////////////////////////////////
     SIGN32 crcTblEntry_drvrd(SIE_crcTblEntry *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 crcTblEntry_drvwr(SIE_crcTblEntry *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void crcTblEntry_reset(SIE_crcTblEntry *p);
     SIGN32 crcTblEntry_cmp  (SIE_crcTblEntry *p, SIE_crcTblEntry *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define crcTblEntry_check(p,pie,pfx,hLOG) crcTblEntry_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define crcTblEntry_print(p,    pfx,hLOG) crcTblEntry_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: crcTblEntry
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE crcCell                 biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 Auto                 (P)
///               %unsigned 1  clr_sum                   0x1
///               %unsigned 1  clr_cnt                   0x1
///               %unsigned 1  latch                     0x1
///                                    ###
///                                    * “1” to enable the auto operation
///                                    ###
///               %%        29         # Stuffing bits...
///     @ 0x00004 Manual               (RW-)
///               %unsigned 1  clr_sum                   
///               %unsigned 1  clr_cnt                   
///               %unsigned 1  latch                     
///                                    ###
///                                    * Write 1 the bit field for corresponding manual operation.
///                                    ###
///               %%        29         # Stuffing bits...
///     @ 0x00008 Latch                (P)
///               %unsigned 32 cnt                       0x64
///                                    ###
///                                    * When auto latch is enabled, the latch operation will be triggered when the number of data transaction is reached.
///                                    ###
///     @ 0x0000C cnt                  (R-)
///               %unsigned 32 val                       
///                                    ###
///                                    * The data transaction counter.
///                                    ###
///     @ 0x00010                      (W-)
///     #         # Stuffing bytes...
///               %% 128
///     @ 0x00020 CRCTBL               (R-)
///     # 0x00020 sum                  
///               $crcTblEntry         sum               MEM       [8]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      64B, bits:     102b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_crcCell
#define h_crcCell (){}

    #define     RA_crcCell_Auto                                0x0000

    #define     BA_crcCell_Auto_clr_sum                        0x0000
    #define     B16crcCell_Auto_clr_sum                        0x0000
    #define   LSb32crcCell_Auto_clr_sum                           0
    #define   LSb16crcCell_Auto_clr_sum                           0
    #define       bcrcCell_Auto_clr_sum                        1
    #define   MSK32crcCell_Auto_clr_sum                           0x00000001

    #define     BA_crcCell_Auto_clr_cnt                        0x0000
    #define     B16crcCell_Auto_clr_cnt                        0x0000
    #define   LSb32crcCell_Auto_clr_cnt                           1
    #define   LSb16crcCell_Auto_clr_cnt                           1
    #define       bcrcCell_Auto_clr_cnt                        1
    #define   MSK32crcCell_Auto_clr_cnt                           0x00000002

    #define     BA_crcCell_Auto_latch                          0x0000
    #define     B16crcCell_Auto_latch                          0x0000
    #define   LSb32crcCell_Auto_latch                             2
    #define   LSb16crcCell_Auto_latch                             2
    #define       bcrcCell_Auto_latch                          1
    #define   MSK32crcCell_Auto_latch                             0x00000004
    ///////////////////////////////////////////////////////////
    #define     RA_crcCell_Manual                              0x0004

    #define     BA_crcCell_Manual_clr_sum                      0x0004
    #define     B16crcCell_Manual_clr_sum                      0x0004
    #define   LSb32crcCell_Manual_clr_sum                         0
    #define   LSb16crcCell_Manual_clr_sum                         0
    #define       bcrcCell_Manual_clr_sum                      1
    #define   MSK32crcCell_Manual_clr_sum                         0x00000001

    #define     BA_crcCell_Manual_clr_cnt                      0x0004
    #define     B16crcCell_Manual_clr_cnt                      0x0004
    #define   LSb32crcCell_Manual_clr_cnt                         1
    #define   LSb16crcCell_Manual_clr_cnt                         1
    #define       bcrcCell_Manual_clr_cnt                      1
    #define   MSK32crcCell_Manual_clr_cnt                         0x00000002

    #define     BA_crcCell_Manual_latch                        0x0004
    #define     B16crcCell_Manual_latch                        0x0004
    #define   LSb32crcCell_Manual_latch                           2
    #define   LSb16crcCell_Manual_latch                           2
    #define       bcrcCell_Manual_latch                        1
    #define   MSK32crcCell_Manual_latch                           0x00000004
    ///////////////////////////////////////////////////////////
    #define     RA_crcCell_Latch                               0x0008

    #define     BA_crcCell_Latch_cnt                           0x0008
    #define     B16crcCell_Latch_cnt                           0x0008
    #define   LSb32crcCell_Latch_cnt                              0
    #define   LSb16crcCell_Latch_cnt                              0
    #define       bcrcCell_Latch_cnt                           32
    #define   MSK32crcCell_Latch_cnt                              0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_crcCell_cnt                                 0x000C

    #define     BA_crcCell_cnt_val                             0x000C
    #define     B16crcCell_cnt_val                             0x000C
    #define   LSb32crcCell_cnt_val                                0
    #define   LSb16crcCell_cnt_val                                0
    #define       bcrcCell_cnt_val                             32
    #define   MSK32crcCell_cnt_val                                0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_crcCell_CRCTBL                              0x0020
    #define     RA_crcCell_sum                                 0x0020
    ///////////////////////////////////////////////////////////

    typedef struct SIE_crcCell {
    ///////////////////////////////////////////////////////////
    #define   GET32crcCell_Auto_clr_sum(r32)                   _BFGET_(r32, 0, 0)
    #define   SET32crcCell_Auto_clr_sum(r32,v)                 _BFSET_(r32, 0, 0,v)
    #define   GET16crcCell_Auto_clr_sum(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16crcCell_Auto_clr_sum(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define   GET32crcCell_Auto_clr_cnt(r32)                   _BFGET_(r32, 1, 1)
    #define   SET32crcCell_Auto_clr_cnt(r32,v)                 _BFSET_(r32, 1, 1,v)
    #define   GET16crcCell_Auto_clr_cnt(r16)                   _BFGET_(r16, 1, 1)
    #define   SET16crcCell_Auto_clr_cnt(r16,v)                 _BFSET_(r16, 1, 1,v)

    #define   GET32crcCell_Auto_latch(r32)                     _BFGET_(r32, 2, 2)
    #define   SET32crcCell_Auto_latch(r32,v)                   _BFSET_(r32, 2, 2,v)
    #define   GET16crcCell_Auto_latch(r16)                     _BFGET_(r16, 2, 2)
    #define   SET16crcCell_Auto_latch(r16,v)                   _BFSET_(r16, 2, 2,v)

    #define     w32crcCell_Auto                                {\
            UNSG32 uAuto_clr_sum                               :  1;\
            UNSG32 uAuto_clr_cnt                               :  1;\
            UNSG32 uAuto_latch                                 :  1;\
            UNSG32 RSVDx0_b3                                   : 29;\
          }
    union { UNSG32 u32crcCell_Auto;
            struct w32crcCell_Auto;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32crcCell_Manual_clr_sum(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32crcCell_Manual_clr_sum(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16crcCell_Manual_clr_sum(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16crcCell_Manual_clr_sum(r16,v)               _BFSET_(r16, 0, 0,v)

    #define   GET32crcCell_Manual_clr_cnt(r32)                 _BFGET_(r32, 1, 1)
    #define   SET32crcCell_Manual_clr_cnt(r32,v)               _BFSET_(r32, 1, 1,v)
    #define   GET16crcCell_Manual_clr_cnt(r16)                 _BFGET_(r16, 1, 1)
    #define   SET16crcCell_Manual_clr_cnt(r16,v)               _BFSET_(r16, 1, 1,v)

    #define   GET32crcCell_Manual_latch(r32)                   _BFGET_(r32, 2, 2)
    #define   SET32crcCell_Manual_latch(r32,v)                 _BFSET_(r32, 2, 2,v)
    #define   GET16crcCell_Manual_latch(r16)                   _BFGET_(r16, 2, 2)
    #define   SET16crcCell_Manual_latch(r16,v)                 _BFSET_(r16, 2, 2,v)

    #define     w32crcCell_Manual                              {\
            UNSG32 uManual_clr_sum                             :  1;\
            UNSG32 uManual_clr_cnt                             :  1;\
            UNSG32 uManual_latch                               :  1;\
            UNSG32 RSVDx4_b3                                   : 29;\
          }
    union { UNSG32 u32crcCell_Manual;
            struct w32crcCell_Manual;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32crcCell_Latch_cnt(r32)                      _BFGET_(r32,31, 0)
    #define   SET32crcCell_Latch_cnt(r32,v)                    _BFSET_(r32,31, 0,v)

    #define     w32crcCell_Latch                               {\
            UNSG32 uLatch_cnt                                  : 32;\
          }
    union { UNSG32 u32crcCell_Latch;
            struct w32crcCell_Latch;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32crcCell_cnt_val(r32)                        _BFGET_(r32,31, 0)
    #define   SET32crcCell_cnt_val(r32,v)                      _BFSET_(r32,31, 0,v)

    #define     w32crcCell_cnt                                 {\
            UNSG32 ucnt_val                                    : 32;\
          }
    union { UNSG32 u32crcCell_cnt;
            struct w32crcCell_cnt;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx10                                     [16];
    ///////////////////////////////////////////////////////////
              SIE_crcTblEntry                                  ie_sum[8];
    ///////////////////////////////////////////////////////////
    } SIE_crcCell;

    typedef union  T32crcCell_Auto
          { UNSG32 u32;
            struct w32crcCell_Auto;
                 } T32crcCell_Auto;
    typedef union  T32crcCell_Manual
          { UNSG32 u32;
            struct w32crcCell_Manual;
                 } T32crcCell_Manual;
    typedef union  T32crcCell_Latch
          { UNSG32 u32;
            struct w32crcCell_Latch;
                 } T32crcCell_Latch;
    typedef union  T32crcCell_cnt
          { UNSG32 u32;
            struct w32crcCell_cnt;
                 } T32crcCell_cnt;
    ///////////////////////////////////////////////////////////

    typedef union  TcrcCell_Auto
          { UNSG32 u32[1];
            struct {
            struct w32crcCell_Auto;
                   };
                 } TcrcCell_Auto;
    typedef union  TcrcCell_Manual
          { UNSG32 u32[1];
            struct {
            struct w32crcCell_Manual;
                   };
                 } TcrcCell_Manual;
    typedef union  TcrcCell_Latch
          { UNSG32 u32[1];
            struct {
            struct w32crcCell_Latch;
                   };
                 } TcrcCell_Latch;
    typedef union  TcrcCell_cnt
          { UNSG32 u32[1];
            struct {
            struct w32crcCell_cnt;
                   };
                 } TcrcCell_cnt;

    ///////////////////////////////////////////////////////////
     SIGN32 crcCell_drvrd(SIE_crcCell *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 crcCell_drvwr(SIE_crcCell *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void crcCell_reset(SIE_crcCell *p);
     SIGN32 crcCell_cmp  (SIE_crcCell *p, SIE_crcCell *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define crcCell_check(p,pie,pfx,hLOG) crcCell_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define crcCell_print(p,    pfx,hLOG) crcCell_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: crcCell
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE crcArr                  biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 CRCARR               (P)
///     # 0x00000 crcArr               
///               $crcCell             crcArr            REG       [8]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:     816b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_crcArr
#define h_crcArr (){}

    #define     RA_crcArr_CRCARR                               0x0000
    #define     RA_crcArr_crcArr                               0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_crcArr {
    ///////////////////////////////////////////////////////////
              SIE_crcCell                                      ie_crcArr[8];
    ///////////////////////////////////////////////////////////
    } SIE_crcArr;

    ///////////////////////////////////////////////////////////
     SIGN32 crcArr_drvrd(SIE_crcArr *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 crcArr_drvwr(SIE_crcArr *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void crcArr_reset(SIE_crcArr *p);
     SIGN32 crcArr_cmp  (SIE_crcArr *p, SIE_crcArr *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define crcArr_check(p,pie,pfx,hLOG) crcArr_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define crcArr_print(p,    pfx,hLOG) crcArr_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: crcArr
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE crcHub                  biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 CRCARR               (P)
///     # 0x00000 crcArr0              
///               $crcArr              crcArr0           REG          
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:     816b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_crcHub
#define h_crcHub (){}

    #define     RA_crcHub_CRCARR                               0x0000
    #define     RA_crcHub_crcArr0                              0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_crcHub {
    ///////////////////////////////////////////////////////////
              SIE_crcArr                                       ie_crcArr0;
    ///////////////////////////////////////////////////////////
    } SIE_crcHub;

    ///////////////////////////////////////////////////////////
     SIGN32 crcHub_drvrd(SIE_crcHub *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 crcHub_drvwr(SIE_crcHub *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void crcHub_reset(SIE_crcHub *p);
     SIGN32 crcHub_cmp  (SIE_crcHub *p, SIE_crcHub *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define crcHub_check(p,pie,pfx,hLOG) crcHub_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define crcHub_print(p,    pfx,hLOG) crcHub_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: crcHub
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE DSmsg                   biu              (4,4)
///     ###
///     * Data Streamer message format
///     * [00:31]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 13 count                     
///                                    ###
///                                    * number of bytes to transfer, the starting address is byte aligned.
///                                    ###
///               %unsigned 1  NOS                       
///                                    ###
///                                    * No outstanding
///                                    * 1: this command will not be executed until the completion of all the previous command.
///                                    * 0: This command can be executed without checking the previous command completion status.
///                                    ###
///               %unsigned 1  dir                       
///                                    : m2h                       0x0
///                                                 ###
///                                                 * Data transfer from external memory to HBO
///                                                 ###
///                                    : h2m                       0x1
///                                                 ###
///                                                 * Data transfer from HBO to external memory
///                                                 ###
///               %unsigned 1  intr                      
///                                    ###
///                                    * Setting to 1 forces Data Streamer to raise interrupt after command completion
///                                    ###
///               %unsigned 16 hboAdr                    
///                                    ###
///                                    * HBO byte address for data transfer
///                                    * [32:63]
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 32 memAdr                    
///                                    ###
///                                    * Memory address equivalent to DDR addr [31:0];
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_DSmsg
#define h_DSmsg (){}

    #define     BA_DSmsg_count                                 0x0000
    #define     B16DSmsg_count                                 0x0000
    #define   LSb32DSmsg_count                                    0
    #define   LSb16DSmsg_count                                    0
    #define       bDSmsg_count                                 13
    #define   MSK32DSmsg_count                                    0x00001FFF

    #define     BA_DSmsg_NOS                                   0x0001
    #define     B16DSmsg_NOS                                   0x0000
    #define   LSb32DSmsg_NOS                                      13
    #define   LSb16DSmsg_NOS                                      13
    #define       bDSmsg_NOS                                   1
    #define   MSK32DSmsg_NOS                                      0x00002000

    #define     BA_DSmsg_dir                                   0x0001
    #define     B16DSmsg_dir                                   0x0000
    #define   LSb32DSmsg_dir                                      14
    #define   LSb16DSmsg_dir                                      14
    #define       bDSmsg_dir                                   1
    #define   MSK32DSmsg_dir                                      0x00004000
    #define        DSmsg_dir_m2h                                            0x0
    #define        DSmsg_dir_h2m                                            0x1

    #define     BA_DSmsg_intr                                  0x0001
    #define     B16DSmsg_intr                                  0x0000
    #define   LSb32DSmsg_intr                                     15
    #define   LSb16DSmsg_intr                                     15
    #define       bDSmsg_intr                                  1
    #define   MSK32DSmsg_intr                                     0x00008000

    #define     BA_DSmsg_hboAdr                                0x0002
    #define     B16DSmsg_hboAdr                                0x0002
    #define   LSb32DSmsg_hboAdr                                   16
    #define   LSb16DSmsg_hboAdr                                   0
    #define       bDSmsg_hboAdr                                16
    #define   MSK32DSmsg_hboAdr                                   0xFFFF0000
    ///////////////////////////////////////////////////////////

    #define     BA_DSmsg_memAdr                                0x0004
    #define     B16DSmsg_memAdr                                0x0004
    #define   LSb32DSmsg_memAdr                                   0
    #define   LSb16DSmsg_memAdr                                   0
    #define       bDSmsg_memAdr                                32
    #define   MSK32DSmsg_memAdr                                   0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_DSmsg {
    ///////////////////////////////////////////////////////////
    #define   GET32DSmsg_count(r32)                            _BFGET_(r32,12, 0)
    #define   SET32DSmsg_count(r32,v)                          _BFSET_(r32,12, 0,v)
    #define   GET16DSmsg_count(r16)                            _BFGET_(r16,12, 0)
    #define   SET16DSmsg_count(r16,v)                          _BFSET_(r16,12, 0,v)

    #define   GET32DSmsg_NOS(r32)                              _BFGET_(r32,13,13)
    #define   SET32DSmsg_NOS(r32,v)                            _BFSET_(r32,13,13,v)
    #define   GET16DSmsg_NOS(r16)                              _BFGET_(r16,13,13)
    #define   SET16DSmsg_NOS(r16,v)                            _BFSET_(r16,13,13,v)

    #define   GET32DSmsg_dir(r32)                              _BFGET_(r32,14,14)
    #define   SET32DSmsg_dir(r32,v)                            _BFSET_(r32,14,14,v)
    #define   GET16DSmsg_dir(r16)                              _BFGET_(r16,14,14)
    #define   SET16DSmsg_dir(r16,v)                            _BFSET_(r16,14,14,v)

    #define   GET32DSmsg_intr(r32)                             _BFGET_(r32,15,15)
    #define   SET32DSmsg_intr(r32,v)                           _BFSET_(r32,15,15,v)
    #define   GET16DSmsg_intr(r16)                             _BFGET_(r16,15,15)
    #define   SET16DSmsg_intr(r16,v)                           _BFSET_(r16,15,15,v)

    #define   GET32DSmsg_hboAdr(r32)                           _BFGET_(r32,31,16)
    #define   SET32DSmsg_hboAdr(r32,v)                         _BFSET_(r32,31,16,v)
    #define   GET16DSmsg_hboAdr(r16)                           _BFGET_(r16,15, 0)
    #define   SET16DSmsg_hboAdr(r16,v)                         _BFSET_(r16,15, 0,v)

            UNSG32 u_count                                     : 13;
            UNSG32 u_NOS                                       :  1;
            UNSG32 u_dir                                       :  1;
            UNSG32 u_intr                                      :  1;
            UNSG32 u_hboAdr                                    : 16;
    ///////////////////////////////////////////////////////////
    #define   GET32DSmsg_memAdr(r32)                           _BFGET_(r32,31, 0)
    #define   SET32DSmsg_memAdr(r32,v)                         _BFSET_(r32,31, 0,v)

            UNSG32 u_memAdr                                    : 32;
    ///////////////////////////////////////////////////////////
    } SIE_DSmsg;

    ///////////////////////////////////////////////////////////
     SIGN32 DSmsg_drvrd(SIE_DSmsg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 DSmsg_drvwr(SIE_DSmsg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void DSmsg_reset(SIE_DSmsg *p);
     SIGN32 DSmsg_cmp  (SIE_DSmsg *p, SIE_DSmsg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define DSmsg_check(p,pie,pfx,hLOG) DSmsg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define DSmsg_print(p,    pfx,hLOG) DSmsg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: DSmsg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dsCh                    biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 retID                (P)
///               %unsigned 16 addr                      0x0
///                                    ###
///                                    * The HBO address of the memory location at which the retired command ID is stored
///                                    * Note : the addr should be 64-bit aligned. Nor the RTL implementation will always put the 16-bit ID to lower 16-bit of the DTCM entry.
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00004 initID               (P)
///               %unsigned 16 Val                       0x0
///                                    ###
///                                    * Initial retire id value
///                                    ###
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dsCh
#define h_dsCh (){}

    #define     RA_dsCh_retID                                  0x0000

    #define     BA_dsCh_retID_addr                             0x0000
    #define     B16dsCh_retID_addr                             0x0000
    #define   LSb32dsCh_retID_addr                                0
    #define   LSb16dsCh_retID_addr                                0
    #define       bdsCh_retID_addr                             16
    #define   MSK32dsCh_retID_addr                                0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_dsCh_initID                                 0x0004

    #define     BA_dsCh_initID_Val                             0x0004
    #define     B16dsCh_initID_Val                             0x0004
    #define   LSb32dsCh_initID_Val                                0
    #define   LSb16dsCh_initID_Val                                0
    #define       bdsCh_initID_Val                             16
    #define   MSK32dsCh_initID_Val                                0x0000FFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dsCh {
    ///////////////////////////////////////////////////////////
    #define   GET32dsCh_retID_addr(r32)                        _BFGET_(r32,15, 0)
    #define   SET32dsCh_retID_addr(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16dsCh_retID_addr(r16)                        _BFGET_(r16,15, 0)
    #define   SET16dsCh_retID_addr(r16,v)                      _BFSET_(r16,15, 0,v)

    #define     w32dsCh_retID                                  {\
            UNSG32 uretID_addr                                 : 16;\
            UNSG32 RSVDx0_b16                                  : 16;\
          }
    union { UNSG32 u32dsCh_retID;
            struct w32dsCh_retID;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32dsCh_initID_Val(r32)                        _BFGET_(r32,15, 0)
    #define   SET32dsCh_initID_Val(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16dsCh_initID_Val(r16)                        _BFGET_(r16,15, 0)
    #define   SET16dsCh_initID_Val(r16,v)                      _BFSET_(r16,15, 0,v)

    #define     w32dsCh_initID                                 {\
            UNSG32 uinitID_Val                                 : 16;\
            UNSG32 RSVDx4_b16                                  : 16;\
          }
    union { UNSG32 u32dsCh_initID;
            struct w32dsCh_initID;
          };
    ///////////////////////////////////////////////////////////
    } SIE_dsCh;

    typedef union  T32dsCh_retID
          { UNSG32 u32;
            struct w32dsCh_retID;
                 } T32dsCh_retID;
    typedef union  T32dsCh_initID
          { UNSG32 u32;
            struct w32dsCh_initID;
                 } T32dsCh_initID;
    ///////////////////////////////////////////////////////////

    typedef union  TdsCh_retID
          { UNSG32 u32[1];
            struct {
            struct w32dsCh_retID;
                   };
                 } TdsCh_retID;
    typedef union  TdsCh_initID
          { UNSG32 u32[1];
            struct {
            struct w32dsCh_initID;
                   };
                 } TdsCh_initID;

    ///////////////////////////////////////////////////////////
     SIGN32 dsCh_drvrd(SIE_dsCh *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dsCh_drvwr(SIE_dsCh *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dsCh_reset(SIE_dsCh *p);
     SIGN32 dsCh_cmp  (SIE_dsCh *p, SIE_dsCh *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dsCh_check(p,pie,pfx,hLOG) dsCh_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dsCh_print(p,    pfx,hLOG) dsCh_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dsCh
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE DataStreamer            biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 dsCh                 (P)
///     # 0x00000 dsCh                 
///               $dsCh                dsCh              REG       [4]
///                                    ###
///                                    * The command that was just finished by Data Streamer generated interrupt; write 1 to clear
///                                    ###
///     @ 0x00020 intr                 (WOC-)
///               %unsigned 1  st_0i                     
///               %unsigned 1  st_1i                     
///               %unsigned 1  st_2i                     
///               %unsigned 1  st_3i                     
///                                    ###
///                                    * Interrupt status
///                                    ###
///               %%        28         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      36B, bits:     132b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_DataStreamer
#define h_DataStreamer (){}

    #define     RA_DataStreamer_dsCh                           0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_DataStreamer_intr                           0x0020

    #define     BA_DataStreamer_intr_st_0i                     0x0020
    #define     B16DataStreamer_intr_st_0i                     0x0020
    #define   LSb32DataStreamer_intr_st_0i                        0
    #define   LSb16DataStreamer_intr_st_0i                        0
    #define       bDataStreamer_intr_st_0i                     1
    #define   MSK32DataStreamer_intr_st_0i                        0x00000001

    #define     BA_DataStreamer_intr_st_1i                     0x0020
    #define     B16DataStreamer_intr_st_1i                     0x0020
    #define   LSb32DataStreamer_intr_st_1i                        1
    #define   LSb16DataStreamer_intr_st_1i                        1
    #define       bDataStreamer_intr_st_1i                     1
    #define   MSK32DataStreamer_intr_st_1i                        0x00000002

    #define     BA_DataStreamer_intr_st_2i                     0x0020
    #define     B16DataStreamer_intr_st_2i                     0x0020
    #define   LSb32DataStreamer_intr_st_2i                        2
    #define   LSb16DataStreamer_intr_st_2i                        2
    #define       bDataStreamer_intr_st_2i                     1
    #define   MSK32DataStreamer_intr_st_2i                        0x00000004

    #define     BA_DataStreamer_intr_st_3i                     0x0020
    #define     B16DataStreamer_intr_st_3i                     0x0020
    #define   LSb32DataStreamer_intr_st_3i                        3
    #define   LSb16DataStreamer_intr_st_3i                        3
    #define       bDataStreamer_intr_st_3i                     1
    #define   MSK32DataStreamer_intr_st_3i                        0x00000008
    ///////////////////////////////////////////////////////////

    typedef struct SIE_DataStreamer {
    ///////////////////////////////////////////////////////////
              SIE_dsCh                                         ie_dsCh[4];
    ///////////////////////////////////////////////////////////
    #define   GET32DataStreamer_intr_st_0i(r32)                _BFGET_(r32, 0, 0)
    #define   SET32DataStreamer_intr_st_0i(r32,v)              _BFSET_(r32, 0, 0,v)
    #define   GET16DataStreamer_intr_st_0i(r16)                _BFGET_(r16, 0, 0)
    #define   SET16DataStreamer_intr_st_0i(r16,v)              _BFSET_(r16, 0, 0,v)

    #define   GET32DataStreamer_intr_st_1i(r32)                _BFGET_(r32, 1, 1)
    #define   SET32DataStreamer_intr_st_1i(r32,v)              _BFSET_(r32, 1, 1,v)
    #define   GET16DataStreamer_intr_st_1i(r16)                _BFGET_(r16, 1, 1)
    #define   SET16DataStreamer_intr_st_1i(r16,v)              _BFSET_(r16, 1, 1,v)

    #define   GET32DataStreamer_intr_st_2i(r32)                _BFGET_(r32, 2, 2)
    #define   SET32DataStreamer_intr_st_2i(r32,v)              _BFSET_(r32, 2, 2,v)
    #define   GET16DataStreamer_intr_st_2i(r16)                _BFGET_(r16, 2, 2)
    #define   SET16DataStreamer_intr_st_2i(r16,v)              _BFSET_(r16, 2, 2,v)

    #define   GET32DataStreamer_intr_st_3i(r32)                _BFGET_(r32, 3, 3)
    #define   SET32DataStreamer_intr_st_3i(r32,v)              _BFSET_(r32, 3, 3,v)
    #define   GET16DataStreamer_intr_st_3i(r16)                _BFGET_(r16, 3, 3)
    #define   SET16DataStreamer_intr_st_3i(r16,v)              _BFSET_(r16, 3, 3,v)

    #define     w32DataStreamer_intr                           {\
            UNSG32 uintr_st_0i                                 :  1;\
            UNSG32 uintr_st_1i                                 :  1;\
            UNSG32 uintr_st_2i                                 :  1;\
            UNSG32 uintr_st_3i                                 :  1;\
            UNSG32 RSVDx20_b4                                  : 28;\
          }
    union { UNSG32 u32DataStreamer_intr;
            struct w32DataStreamer_intr;
          };
    ///////////////////////////////////////////////////////////
    } SIE_DataStreamer;

    typedef union  T32DataStreamer_intr
          { UNSG32 u32;
            struct w32DataStreamer_intr;
                 } T32DataStreamer_intr;
    ///////////////////////////////////////////////////////////

    typedef union  TDataStreamer_intr
          { UNSG32 u32[1];
            struct {
            struct w32DataStreamer_intr;
                   };
                 } TDataStreamer_intr;

    ///////////////////////////////////////////////////////////
     SIGN32 DataStreamer_drvrd(SIE_DataStreamer *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 DataStreamer_drvwr(SIE_DataStreamer *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void DataStreamer_reset(SIE_DataStreamer *p);
     SIGN32 DataStreamer_cmp  (SIE_DataStreamer *p, SIE_DataStreamer *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define DataStreamer_check(p,pie,pfx,hLOG) DataStreamer_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define DataStreamer_print(p,    pfx,hLOG) DataStreamer_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: DataStreamer
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ALU64CMD                                 (4,4)
///     ###
///     * 16-bit + 6-bit parameters for A64CMD
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 par                  (W-)
///               %unsigned 16 rS                        
///                                    ###
///                                    * rS register for A64CMD
///                                    ###
///               %unsigned 6  q6                        
///                                    ###
///                                    * q6 parameter for A64CMD
///                                    * end ALU64CMD
///                                    ###
///               %%        10         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      22b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ALU64CMD
#define h_ALU64CMD (){}

    #define     RA_ALU64CMD_par                                0x0000

    #define     BA_ALU64CMD_par_rS                             0x0000
    #define     B16ALU64CMD_par_rS                             0x0000
    #define   LSb32ALU64CMD_par_rS                                0
    #define   LSb16ALU64CMD_par_rS                                0
    #define       bALU64CMD_par_rS                             16
    #define   MSK32ALU64CMD_par_rS                                0x0000FFFF

    #define     BA_ALU64CMD_par_q6                             0x0002
    #define     B16ALU64CMD_par_q6                             0x0002
    #define   LSb32ALU64CMD_par_q6                                16
    #define   LSb16ALU64CMD_par_q6                                0
    #define       bALU64CMD_par_q6                             6
    #define   MSK32ALU64CMD_par_q6                                0x003F0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ALU64CMD {
    ///////////////////////////////////////////////////////////
    #define   GET32ALU64CMD_par_rS(r32)                        _BFGET_(r32,15, 0)
    #define   SET32ALU64CMD_par_rS(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16ALU64CMD_par_rS(r16)                        _BFGET_(r16,15, 0)
    #define   SET16ALU64CMD_par_rS(r16,v)                      _BFSET_(r16,15, 0,v)

    #define   GET32ALU64CMD_par_q6(r32)                        _BFGET_(r32,21,16)
    #define   SET32ALU64CMD_par_q6(r32,v)                      _BFSET_(r32,21,16,v)
    #define   GET16ALU64CMD_par_q6(r16)                        _BFGET_(r16, 5, 0)
    #define   SET16ALU64CMD_par_q6(r16,v)                      _BFSET_(r16, 5, 0,v)

    #define     w32ALU64CMD_par                                {\
            UNSG32 upar_rS                                     : 16;\
            UNSG32 upar_q6                                     :  6;\
            UNSG32 RSVDx0_b22                                  : 10;\
          }
    union { UNSG32 u32ALU64CMD_par;
            struct w32ALU64CMD_par;
          };
    ///////////////////////////////////////////////////////////
    } SIE_ALU64CMD;

    typedef union  T32ALU64CMD_par
          { UNSG32 u32;
            struct w32ALU64CMD_par;
                 } T32ALU64CMD_par;
    ///////////////////////////////////////////////////////////

    typedef union  TALU64CMD_par
          { UNSG32 u32[1];
            struct {
            struct w32ALU64CMD_par;
                   };
                 } TALU64CMD_par;

    ///////////////////////////////////////////////////////////
     SIGN32 ALU64CMD_drvrd(SIE_ALU64CMD *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ALU64CMD_drvwr(SIE_ALU64CMD *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ALU64CMD_reset(SIE_ALU64CMD *p);
     SIGN32 ALU64CMD_cmp  (SIE_ALU64CMD *p, SIE_ALU64CMD *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ALU64CMD_check(p,pie,pfx,hLOG) ALU64CMD_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ALU64CMD_print(p,    pfx,hLOG) ALU64CMD_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ALU64CMD
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE A64CmdAll                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 ext                  (P)
///     # 0x00000 ext                  
///               $ALU64CMD            ext               REG     [256]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    1024B, bits:    5632b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_A64CmdAll
#define h_A64CmdAll (){}

    #define     RA_A64CmdAll_ext                               0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_A64CmdAll {
    ///////////////////////////////////////////////////////////
              SIE_ALU64CMD                                     ie_ext[256];
    ///////////////////////////////////////////////////////////
    } SIE_A64CmdAll;

    ///////////////////////////////////////////////////////////
     SIGN32 A64CmdAll_drvrd(SIE_A64CmdAll *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 A64CmdAll_drvwr(SIE_A64CmdAll *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void A64CmdAll_reset(SIE_A64CmdAll *p);
     SIGN32 A64CmdAll_cmp  (SIE_A64CmdAll *p, SIE_A64CmdAll *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define A64CmdAll_check(p,pie,pfx,hLOG) A64CmdAll_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define A64CmdAll_print(p,    pfx,hLOG) A64CmdAll_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: A64CmdAll
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ALU64DAT                                 (4,4)
///     ###
///     * 64-bit return data from ALU64 extensions
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 low                  (R-)
///               %unsigned 32 val                       
///                                    ###
///                                    * Lower 32-bit of the ALU64 return value; read triggers ALU64 extension pop
///                                    ###
///     @ 0x00004 high                 (R-)
///               %unsigned 32 val                       
///                                    ###
///                                    * Higher 32-bit of the ALU64 return value
///                                    * end ALU64DAT
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ALU64DAT
#define h_ALU64DAT (){}

    #define     RA_ALU64DAT_low                                0x0000

    #define     BA_ALU64DAT_low_val                            0x0000
    #define     B16ALU64DAT_low_val                            0x0000
    #define   LSb32ALU64DAT_low_val                               0
    #define   LSb16ALU64DAT_low_val                               0
    #define       bALU64DAT_low_val                            32
    #define   MSK32ALU64DAT_low_val                               0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_ALU64DAT_high                               0x0004

    #define     BA_ALU64DAT_high_val                           0x0004
    #define     B16ALU64DAT_high_val                           0x0004
    #define   LSb32ALU64DAT_high_val                              0
    #define   LSb16ALU64DAT_high_val                              0
    #define       bALU64DAT_high_val                           32
    #define   MSK32ALU64DAT_high_val                              0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ALU64DAT {
    ///////////////////////////////////////////////////////////
    #define   GET32ALU64DAT_low_val(r32)                       _BFGET_(r32,31, 0)
    #define   SET32ALU64DAT_low_val(r32,v)                     _BFSET_(r32,31, 0,v)

    #define     w32ALU64DAT_low                                {\
            UNSG32 ulow_val                                    : 32;\
          }
    union { UNSG32 u32ALU64DAT_low;
            struct w32ALU64DAT_low;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32ALU64DAT_high_val(r32)                      _BFGET_(r32,31, 0)
    #define   SET32ALU64DAT_high_val(r32,v)                    _BFSET_(r32,31, 0,v)

    #define     w32ALU64DAT_high                               {\
            UNSG32 uhigh_val                                   : 32;\
          }
    union { UNSG32 u32ALU64DAT_high;
            struct w32ALU64DAT_high;
          };
    ///////////////////////////////////////////////////////////
    } SIE_ALU64DAT;

    typedef union  T32ALU64DAT_low
          { UNSG32 u32;
            struct w32ALU64DAT_low;
                 } T32ALU64DAT_low;
    typedef union  T32ALU64DAT_high
          { UNSG32 u32;
            struct w32ALU64DAT_high;
                 } T32ALU64DAT_high;
    ///////////////////////////////////////////////////////////

    typedef union  TALU64DAT_low
          { UNSG32 u32[1];
            struct {
            struct w32ALU64DAT_low;
                   };
                 } TALU64DAT_low;
    typedef union  TALU64DAT_high
          { UNSG32 u32[1];
            struct {
            struct w32ALU64DAT_high;
                   };
                 } TALU64DAT_high;

    ///////////////////////////////////////////////////////////
     SIGN32 ALU64DAT_drvrd(SIE_ALU64DAT *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ALU64DAT_drvwr(SIE_ALU64DAT *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ALU64DAT_reset(SIE_ALU64DAT *p);
     SIGN32 ALU64DAT_cmp  (SIE_ALU64DAT *p, SIE_ALU64DAT *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ALU64DAT_check(p,pie,pfx,hLOG) ALU64DAT_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ALU64DAT_print(p,    pfx,hLOG) ALU64DAT_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ALU64DAT
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE A64DatAll                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 ext                  (P)
///     # 0x00000 ext                  
///               $ALU64DAT            ext               REG     [256]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    2048B, bits:   16384b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_A64DatAll
#define h_A64DatAll (){}

    #define     RA_A64DatAll_ext                               0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_A64DatAll {
    ///////////////////////////////////////////////////////////
              SIE_ALU64DAT                                     ie_ext[256];
    ///////////////////////////////////////////////////////////
    } SIE_A64DatAll;

    ///////////////////////////////////////////////////////////
     SIGN32 A64DatAll_drvrd(SIE_A64DatAll *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 A64DatAll_drvwr(SIE_A64DatAll *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void A64DatAll_reset(SIE_A64DatAll *p);
     SIGN32 A64DatAll_cmp  (SIE_A64DatAll *p, SIE_A64DatAll *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define A64DatAll_check(p,pie,pfx,hLOG) A64DatAll_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define A64DatAll_print(p,    pfx,hLOG) A64DatAll_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: A64DatAll
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ALU64                   biu              (4,4)
///     ###
///     * Registers ports for CPU to access FIGO ALU64 extensions
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 xT_l                 (P)
///               %unsigned 32 val                       
///                                    ###
///                                    * Higher 32-bit of the FIGO xT register
///                                    ###
///     @ 0x00004 xT_h                 (P)
///               %unsigned 32 val                       
///                                    ###
///                                    * Lower 32-bit of the FIGO xT register
///                                    ###
///     @ 0x00008 X2Q                  (RW-)
///               %unsigned 6  adr                       
///                                    ###
///                                    * Write triggers a transfer from {xt_H, xt_L} to RF64 selected by the address
///                                    ###
///               %%        26         # Stuffing bits...
///     @ 0x0000C PopParam             (P)
///               %unsigned 16 rS                        
///                                    ###
///                                    * rS register for A64LD
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00010                      (W-)
///     #         # Stuffing bytes...
///               %% 8064
///     @ 0x00400 Push                 (P)
///     # 0x00400 a64CmdAll            
///               $A64CmdAll           a64CmdAll         MEM          
///                                    ###
///                                    * Write triggers A64CMD
///                                    ###
///     @ 0x00800 Pop                  (P)
///     # 0x00800 a64DatAll            
///               $A64DatAll           a64DatAll         MEM          
///                                    ###
///                                    * Read triggers A64LD
///                                    * ALU64 interface
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    4096B, bits:     150b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ALU64
#define h_ALU64 (){}

    #define     RA_ALU64_xT_l                                  0x0000

    #define     BA_ALU64_xT_l_val                              0x0000
    #define     B16ALU64_xT_l_val                              0x0000
    #define   LSb32ALU64_xT_l_val                                 0
    #define   LSb16ALU64_xT_l_val                                 0
    #define       bALU64_xT_l_val                              32
    #define   MSK32ALU64_xT_l_val                                 0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_ALU64_xT_h                                  0x0004

    #define     BA_ALU64_xT_h_val                              0x0004
    #define     B16ALU64_xT_h_val                              0x0004
    #define   LSb32ALU64_xT_h_val                                 0
    #define   LSb16ALU64_xT_h_val                                 0
    #define       bALU64_xT_h_val                              32
    #define   MSK32ALU64_xT_h_val                                 0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_ALU64_X2Q                                   0x0008

    #define     BA_ALU64_X2Q_adr                               0x0008
    #define     B16ALU64_X2Q_adr                               0x0008
    #define   LSb32ALU64_X2Q_adr                                  0
    #define   LSb16ALU64_X2Q_adr                                  0
    #define       bALU64_X2Q_adr                               6
    #define   MSK32ALU64_X2Q_adr                                  0x0000003F
    ///////////////////////////////////////////////////////////
    #define     RA_ALU64_PopParam                              0x000C

    #define     BA_ALU64_PopParam_rS                           0x000C
    #define     B16ALU64_PopParam_rS                           0x000C
    #define   LSb32ALU64_PopParam_rS                              0
    #define   LSb16ALU64_PopParam_rS                              0
    #define       bALU64_PopParam_rS                           16
    #define   MSK32ALU64_PopParam_rS                              0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_ALU64_Push                                  0x0400
    #define     RA_ALU64_a64CmdAll                             0x0400
    ///////////////////////////////////////////////////////////
    #define     RA_ALU64_Pop                                   0x0800
    #define     RA_ALU64_a64DatAll                             0x0800
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ALU64 {
    ///////////////////////////////////////////////////////////
    #define   GET32ALU64_xT_l_val(r32)                         _BFGET_(r32,31, 0)
    #define   SET32ALU64_xT_l_val(r32,v)                       _BFSET_(r32,31, 0,v)

    #define     w32ALU64_xT_l                                  {\
            UNSG32 uxT_l_val                                   : 32;\
          }
    union { UNSG32 u32ALU64_xT_l;
            struct w32ALU64_xT_l;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32ALU64_xT_h_val(r32)                         _BFGET_(r32,31, 0)
    #define   SET32ALU64_xT_h_val(r32,v)                       _BFSET_(r32,31, 0,v)

    #define     w32ALU64_xT_h                                  {\
            UNSG32 uxT_h_val                                   : 32;\
          }
    union { UNSG32 u32ALU64_xT_h;
            struct w32ALU64_xT_h;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32ALU64_X2Q_adr(r32)                          _BFGET_(r32, 5, 0)
    #define   SET32ALU64_X2Q_adr(r32,v)                        _BFSET_(r32, 5, 0,v)
    #define   GET16ALU64_X2Q_adr(r16)                          _BFGET_(r16, 5, 0)
    #define   SET16ALU64_X2Q_adr(r16,v)                        _BFSET_(r16, 5, 0,v)

    #define     w32ALU64_X2Q                                   {\
            UNSG32 uX2Q_adr                                    :  6;\
            UNSG32 RSVDx8_b6                                   : 26;\
          }
    union { UNSG32 u32ALU64_X2Q;
            struct w32ALU64_X2Q;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32ALU64_PopParam_rS(r32)                      _BFGET_(r32,15, 0)
    #define   SET32ALU64_PopParam_rS(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16ALU64_PopParam_rS(r16)                      _BFGET_(r16,15, 0)
    #define   SET16ALU64_PopParam_rS(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32ALU64_PopParam                              {\
            UNSG32 uPopParam_rS                                : 16;\
            UNSG32 RSVDxC_b16                                  : 16;\
          }
    union { UNSG32 u32ALU64_PopParam;
            struct w32ALU64_PopParam;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx10                                     [1008];
    ///////////////////////////////////////////////////////////
              SIE_A64CmdAll                                    ie_a64CmdAll;
    ///////////////////////////////////////////////////////////
              SIE_A64DatAll                                    ie_a64DatAll;
    ///////////////////////////////////////////////////////////
    } SIE_ALU64;

    typedef union  T32ALU64_xT_l
          { UNSG32 u32;
            struct w32ALU64_xT_l;
                 } T32ALU64_xT_l;
    typedef union  T32ALU64_xT_h
          { UNSG32 u32;
            struct w32ALU64_xT_h;
                 } T32ALU64_xT_h;
    typedef union  T32ALU64_X2Q
          { UNSG32 u32;
            struct w32ALU64_X2Q;
                 } T32ALU64_X2Q;
    typedef union  T32ALU64_PopParam
          { UNSG32 u32;
            struct w32ALU64_PopParam;
                 } T32ALU64_PopParam;
    ///////////////////////////////////////////////////////////

    typedef union  TALU64_xT_l
          { UNSG32 u32[1];
            struct {
            struct w32ALU64_xT_l;
                   };
                 } TALU64_xT_l;
    typedef union  TALU64_xT_h
          { UNSG32 u32[1];
            struct {
            struct w32ALU64_xT_h;
                   };
                 } TALU64_xT_h;
    typedef union  TALU64_X2Q
          { UNSG32 u32[1];
            struct {
            struct w32ALU64_X2Q;
                   };
                 } TALU64_X2Q;
    typedef union  TALU64_PopParam
          { UNSG32 u32[1];
            struct {
            struct w32ALU64_PopParam;
                   };
                 } TALU64_PopParam;

    ///////////////////////////////////////////////////////////
     SIGN32 ALU64_drvrd(SIE_ALU64 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ALU64_drvwr(SIE_ALU64 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ALU64_reset(SIE_ALU64 *p);
     SIGN32 ALU64_cmp  (SIE_ALU64 *p, SIE_ALU64 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ALU64_check(p,pie,pfx,hLOG) ALU64_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ALU64_print(p,    pfx,hLOG) ALU64_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ALU64
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoTraceBuf            biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 entry                (P)
///               %unsigned 32 val                       
///                                    ###
///                                    * Register window for the trace buffer
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoTraceBuf
#define h_FigoTraceBuf (){}

    #define     RA_FigoTraceBuf_entry                          0x0000

    #define     BA_FigoTraceBuf_entry_val                      0x0000
    #define     B16FigoTraceBuf_entry_val                      0x0000
    #define   LSb32FigoTraceBuf_entry_val                         0
    #define   LSb16FigoTraceBuf_entry_val                         0
    #define       bFigoTraceBuf_entry_val                      32
    #define   MSK32FigoTraceBuf_entry_val                         0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoTraceBuf {
    ///////////////////////////////////////////////////////////
    #define   GET32FigoTraceBuf_entry_val(r32)                 _BFGET_(r32,31, 0)
    #define   SET32FigoTraceBuf_entry_val(r32,v)               _BFSET_(r32,31, 0,v)

    #define     w32FigoTraceBuf_entry                          {\
            UNSG32 uentry_val                                  : 32;\
          }
    union { UNSG32 u32FigoTraceBuf_entry;
            struct w32FigoTraceBuf_entry;
          };
    ///////////////////////////////////////////////////////////
    } SIE_FigoTraceBuf;

    typedef union  T32FigoTraceBuf_entry
          { UNSG32 u32;
            struct w32FigoTraceBuf_entry;
                 } T32FigoTraceBuf_entry;
    ///////////////////////////////////////////////////////////

    typedef union  TFigoTraceBuf_entry
          { UNSG32 u32[1];
            struct {
            struct w32FigoTraceBuf_entry;
                   };
                 } TFigoTraceBuf_entry;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoTraceBuf_drvrd(SIE_FigoTraceBuf *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoTraceBuf_drvwr(SIE_FigoTraceBuf *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoTraceBuf_reset(SIE_FigoTraceBuf *p);
     SIGN32 FigoTraceBuf_cmp  (SIE_FigoTraceBuf *p, SIE_FigoTraceBuf *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoTraceBuf_check(p,pie,pfx,hLOG) FigoTraceBuf_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoTraceBuf_print(p,    pfx,hLOG) FigoTraceBuf_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoTraceBuf
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoReg16               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 entry                (P)
///               %unsigned 16 val                       
///                                    ###
///                                    * Register window for the trace buffer
///                                    ###
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoReg16
#define h_FigoReg16 (){}

    #define     RA_FigoReg16_entry                             0x0000

    #define     BA_FigoReg16_entry_val                         0x0000
    #define     B16FigoReg16_entry_val                         0x0000
    #define   LSb32FigoReg16_entry_val                            0
    #define   LSb16FigoReg16_entry_val                            0
    #define       bFigoReg16_entry_val                         16
    #define   MSK32FigoReg16_entry_val                            0x0000FFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoReg16 {
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg16_entry_val(r32)                    _BFGET_(r32,15, 0)
    #define   SET32FigoReg16_entry_val(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16FigoReg16_entry_val(r16)                    _BFGET_(r16,15, 0)
    #define   SET16FigoReg16_entry_val(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32FigoReg16_entry                             {\
            UNSG32 uentry_val                                  : 16;\
            UNSG32 RSVDx0_b16                                  : 16;\
          }
    union { UNSG32 u32FigoReg16_entry;
            struct w32FigoReg16_entry;
          };
    ///////////////////////////////////////////////////////////
    } SIE_FigoReg16;

    typedef union  T32FigoReg16_entry
          { UNSG32 u32;
            struct w32FigoReg16_entry;
                 } T32FigoReg16_entry;
    ///////////////////////////////////////////////////////////

    typedef union  TFigoReg16_entry
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg16_entry;
                   };
                 } TFigoReg16_entry;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoReg16_drvrd(SIE_FigoReg16 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoReg16_drvwr(SIE_FigoReg16 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoReg16_reset(SIE_FigoReg16 *p);
     SIGN32 FigoReg16_cmp  (SIE_FigoReg16 *p, SIE_FigoReg16 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoReg16_check(p,pie,pfx,hLOG) FigoReg16_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoReg16_print(p,    pfx,hLOG) FigoReg16_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoReg16
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoRF16Reg             biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 entry                (RW)
///               %unsigned 16 val                       0x0
///                                    ###
///                                    * Register window for the RF16 access in debug mode
///                                    ###
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoRF16Reg
#define h_FigoRF16Reg (){}

    #define     RA_FigoRF16Reg_entry                           0x0000

    #define     BA_FigoRF16Reg_entry_val                       0x0000
    #define     B16FigoRF16Reg_entry_val                       0x0000
    #define   LSb32FigoRF16Reg_entry_val                          0
    #define   LSb16FigoRF16Reg_entry_val                          0
    #define       bFigoRF16Reg_entry_val                       16
    #define   MSK32FigoRF16Reg_entry_val                          0x0000FFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoRF16Reg {
    ///////////////////////////////////////////////////////////
    #define   GET32FigoRF16Reg_entry_val(r32)                  _BFGET_(r32,15, 0)
    #define   SET32FigoRF16Reg_entry_val(r32,v)                _BFSET_(r32,15, 0,v)
    #define   GET16FigoRF16Reg_entry_val(r16)                  _BFGET_(r16,15, 0)
    #define   SET16FigoRF16Reg_entry_val(r16,v)                _BFSET_(r16,15, 0,v)

    #define     w32FigoRF16Reg_entry                           {\
            UNSG32 uentry_val                                  : 16;\
            UNSG32 RSVDx0_b16                                  : 16;\
          }
    union { UNSG32 u32FigoRF16Reg_entry;
            struct w32FigoRF16Reg_entry;
          };
    ///////////////////////////////////////////////////////////
    } SIE_FigoRF16Reg;

    typedef union  T32FigoRF16Reg_entry
          { UNSG32 u32;
            struct w32FigoRF16Reg_entry;
                 } T32FigoRF16Reg_entry;
    ///////////////////////////////////////////////////////////

    typedef union  TFigoRF16Reg_entry
          { UNSG32 u32[1];
            struct {
            struct w32FigoRF16Reg_entry;
                   };
                 } TFigoRF16Reg_entry;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoRF16Reg_drvrd(SIE_FigoRF16Reg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoRF16Reg_drvwr(SIE_FigoRF16Reg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoRF16Reg_reset(SIE_FigoRF16Reg *p);
     SIGN32 FigoRF16Reg_cmp  (SIE_FigoRF16Reg *p, SIE_FigoRF16Reg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoRF16Reg_check(p,pie,pfx,hLOG) FigoRF16Reg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoRF16Reg_print(p,    pfx,hLOG) FigoRF16Reg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoRF16Reg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoMem16                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 entry                (RW-)
///               %unsigned 16 val                       
///                                    ###
///                                    * Register window for the Jump Stack access in debug mode
///                                    ###
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoMem16
#define h_FigoMem16 (){}

    #define     RA_FigoMem16_entry                             0x0000

    #define     BA_FigoMem16_entry_val                         0x0000
    #define     B16FigoMem16_entry_val                         0x0000
    #define   LSb32FigoMem16_entry_val                            0
    #define   LSb16FigoMem16_entry_val                            0
    #define       bFigoMem16_entry_val                         16
    #define   MSK32FigoMem16_entry_val                            0x0000FFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoMem16 {
    ///////////////////////////////////////////////////////////
    #define   GET32FigoMem16_entry_val(r32)                    _BFGET_(r32,15, 0)
    #define   SET32FigoMem16_entry_val(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16FigoMem16_entry_val(r16)                    _BFGET_(r16,15, 0)
    #define   SET16FigoMem16_entry_val(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32FigoMem16_entry                             {\
            UNSG32 uentry_val                                  : 16;\
            UNSG32 RSVDx0_b16                                  : 16;\
          }
    union { UNSG32 u32FigoMem16_entry;
            struct w32FigoMem16_entry;
          };
    ///////////////////////////////////////////////////////////
    } SIE_FigoMem16;

    typedef union  T32FigoMem16_entry
          { UNSG32 u32;
            struct w32FigoMem16_entry;
                 } T32FigoMem16_entry;
    ///////////////////////////////////////////////////////////

    typedef union  TFigoMem16_entry
          { UNSG32 u32[1];
            struct {
            struct w32FigoMem16_entry;
                   };
                 } TFigoMem16_entry;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoMem16_drvrd(SIE_FigoMem16 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoMem16_drvwr(SIE_FigoMem16 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoMem16_reset(SIE_FigoMem16 *p);
     SIGN32 FigoMem16_cmp  (SIE_FigoMem16 *p, SIE_FigoMem16 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoMem16_check(p,pie,pfx,hLOG) FigoMem16_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoMem16_print(p,    pfx,hLOG) FigoMem16_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoMem16
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoMem32                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 entry                (RW-)
///               %unsigned 32 val                       
///                                    ###
///                                    * Register window for the Jump Stack access in debug mode
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoMem32
#define h_FigoMem32 (){}

    #define     RA_FigoMem32_entry                             0x0000

    #define     BA_FigoMem32_entry_val                         0x0000
    #define     B16FigoMem32_entry_val                         0x0000
    #define   LSb32FigoMem32_entry_val                            0
    #define   LSb16FigoMem32_entry_val                            0
    #define       bFigoMem32_entry_val                         32
    #define   MSK32FigoMem32_entry_val                            0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoMem32 {
    ///////////////////////////////////////////////////////////
    #define   GET32FigoMem32_entry_val(r32)                    _BFGET_(r32,31, 0)
    #define   SET32FigoMem32_entry_val(r32,v)                  _BFSET_(r32,31, 0,v)

    #define     w32FigoMem32_entry                             {\
            UNSG32 uentry_val                                  : 32;\
          }
    union { UNSG32 u32FigoMem32_entry;
            struct w32FigoMem32_entry;
          };
    ///////////////////////////////////////////////////////////
    } SIE_FigoMem32;

    typedef union  T32FigoMem32_entry
          { UNSG32 u32;
            struct w32FigoMem32_entry;
                 } T32FigoMem32_entry;
    ///////////////////////////////////////////////////////////

    typedef union  TFigoMem32_entry
          { UNSG32 u32[1];
            struct {
            struct w32FigoMem32_entry;
                   };
                 } TFigoMem32_entry;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoMem32_drvrd(SIE_FigoMem32 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoMem32_drvwr(SIE_FigoMem32 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoMem32_reset(SIE_FigoMem32 *p);
     SIGN32 FigoMem32_cmp  (SIE_FigoMem32 *p, SIE_FigoMem32 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoMem32_check(p,pie,pfx,hLOG) FigoMem32_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoMem32_print(p,    pfx,hLOG) FigoMem32_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoMem32
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoDebug               biu              (4,4)
///     ###
///     * FIGO debug mode related registers and signals
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 figoDbg              (RW-)
///               ###
///               * Puts FIGO in debug mode
///               ###
///               %unsigned 1  on                        0x0
///               %%        31         # Stuffing bits...
///     @ 0x00004 figoDbgMode          (P)
///               ###
///               * Determines FIGO's behavior in debug mode
///               ###
///               %unsigned 2  mode                      0x0
///                                    : stop                      0x0
///                                                 ###
///                                                 * FIGO flushes and stalls its pipeline
///                                                 ###
///                                    : step                      0x1
///                                                 ###
///                                                 * FIGO executes one instruction at a time. Repeat to execute the next instruction.
///                                                 ###
///                                    : slow_run                  0x2
///                                                 ###
///                                                 * FIGO inserts sufficient bubbles between each instruction to bypass all forwarding logic
///                                                 ###
///                                    : fast_run                  0x3
///                                                 ###
///                                                 * FIGO resumes full-speed operation. Feature has been disabled due to timing impact.
///                                                 ###
///               %%        30         # Stuffing bits...
///     @ 0x00008 figoDbgModeStatus    (R-)
///               ###
///               * Similar to figoDbgMode, but read-only. Shows the actual status of FIGO, as it may be different from what is set in figoDbgMode.
///               ###
///               %unsigned 2  mode                      0x0
///                                    : stop                      0x0
///                                    : step                      0x1
///                                    : slow_run                  0x2
///                                    : fast_run                  0x3
///                                                 ###
///                                                 * Same enumerations
///                                                 ###
///               %%        30         # Stuffing bits...
///     @ 0x0000C figoDbgTrigInMask    (P)
///               ###
///               * 4 mask bits for trigger-in signals from up to 4 other FIGOs hitting breakpoints.
///               ###
///               %unsigned 4  on                        0xF
///                                    ###
///                                    * On by default, all trigger-ins are blocked.
///                                    ###
///               %%        28         # Stuffing bits...
///     @ 0x00010                      (W-)
///     #         # Stuffing bytes...
///               %% 384
///     @ 0x00040 figoDbgRF16          (RW-)
///               ###
///               * BIU access to RF16
///               ###
///     # 0x00040 rf16                 
///               $FigoMem16           rf16              MEM      [16]
///                                    ###
///                                    * Register mapping
///                                    * x0 = {d0,c0,b0,a0} = MEM[3:0]
///                                    * x1 = {d1,c1,b1,a1} = MEM[7:4]
///                                    * x2 = {d2,c2,b2,a2} = MEM[11:8]
///                                    * x3 = {d3,c3,b3,a3} = MEM[15:12]
///                                    ###
///     @ 0x00080 figoDbgRB            (RW-)
///               ###
///               * BIU access to RB register
///               ###
///               %unsigned 16 rb                        0x0
///               %%        16         # Stuffing bits...
///     @ 0x00084 figoDbgPCAtFetch     (R-)
///               ###
///               * BIU access to PC register at Fetch stage
///               ###
///               %unsigned 16 pc                        0x0
///               %%        16         # Stuffing bits...
///     @ 0x00088                      (W-)
///     #         # Stuffing bytes...
///               %% 64
///     @ 0x00090 figoDbgJumpStack     (RW-)
///               ###
///               * BIU access to jump stack
///               ###
///     # 0x00090 stack                
///               $FigoMem32           stack             MEM       [4]
///                                    ###
///                                    * Register mapping
///                                    * MEM[0] = {branchPos[0],jumpDest[0]}
///                                    * MEM[1] = {branchPos[1],jumpDest[1]}
///                                    * MEM[2] = {branchPos[2],jumpDest[2]}
///                                    * MEM[3] = {branchPos[3],jumpDest[3]}
///                                    ###
///     @ 0x000A0 figoDbgStackDepth    (R-)
///               ###
///               * BIU access to number of current jump stack entries
///               ###
///               %unsigned 5  depth                     0x0
///                                    ###
///                                    * Values are one-hot. Following actual stack pointer implementation inside FIGO so that no additional logic is required.
///                                    * 00001 = 0 valid entries (stack empty)
///                                    * 00010 = 1 valid entry
///                                    * 00100 = 2 valid entries
///                                    * 01000 = 3 valid entries
///                                    * 10000 = 4 valid entries (stack full)
///                                    ###
///               %%        27         # Stuffing bits...
///     @ 0x000A4 figoDbgFlags         (R-)
///               ###
///               * BIU access to flags register
///               ###
///               %unsigned 16 flags                     0x0
///                                    ###
///                                    * flags[15:0] = {LSj, Lj, GSj, Gj, LS, L, GS, G, 1, 0, Cj, Zj, V, N, C, Z}
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x000A8 figoDbgBreak         (WOC-)
///               ###
///               * Bit that indicates FIGO entered debug mode due to breakpoint
///               ###
///               %unsigned 1  up                        0x0
///                                    ###
///                                    * Write one to clear
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x000AC figoDbgBkBitWen      (P)
///               ###
///               * Enable bit to allow breakpoint bits to be written into ITCM by BIU.
///               ###
///               %unsigned 1  en                        0x0
///                                    ###
///                                    * Additional enable bit to safeguard against accidentally writing ones into the breakpoint fields of the ITCM.
///                                    * Register window for the trace buffer
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x000B0                      (W-)
///     #         # Stuffing bytes...
///               %% 128
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     192B, bits:     128b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoDebug
#define h_FigoDebug (){}

    #define     RA_FigoDebug_figoDbg                           0x0000

    #define     BA_FigoDebug_figoDbg_on                        0x0000
    #define     B16FigoDebug_figoDbg_on                        0x0000
    #define   LSb32FigoDebug_figoDbg_on                           0
    #define   LSb16FigoDebug_figoDbg_on                           0
    #define       bFigoDebug_figoDbg_on                        1
    #define   MSK32FigoDebug_figoDbg_on                           0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgMode                       0x0004

    #define     BA_FigoDebug_figoDbgMode_mode                  0x0004
    #define     B16FigoDebug_figoDbgMode_mode                  0x0004
    #define   LSb32FigoDebug_figoDbgMode_mode                     0
    #define   LSb16FigoDebug_figoDbgMode_mode                     0
    #define       bFigoDebug_figoDbgMode_mode                  2
    #define   MSK32FigoDebug_figoDbgMode_mode                     0x00000003
    #define        FigoDebug_figoDbgMode_mode_stop                          0x0
    #define        FigoDebug_figoDbgMode_mode_step                          0x1
    #define        FigoDebug_figoDbgMode_mode_slow_run                      0x2
    #define        FigoDebug_figoDbgMode_mode_fast_run                      0x3
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgModeStatus                 0x0008

    #define     BA_FigoDebug_figoDbgModeStatus_mode            0x0008
    #define     B16FigoDebug_figoDbgModeStatus_mode            0x0008
    #define   LSb32FigoDebug_figoDbgModeStatus_mode               0
    #define   LSb16FigoDebug_figoDbgModeStatus_mode               0
    #define       bFigoDebug_figoDbgModeStatus_mode            2
    #define   MSK32FigoDebug_figoDbgModeStatus_mode               0x00000003
    #define        FigoDebug_figoDbgModeStatus_mode_stop                    0x0
    #define        FigoDebug_figoDbgModeStatus_mode_step                    0x1
    #define        FigoDebug_figoDbgModeStatus_mode_slow_run                0x2
    #define        FigoDebug_figoDbgModeStatus_mode_fast_run                0x3
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgTrigInMask                 0x000C

    #define     BA_FigoDebug_figoDbgTrigInMask_on              0x000C
    #define     B16FigoDebug_figoDbgTrigInMask_on              0x000C
    #define   LSb32FigoDebug_figoDbgTrigInMask_on                 0
    #define   LSb16FigoDebug_figoDbgTrigInMask_on                 0
    #define       bFigoDebug_figoDbgTrigInMask_on              4
    #define   MSK32FigoDebug_figoDbgTrigInMask_on                 0x0000000F
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgRF16                       0x0040
    #define     RA_FigoDebug_rf16                              0x0040
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgRB                         0x0080

    #define     BA_FigoDebug_figoDbgRB_rb                      0x0080
    #define     B16FigoDebug_figoDbgRB_rb                      0x0080
    #define   LSb32FigoDebug_figoDbgRB_rb                         0
    #define   LSb16FigoDebug_figoDbgRB_rb                         0
    #define       bFigoDebug_figoDbgRB_rb                      16
    #define   MSK32FigoDebug_figoDbgRB_rb                         0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgPCAtFetch                  0x0084

    #define     BA_FigoDebug_figoDbgPCAtFetch_pc               0x0084
    #define     B16FigoDebug_figoDbgPCAtFetch_pc               0x0084
    #define   LSb32FigoDebug_figoDbgPCAtFetch_pc                  0
    #define   LSb16FigoDebug_figoDbgPCAtFetch_pc                  0
    #define       bFigoDebug_figoDbgPCAtFetch_pc               16
    #define   MSK32FigoDebug_figoDbgPCAtFetch_pc                  0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgJumpStack                  0x0090
    #define     RA_FigoDebug_stack                             0x0090
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgStackDepth                 0x00A0

    #define     BA_FigoDebug_figoDbgStackDepth_depth           0x00A0
    #define     B16FigoDebug_figoDbgStackDepth_depth           0x00A0
    #define   LSb32FigoDebug_figoDbgStackDepth_depth              0
    #define   LSb16FigoDebug_figoDbgStackDepth_depth              0
    #define       bFigoDebug_figoDbgStackDepth_depth           5
    #define   MSK32FigoDebug_figoDbgStackDepth_depth              0x0000001F
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgFlags                      0x00A4

    #define     BA_FigoDebug_figoDbgFlags_flags                0x00A4
    #define     B16FigoDebug_figoDbgFlags_flags                0x00A4
    #define   LSb32FigoDebug_figoDbgFlags_flags                   0
    #define   LSb16FigoDebug_figoDbgFlags_flags                   0
    #define       bFigoDebug_figoDbgFlags_flags                16
    #define   MSK32FigoDebug_figoDbgFlags_flags                   0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgBreak                      0x00A8

    #define     BA_FigoDebug_figoDbgBreak_up                   0x00A8
    #define     B16FigoDebug_figoDbgBreak_up                   0x00A8
    #define   LSb32FigoDebug_figoDbgBreak_up                      0
    #define   LSb16FigoDebug_figoDbgBreak_up                      0
    #define       bFigoDebug_figoDbgBreak_up                   1
    #define   MSK32FigoDebug_figoDbgBreak_up                      0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_FigoDebug_figoDbgBkBitWen                   0x00AC

    #define     BA_FigoDebug_figoDbgBkBitWen_en                0x00AC
    #define     B16FigoDebug_figoDbgBkBitWen_en                0x00AC
    #define   LSb32FigoDebug_figoDbgBkBitWen_en                   0
    #define   LSb16FigoDebug_figoDbgBkBitWen_en                   0
    #define       bFigoDebug_figoDbgBkBitWen_en                1
    #define   MSK32FigoDebug_figoDbgBkBitWen_en                   0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoDebug {
    ///////////////////////////////////////////////////////////
    #define   GET32FigoDebug_figoDbg_on(r32)                   _BFGET_(r32, 0, 0)
    #define   SET32FigoDebug_figoDbg_on(r32,v)                 _BFSET_(r32, 0, 0,v)
    #define   GET16FigoDebug_figoDbg_on(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16FigoDebug_figoDbg_on(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define     w32FigoDebug_figoDbg                           {\
            UNSG32 ufigoDbg_on                                 :  1;\
            UNSG32 RSVDx0_b1                                   : 31;\
          }
    union { UNSG32 u32FigoDebug_figoDbg;
            struct w32FigoDebug_figoDbg;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoDebug_figoDbgMode_mode(r32)             _BFGET_(r32, 1, 0)
    #define   SET32FigoDebug_figoDbgMode_mode(r32,v)           _BFSET_(r32, 1, 0,v)
    #define   GET16FigoDebug_figoDbgMode_mode(r16)             _BFGET_(r16, 1, 0)
    #define   SET16FigoDebug_figoDbgMode_mode(r16,v)           _BFSET_(r16, 1, 0,v)

    #define     w32FigoDebug_figoDbgMode                       {\
            UNSG32 ufigoDbgMode_mode                           :  2;\
            UNSG32 RSVDx4_b2                                   : 30;\
          }
    union { UNSG32 u32FigoDebug_figoDbgMode;
            struct w32FigoDebug_figoDbgMode;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoDebug_figoDbgModeStatus_mode(r32)       _BFGET_(r32, 1, 0)
    #define   SET32FigoDebug_figoDbgModeStatus_mode(r32,v)     _BFSET_(r32, 1, 0,v)
    #define   GET16FigoDebug_figoDbgModeStatus_mode(r16)       _BFGET_(r16, 1, 0)
    #define   SET16FigoDebug_figoDbgModeStatus_mode(r16,v)     _BFSET_(r16, 1, 0,v)

    #define     w32FigoDebug_figoDbgModeStatus                 {\
            UNSG32 ufigoDbgModeStatus_mode                     :  2;\
            UNSG32 RSVDx8_b2                                   : 30;\
          }
    union { UNSG32 u32FigoDebug_figoDbgModeStatus;
            struct w32FigoDebug_figoDbgModeStatus;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoDebug_figoDbgTrigInMask_on(r32)         _BFGET_(r32, 3, 0)
    #define   SET32FigoDebug_figoDbgTrigInMask_on(r32,v)       _BFSET_(r32, 3, 0,v)
    #define   GET16FigoDebug_figoDbgTrigInMask_on(r16)         _BFGET_(r16, 3, 0)
    #define   SET16FigoDebug_figoDbgTrigInMask_on(r16,v)       _BFSET_(r16, 3, 0,v)

    #define     w32FigoDebug_figoDbgTrigInMask                 {\
            UNSG32 ufigoDbgTrigInMask_on                       :  4;\
            UNSG32 RSVDxC_b4                                   : 28;\
          }
    union { UNSG32 u32FigoDebug_figoDbgTrigInMask;
            struct w32FigoDebug_figoDbgTrigInMask;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx10                                     [48];
    ///////////////////////////////////////////////////////////
              SIE_FigoMem16                                    ie_rf16[16];
    ///////////////////////////////////////////////////////////
    #define   GET32FigoDebug_figoDbgRB_rb(r32)                 _BFGET_(r32,15, 0)
    #define   SET32FigoDebug_figoDbgRB_rb(r32,v)               _BFSET_(r32,15, 0,v)
    #define   GET16FigoDebug_figoDbgRB_rb(r16)                 _BFGET_(r16,15, 0)
    #define   SET16FigoDebug_figoDbgRB_rb(r16,v)               _BFSET_(r16,15, 0,v)

    #define     w32FigoDebug_figoDbgRB                         {\
            UNSG32 ufigoDbgRB_rb                               : 16;\
            UNSG32 RSVDx80_b16                                 : 16;\
          }
    union { UNSG32 u32FigoDebug_figoDbgRB;
            struct w32FigoDebug_figoDbgRB;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoDebug_figoDbgPCAtFetch_pc(r32)          _BFGET_(r32,15, 0)
    #define   SET32FigoDebug_figoDbgPCAtFetch_pc(r32,v)        _BFSET_(r32,15, 0,v)
    #define   GET16FigoDebug_figoDbgPCAtFetch_pc(r16)          _BFGET_(r16,15, 0)
    #define   SET16FigoDebug_figoDbgPCAtFetch_pc(r16,v)        _BFSET_(r16,15, 0,v)

    #define     w32FigoDebug_figoDbgPCAtFetch                  {\
            UNSG32 ufigoDbgPCAtFetch_pc                        : 16;\
            UNSG32 RSVDx84_b16                                 : 16;\
          }
    union { UNSG32 u32FigoDebug_figoDbgPCAtFetch;
            struct w32FigoDebug_figoDbgPCAtFetch;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx88                                     [8];
    ///////////////////////////////////////////////////////////
              SIE_FigoMem32                                    ie_stack[4];
    ///////////////////////////////////////////////////////////
    #define   GET32FigoDebug_figoDbgStackDepth_depth(r32)      _BFGET_(r32, 4, 0)
    #define   SET32FigoDebug_figoDbgStackDepth_depth(r32,v)    _BFSET_(r32, 4, 0,v)
    #define   GET16FigoDebug_figoDbgStackDepth_depth(r16)      _BFGET_(r16, 4, 0)
    #define   SET16FigoDebug_figoDbgStackDepth_depth(r16,v)    _BFSET_(r16, 4, 0,v)

    #define     w32FigoDebug_figoDbgStackDepth                 {\
            UNSG32 ufigoDbgStackDepth_depth                    :  5;\
            UNSG32 RSVDxA0_b5                                  : 27;\
          }
    union { UNSG32 u32FigoDebug_figoDbgStackDepth;
            struct w32FigoDebug_figoDbgStackDepth;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoDebug_figoDbgFlags_flags(r32)           _BFGET_(r32,15, 0)
    #define   SET32FigoDebug_figoDbgFlags_flags(r32,v)         _BFSET_(r32,15, 0,v)
    #define   GET16FigoDebug_figoDbgFlags_flags(r16)           _BFGET_(r16,15, 0)
    #define   SET16FigoDebug_figoDbgFlags_flags(r16,v)         _BFSET_(r16,15, 0,v)

    #define     w32FigoDebug_figoDbgFlags                      {\
            UNSG32 ufigoDbgFlags_flags                         : 16;\
            UNSG32 RSVDxA4_b16                                 : 16;\
          }
    union { UNSG32 u32FigoDebug_figoDbgFlags;
            struct w32FigoDebug_figoDbgFlags;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoDebug_figoDbgBreak_up(r32)              _BFGET_(r32, 0, 0)
    #define   SET32FigoDebug_figoDbgBreak_up(r32,v)            _BFSET_(r32, 0, 0,v)
    #define   GET16FigoDebug_figoDbgBreak_up(r16)              _BFGET_(r16, 0, 0)
    #define   SET16FigoDebug_figoDbgBreak_up(r16,v)            _BFSET_(r16, 0, 0,v)

    #define     w32FigoDebug_figoDbgBreak                      {\
            UNSG32 ufigoDbgBreak_up                            :  1;\
            UNSG32 RSVDxA8_b1                                  : 31;\
          }
    union { UNSG32 u32FigoDebug_figoDbgBreak;
            struct w32FigoDebug_figoDbgBreak;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoDebug_figoDbgBkBitWen_en(r32)           _BFGET_(r32, 0, 0)
    #define   SET32FigoDebug_figoDbgBkBitWen_en(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16FigoDebug_figoDbgBkBitWen_en(r16)           _BFGET_(r16, 0, 0)
    #define   SET16FigoDebug_figoDbgBkBitWen_en(r16,v)         _BFSET_(r16, 0, 0,v)

    #define     w32FigoDebug_figoDbgBkBitWen                   {\
            UNSG32 ufigoDbgBkBitWen_en                         :  1;\
            UNSG32 RSVDxAC_b1                                  : 31;\
          }
    union { UNSG32 u32FigoDebug_figoDbgBkBitWen;
            struct w32FigoDebug_figoDbgBkBitWen;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxB0                                     [16];
    ///////////////////////////////////////////////////////////
    } SIE_FigoDebug;

    typedef union  T32FigoDebug_figoDbg
          { UNSG32 u32;
            struct w32FigoDebug_figoDbg;
                 } T32FigoDebug_figoDbg;
    typedef union  T32FigoDebug_figoDbgMode
          { UNSG32 u32;
            struct w32FigoDebug_figoDbgMode;
                 } T32FigoDebug_figoDbgMode;
    typedef union  T32FigoDebug_figoDbgModeStatus
          { UNSG32 u32;
            struct w32FigoDebug_figoDbgModeStatus;
                 } T32FigoDebug_figoDbgModeStatus;
    typedef union  T32FigoDebug_figoDbgTrigInMask
          { UNSG32 u32;
            struct w32FigoDebug_figoDbgTrigInMask;
                 } T32FigoDebug_figoDbgTrigInMask;
    typedef union  T32FigoDebug_figoDbgRB
          { UNSG32 u32;
            struct w32FigoDebug_figoDbgRB;
                 } T32FigoDebug_figoDbgRB;
    typedef union  T32FigoDebug_figoDbgPCAtFetch
          { UNSG32 u32;
            struct w32FigoDebug_figoDbgPCAtFetch;
                 } T32FigoDebug_figoDbgPCAtFetch;
    typedef union  T32FigoDebug_figoDbgStackDepth
          { UNSG32 u32;
            struct w32FigoDebug_figoDbgStackDepth;
                 } T32FigoDebug_figoDbgStackDepth;
    typedef union  T32FigoDebug_figoDbgFlags
          { UNSG32 u32;
            struct w32FigoDebug_figoDbgFlags;
                 } T32FigoDebug_figoDbgFlags;
    typedef union  T32FigoDebug_figoDbgBreak
          { UNSG32 u32;
            struct w32FigoDebug_figoDbgBreak;
                 } T32FigoDebug_figoDbgBreak;
    typedef union  T32FigoDebug_figoDbgBkBitWen
          { UNSG32 u32;
            struct w32FigoDebug_figoDbgBkBitWen;
                 } T32FigoDebug_figoDbgBkBitWen;
    ///////////////////////////////////////////////////////////

    typedef union  TFigoDebug_figoDbg
          { UNSG32 u32[1];
            struct {
            struct w32FigoDebug_figoDbg;
                   };
                 } TFigoDebug_figoDbg;
    typedef union  TFigoDebug_figoDbgMode
          { UNSG32 u32[1];
            struct {
            struct w32FigoDebug_figoDbgMode;
                   };
                 } TFigoDebug_figoDbgMode;
    typedef union  TFigoDebug_figoDbgModeStatus
          { UNSG32 u32[1];
            struct {
            struct w32FigoDebug_figoDbgModeStatus;
                   };
                 } TFigoDebug_figoDbgModeStatus;
    typedef union  TFigoDebug_figoDbgTrigInMask
          { UNSG32 u32[1];
            struct {
            struct w32FigoDebug_figoDbgTrigInMask;
                   };
                 } TFigoDebug_figoDbgTrigInMask;
    typedef union  TFigoDebug_figoDbgRB
          { UNSG32 u32[1];
            struct {
            struct w32FigoDebug_figoDbgRB;
                   };
                 } TFigoDebug_figoDbgRB;
    typedef union  TFigoDebug_figoDbgPCAtFetch
          { UNSG32 u32[1];
            struct {
            struct w32FigoDebug_figoDbgPCAtFetch;
                   };
                 } TFigoDebug_figoDbgPCAtFetch;
    typedef union  TFigoDebug_figoDbgStackDepth
          { UNSG32 u32[1];
            struct {
            struct w32FigoDebug_figoDbgStackDepth;
                   };
                 } TFigoDebug_figoDbgStackDepth;
    typedef union  TFigoDebug_figoDbgFlags
          { UNSG32 u32[1];
            struct {
            struct w32FigoDebug_figoDbgFlags;
                   };
                 } TFigoDebug_figoDbgFlags;
    typedef union  TFigoDebug_figoDbgBreak
          { UNSG32 u32[1];
            struct {
            struct w32FigoDebug_figoDbgBreak;
                   };
                 } TFigoDebug_figoDbgBreak;
    typedef union  TFigoDebug_figoDbgBkBitWen
          { UNSG32 u32[1];
            struct {
            struct w32FigoDebug_figoDbgBkBitWen;
                   };
                 } TFigoDebug_figoDbgBkBitWen;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoDebug_drvrd(SIE_FigoDebug *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoDebug_drvwr(SIE_FigoDebug *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoDebug_reset(SIE_FigoDebug *p);
     SIGN32 FigoDebug_cmp  (SIE_FigoDebug *p, SIE_FigoDebug *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoDebug_check(p,pie,pfx,hLOG) FigoDebug_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoDebug_print(p,    pfx,hLOG) FigoDebug_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoDebug
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoReg                 biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 figoCtrl             (P)
///               %unsigned 16 pcStartLoc                0x0
///               %unsigned 1  tBufMode                  0x0
///                                    : freeRun                   0x0
///                                                 ###
///                                                 * Trace buffer operating as ring buffer
///                                                 ###
///                                    : fifoMode                  0x1
///                                                 ###
///                                                 * Trace buffer operating as FIFO; FIGO stalls when full
///                                                 ###
///               %%        15         # Stuffing bits...
///     @ 0x00004 figoID               (R-)
///               ###
///               * Processor ID, unique for each FIGO
///               ###
///               %unsigned 16 ID                        0x0
///                                    ###
///                                    * Processor ID. Specified in FIGO baseline subsystem configuration file.
///                                    ###
///               %unsigned 16 REV                       0x0
///                                    ###
///                                    * Revision ID. Hard-coded in FIGO core RTL.
///                                    ###
///     @ 0x00008 figoMaxAdr           (P)
///               ###
///               * Max address for ITCM and DTCM, used to detect addr out-of-bound
///               ###
///               %unsigned 16 itcm                      0xFFFF
///               %unsigned 16 dtcm                      0xFFFF
///     @ 0x0000C figoFlags            (WOC-)
///               ###
///               * Exception flags; FIGO halts when unmasked exception happens; write one to clear
///               ###
///               %unsigned 1  itcmAdrOOB                0x0
///                                    ###
///                                    * ITCM address > figoMaxAdr.itcm
///                                    ###
///               %unsigned 1  dtcmAdrOOB                0x0
///                                    ###
///                                    * DTCM address > figoMaxAdr.dtcm
///                                    ###
///               %unsigned 1  divideBy0                 0x0
///                                    ###
///                                    * MDU divide by 0 detected
///                                    ###
///               %unsigned 1  traceBufFull              0x0
///                                    ###
///                                    * Trace buffer is full. Only valid when figoCtrl.tBufMode = fifoMode
///                                    ###
///               %unsigned 1  illegalIns                0x0
///                                    ###
///                                    * Illegal instruction detected at ID stage
///                                    ###
///               %unsigned 1  ALU64Overflow             0x0
///                                    ###
///                                    * One of the ALU64 extensions asserted a command push overflow.
///                                    ###
///               %unsigned 1  JTInvdPush                0x0
///                                    ###
///                                    * Detected a jump table push when it's already full.
///                                    ###
///               %%        25         # Stuffing bits...
///     @ 0x00010 figoFlagsMask        (P)
///               ###
///               * Mask bits for FIGO exception flags. Does not block exception flags from asserting, instead, it prevents FIGO from halting when the masked exception occurs.
///               ###
///               %unsigned 1  itcmAdrOOBMask            0x0
///               %unsigned 1  dtcmAdrOOBMask            0x0
///               %unsigned 1  divideBy0Mask             0x0
///               %unsigned 1  traceBufFullMask          0x0
///               %unsigned 1  illegalInsMask            0x0
///               %unsigned 1  ALU64OverflowMask         0x0
///               %unsigned 1  JTInvdPushMask            0x0
///               %%        25         # Stuffing bits...
///     @ 0x00014 figoLastPC           (R-)
///               ###
///               * Last PC value before exception occurred
///               ###
///               %unsigned 16 val                       0x0
///               %%        16         # Stuffing bits...
///     @ 0x00018 figoCurrPC           (R-)
///     # 0x00018 pc                   
///               $FigoReg16           pc                MEM          
///                                    ###
///                                    * Current PC value @ ID stage
///                                    ###
///     @ 0x0001C figoTraceBuf         (RW-)
///     # 0x0001C tbuf                 
///               $FigoTraceBuf        tbuf              MEM          
///                                    ###
///                                    * Register window for the trace buffer
///                                    ###
///     @ 0x00020 figoIntr             (W-)
///               ###
///               * Special register for FIGO to raise interrupt to CPU via vPro semaphore; write to raise interrupt; no status
///               ###
///               %unsigned 1  up                        0x0
///               %%        31         # Stuffing bits...
///     @ 0x00024 figoIntrLvl          (WOC-)
///               ###
///               * Special register to record that interrupt has occurred; to be used as level interrupt; cleared by writing 1
///               ###
///               %unsigned 1  st                        0x0
///               %%        31         # Stuffing bits...
///     @ 0x00028 figoRstn             (RW-)
///               ###
///               * Special register to stop / reset FIGO execution; write 1 to release FIGO, write 0 to reset FIGO (sticky)
///               ###
///               %unsigned 1  up                        0x0
///               %%        31         # Stuffing bits...
///     @ 0x0002C figoCnt              (RW-)
///               ###
///               * Controls the FIGO counter behavior
///               ###
///               %unsigned 1  en                        0x0
///               %%        31         # Stuffing bits...
///     @ 0x00030 figoCntClr           (W-)
///               ###
///               * Clear FIGO counters; write 1 to clear specific counters
///               ###
///               %unsigned 1  run                       
///               %unsigned 1  stall                     
///               %%        30         # Stuffing bits...
///     @ 0x00034 figoRun              (R-)
///               %unsigned 32 Cnt                       0x0
///     @ 0x00038 figoStall            (R-)
///               %unsigned 32 Cnt                       0x0
///     @ 0x0003C                      (W-)
///     #         # Stuffing bytes...
///               %% 15904
///     @ 0x00800 ALU64                (P)
///     # 0x00800 alu64                
///               $ALU64               alu64             REG          
///                                    ###
///                                    * ALU64 extensions access via AHB
///                                    ###
///     @ 0x01800 FIGODBG              (P)
///     # 0x01800 debug                
///               $FigoDebug           debug             REG          
///     @ 0x018C0 wdCnt                (P)
///               %unsigned 32 threshold                 0xFFFF
///                                    ###
///                                    * When set to “0”, the watch dot timer will be disabled, it will not count and also won't trigger the overflow status.
///                                    ###
///     @ 0x018C4 wdClr                (W-)
///               %unsigned 1  en                        
///                                    ###
///                                    * Write “1” to this register will clear the watchdog timer value to “0”.
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x018C8 wdSt                 (WOC-)
///               %unsigned 1  overflow                  0x0
///                                    ###
///                                    * Overflow will be set when the watchdog timer value >= wdCnt.threshold.
///                                    * Write “1” to this register will clear the status to 0.
///                                    * Debug mode related registers
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x018CC                      (W-)
///     #         # Stuffing bytes...
///               %% 14752
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    8192B, bits:     557b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoReg
#define h_FigoReg (){}

    #define     RA_FigoReg_figoCtrl                            0x0000

    #define     BA_FigoReg_figoCtrl_pcStartLoc                 0x0000
    #define     B16FigoReg_figoCtrl_pcStartLoc                 0x0000
    #define   LSb32FigoReg_figoCtrl_pcStartLoc                    0
    #define   LSb16FigoReg_figoCtrl_pcStartLoc                    0
    #define       bFigoReg_figoCtrl_pcStartLoc                 16
    #define   MSK32FigoReg_figoCtrl_pcStartLoc                    0x0000FFFF

    #define     BA_FigoReg_figoCtrl_tBufMode                   0x0002
    #define     B16FigoReg_figoCtrl_tBufMode                   0x0002
    #define   LSb32FigoReg_figoCtrl_tBufMode                      16
    #define   LSb16FigoReg_figoCtrl_tBufMode                      0
    #define       bFigoReg_figoCtrl_tBufMode                   1
    #define   MSK32FigoReg_figoCtrl_tBufMode                      0x00010000
    #define        FigoReg_figoCtrl_tBufMode_freeRun                        0x0
    #define        FigoReg_figoCtrl_tBufMode_fifoMode                       0x1
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoID                              0x0004

    #define     BA_FigoReg_figoID_ID                           0x0004
    #define     B16FigoReg_figoID_ID                           0x0004
    #define   LSb32FigoReg_figoID_ID                              0
    #define   LSb16FigoReg_figoID_ID                              0
    #define       bFigoReg_figoID_ID                           16
    #define   MSK32FigoReg_figoID_ID                              0x0000FFFF

    #define     BA_FigoReg_figoID_REV                          0x0006
    #define     B16FigoReg_figoID_REV                          0x0006
    #define   LSb32FigoReg_figoID_REV                             16
    #define   LSb16FigoReg_figoID_REV                             0
    #define       bFigoReg_figoID_REV                          16
    #define   MSK32FigoReg_figoID_REV                             0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoMaxAdr                          0x0008

    #define     BA_FigoReg_figoMaxAdr_itcm                     0x0008
    #define     B16FigoReg_figoMaxAdr_itcm                     0x0008
    #define   LSb32FigoReg_figoMaxAdr_itcm                        0
    #define   LSb16FigoReg_figoMaxAdr_itcm                        0
    #define       bFigoReg_figoMaxAdr_itcm                     16
    #define   MSK32FigoReg_figoMaxAdr_itcm                        0x0000FFFF

    #define     BA_FigoReg_figoMaxAdr_dtcm                     0x000A
    #define     B16FigoReg_figoMaxAdr_dtcm                     0x000A
    #define   LSb32FigoReg_figoMaxAdr_dtcm                        16
    #define   LSb16FigoReg_figoMaxAdr_dtcm                        0
    #define       bFigoReg_figoMaxAdr_dtcm                     16
    #define   MSK32FigoReg_figoMaxAdr_dtcm                        0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoFlags                           0x000C

    #define     BA_FigoReg_figoFlags_itcmAdrOOB                0x000C
    #define     B16FigoReg_figoFlags_itcmAdrOOB                0x000C
    #define   LSb32FigoReg_figoFlags_itcmAdrOOB                   0
    #define   LSb16FigoReg_figoFlags_itcmAdrOOB                   0
    #define       bFigoReg_figoFlags_itcmAdrOOB                1
    #define   MSK32FigoReg_figoFlags_itcmAdrOOB                   0x00000001

    #define     BA_FigoReg_figoFlags_dtcmAdrOOB                0x000C
    #define     B16FigoReg_figoFlags_dtcmAdrOOB                0x000C
    #define   LSb32FigoReg_figoFlags_dtcmAdrOOB                   1
    #define   LSb16FigoReg_figoFlags_dtcmAdrOOB                   1
    #define       bFigoReg_figoFlags_dtcmAdrOOB                1
    #define   MSK32FigoReg_figoFlags_dtcmAdrOOB                   0x00000002

    #define     BA_FigoReg_figoFlags_divideBy0                 0x000C
    #define     B16FigoReg_figoFlags_divideBy0                 0x000C
    #define   LSb32FigoReg_figoFlags_divideBy0                    2
    #define   LSb16FigoReg_figoFlags_divideBy0                    2
    #define       bFigoReg_figoFlags_divideBy0                 1
    #define   MSK32FigoReg_figoFlags_divideBy0                    0x00000004

    #define     BA_FigoReg_figoFlags_traceBufFull              0x000C
    #define     B16FigoReg_figoFlags_traceBufFull              0x000C
    #define   LSb32FigoReg_figoFlags_traceBufFull                 3
    #define   LSb16FigoReg_figoFlags_traceBufFull                 3
    #define       bFigoReg_figoFlags_traceBufFull              1
    #define   MSK32FigoReg_figoFlags_traceBufFull                 0x00000008

    #define     BA_FigoReg_figoFlags_illegalIns                0x000C
    #define     B16FigoReg_figoFlags_illegalIns                0x000C
    #define   LSb32FigoReg_figoFlags_illegalIns                   4
    #define   LSb16FigoReg_figoFlags_illegalIns                   4
    #define       bFigoReg_figoFlags_illegalIns                1
    #define   MSK32FigoReg_figoFlags_illegalIns                   0x00000010

    #define     BA_FigoReg_figoFlags_ALU64Overflow             0x000C
    #define     B16FigoReg_figoFlags_ALU64Overflow             0x000C
    #define   LSb32FigoReg_figoFlags_ALU64Overflow                5
    #define   LSb16FigoReg_figoFlags_ALU64Overflow                5
    #define       bFigoReg_figoFlags_ALU64Overflow             1
    #define   MSK32FigoReg_figoFlags_ALU64Overflow                0x00000020

    #define     BA_FigoReg_figoFlags_JTInvdPush                0x000C
    #define     B16FigoReg_figoFlags_JTInvdPush                0x000C
    #define   LSb32FigoReg_figoFlags_JTInvdPush                   6
    #define   LSb16FigoReg_figoFlags_JTInvdPush                   6
    #define       bFigoReg_figoFlags_JTInvdPush                1
    #define   MSK32FigoReg_figoFlags_JTInvdPush                   0x00000040
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoFlagsMask                       0x0010

    #define     BA_FigoReg_figoFlagsMask_itcmAdrOOBMask        0x0010
    #define     B16FigoReg_figoFlagsMask_itcmAdrOOBMask        0x0010
    #define   LSb32FigoReg_figoFlagsMask_itcmAdrOOBMask           0
    #define   LSb16FigoReg_figoFlagsMask_itcmAdrOOBMask           0
    #define       bFigoReg_figoFlagsMask_itcmAdrOOBMask        1
    #define   MSK32FigoReg_figoFlagsMask_itcmAdrOOBMask           0x00000001

    #define     BA_FigoReg_figoFlagsMask_dtcmAdrOOBMask        0x0010
    #define     B16FigoReg_figoFlagsMask_dtcmAdrOOBMask        0x0010
    #define   LSb32FigoReg_figoFlagsMask_dtcmAdrOOBMask           1
    #define   LSb16FigoReg_figoFlagsMask_dtcmAdrOOBMask           1
    #define       bFigoReg_figoFlagsMask_dtcmAdrOOBMask        1
    #define   MSK32FigoReg_figoFlagsMask_dtcmAdrOOBMask           0x00000002

    #define     BA_FigoReg_figoFlagsMask_divideBy0Mask         0x0010
    #define     B16FigoReg_figoFlagsMask_divideBy0Mask         0x0010
    #define   LSb32FigoReg_figoFlagsMask_divideBy0Mask            2
    #define   LSb16FigoReg_figoFlagsMask_divideBy0Mask            2
    #define       bFigoReg_figoFlagsMask_divideBy0Mask         1
    #define   MSK32FigoReg_figoFlagsMask_divideBy0Mask            0x00000004

    #define     BA_FigoReg_figoFlagsMask_traceBufFullMask      0x0010
    #define     B16FigoReg_figoFlagsMask_traceBufFullMask      0x0010
    #define   LSb32FigoReg_figoFlagsMask_traceBufFullMask         3
    #define   LSb16FigoReg_figoFlagsMask_traceBufFullMask         3
    #define       bFigoReg_figoFlagsMask_traceBufFullMask      1
    #define   MSK32FigoReg_figoFlagsMask_traceBufFullMask         0x00000008

    #define     BA_FigoReg_figoFlagsMask_illegalInsMask        0x0010
    #define     B16FigoReg_figoFlagsMask_illegalInsMask        0x0010
    #define   LSb32FigoReg_figoFlagsMask_illegalInsMask           4
    #define   LSb16FigoReg_figoFlagsMask_illegalInsMask           4
    #define       bFigoReg_figoFlagsMask_illegalInsMask        1
    #define   MSK32FigoReg_figoFlagsMask_illegalInsMask           0x00000010

    #define     BA_FigoReg_figoFlagsMask_ALU64OverflowMask     0x0010
    #define     B16FigoReg_figoFlagsMask_ALU64OverflowMask     0x0010
    #define   LSb32FigoReg_figoFlagsMask_ALU64OverflowMask        5
    #define   LSb16FigoReg_figoFlagsMask_ALU64OverflowMask        5
    #define       bFigoReg_figoFlagsMask_ALU64OverflowMask     1
    #define   MSK32FigoReg_figoFlagsMask_ALU64OverflowMask        0x00000020

    #define     BA_FigoReg_figoFlagsMask_JTInvdPushMask        0x0010
    #define     B16FigoReg_figoFlagsMask_JTInvdPushMask        0x0010
    #define   LSb32FigoReg_figoFlagsMask_JTInvdPushMask           6
    #define   LSb16FigoReg_figoFlagsMask_JTInvdPushMask           6
    #define       bFigoReg_figoFlagsMask_JTInvdPushMask        1
    #define   MSK32FigoReg_figoFlagsMask_JTInvdPushMask           0x00000040
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoLastPC                          0x0014

    #define     BA_FigoReg_figoLastPC_val                      0x0014
    #define     B16FigoReg_figoLastPC_val                      0x0014
    #define   LSb32FigoReg_figoLastPC_val                         0
    #define   LSb16FigoReg_figoLastPC_val                         0
    #define       bFigoReg_figoLastPC_val                      16
    #define   MSK32FigoReg_figoLastPC_val                         0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoCurrPC                          0x0018
    #define     RA_FigoReg_pc                                  0x0018
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoTraceBuf                        0x001C
    #define     RA_FigoReg_tbuf                                0x001C
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoIntr                            0x0020

    #define     BA_FigoReg_figoIntr_up                         0x0020
    #define     B16FigoReg_figoIntr_up                         0x0020
    #define   LSb32FigoReg_figoIntr_up                            0
    #define   LSb16FigoReg_figoIntr_up                            0
    #define       bFigoReg_figoIntr_up                         1
    #define   MSK32FigoReg_figoIntr_up                            0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoIntrLvl                         0x0024

    #define     BA_FigoReg_figoIntrLvl_st                      0x0024
    #define     B16FigoReg_figoIntrLvl_st                      0x0024
    #define   LSb32FigoReg_figoIntrLvl_st                         0
    #define   LSb16FigoReg_figoIntrLvl_st                         0
    #define       bFigoReg_figoIntrLvl_st                      1
    #define   MSK32FigoReg_figoIntrLvl_st                         0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoRstn                            0x0028

    #define     BA_FigoReg_figoRstn_up                         0x0028
    #define     B16FigoReg_figoRstn_up                         0x0028
    #define   LSb32FigoReg_figoRstn_up                            0
    #define   LSb16FigoReg_figoRstn_up                            0
    #define       bFigoReg_figoRstn_up                         1
    #define   MSK32FigoReg_figoRstn_up                            0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoCnt                             0x002C

    #define     BA_FigoReg_figoCnt_en                          0x002C
    #define     B16FigoReg_figoCnt_en                          0x002C
    #define   LSb32FigoReg_figoCnt_en                             0
    #define   LSb16FigoReg_figoCnt_en                             0
    #define       bFigoReg_figoCnt_en                          1
    #define   MSK32FigoReg_figoCnt_en                             0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoCntClr                          0x0030

    #define     BA_FigoReg_figoCntClr_run                      0x0030
    #define     B16FigoReg_figoCntClr_run                      0x0030
    #define   LSb32FigoReg_figoCntClr_run                         0
    #define   LSb16FigoReg_figoCntClr_run                         0
    #define       bFigoReg_figoCntClr_run                      1
    #define   MSK32FigoReg_figoCntClr_run                         0x00000001

    #define     BA_FigoReg_figoCntClr_stall                    0x0030
    #define     B16FigoReg_figoCntClr_stall                    0x0030
    #define   LSb32FigoReg_figoCntClr_stall                       1
    #define   LSb16FigoReg_figoCntClr_stall                       1
    #define       bFigoReg_figoCntClr_stall                    1
    #define   MSK32FigoReg_figoCntClr_stall                       0x00000002
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoRun                             0x0034

    #define     BA_FigoReg_figoRun_Cnt                         0x0034
    #define     B16FigoReg_figoRun_Cnt                         0x0034
    #define   LSb32FigoReg_figoRun_Cnt                            0
    #define   LSb16FigoReg_figoRun_Cnt                            0
    #define       bFigoReg_figoRun_Cnt                         32
    #define   MSK32FigoReg_figoRun_Cnt                            0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_figoStall                           0x0038

    #define     BA_FigoReg_figoStall_Cnt                       0x0038
    #define     B16FigoReg_figoStall_Cnt                       0x0038
    #define   LSb32FigoReg_figoStall_Cnt                          0
    #define   LSb16FigoReg_figoStall_Cnt                          0
    #define       bFigoReg_figoStall_Cnt                       32
    #define   MSK32FigoReg_figoStall_Cnt                          0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_ALU64                               0x0800
    #define     RA_FigoReg_alu64                               0x0800
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_FIGODBG                             0x1800
    #define     RA_FigoReg_debug                               0x1800
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_wdCnt                               0x18C0

    #define     BA_FigoReg_wdCnt_threshold                     0x18C0
    #define     B16FigoReg_wdCnt_threshold                     0x18C0
    #define   LSb32FigoReg_wdCnt_threshold                        0
    #define   LSb16FigoReg_wdCnt_threshold                        0
    #define       bFigoReg_wdCnt_threshold                     32
    #define   MSK32FigoReg_wdCnt_threshold                        0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_wdClr                               0x18C4

    #define     BA_FigoReg_wdClr_en                            0x18C4
    #define     B16FigoReg_wdClr_en                            0x18C4
    #define   LSb32FigoReg_wdClr_en                               0
    #define   LSb16FigoReg_wdClr_en                               0
    #define       bFigoReg_wdClr_en                            1
    #define   MSK32FigoReg_wdClr_en                               0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_FigoReg_wdSt                                0x18C8

    #define     BA_FigoReg_wdSt_overflow                       0x18C8
    #define     B16FigoReg_wdSt_overflow                       0x18C8
    #define   LSb32FigoReg_wdSt_overflow                          0
    #define   LSb16FigoReg_wdSt_overflow                          0
    #define       bFigoReg_wdSt_overflow                       1
    #define   MSK32FigoReg_wdSt_overflow                          0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoReg {
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoCtrl_pcStartLoc(r32)            _BFGET_(r32,15, 0)
    #define   SET32FigoReg_figoCtrl_pcStartLoc(r32,v)          _BFSET_(r32,15, 0,v)
    #define   GET16FigoReg_figoCtrl_pcStartLoc(r16)            _BFGET_(r16,15, 0)
    #define   SET16FigoReg_figoCtrl_pcStartLoc(r16,v)          _BFSET_(r16,15, 0,v)

    #define   GET32FigoReg_figoCtrl_tBufMode(r32)              _BFGET_(r32,16,16)
    #define   SET32FigoReg_figoCtrl_tBufMode(r32,v)            _BFSET_(r32,16,16,v)
    #define   GET16FigoReg_figoCtrl_tBufMode(r16)              _BFGET_(r16, 0, 0)
    #define   SET16FigoReg_figoCtrl_tBufMode(r16,v)            _BFSET_(r16, 0, 0,v)

    #define     w32FigoReg_figoCtrl                            {\
            UNSG32 ufigoCtrl_pcStartLoc                        : 16;\
            UNSG32 ufigoCtrl_tBufMode                          :  1;\
            UNSG32 RSVDx0_b17                                  : 15;\
          }
    union { UNSG32 u32FigoReg_figoCtrl;
            struct w32FigoReg_figoCtrl;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoID_ID(r32)                      _BFGET_(r32,15, 0)
    #define   SET32FigoReg_figoID_ID(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16FigoReg_figoID_ID(r16)                      _BFGET_(r16,15, 0)
    #define   SET16FigoReg_figoID_ID(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32FigoReg_figoID_REV(r32)                     _BFGET_(r32,31,16)
    #define   SET32FigoReg_figoID_REV(r32,v)                   _BFSET_(r32,31,16,v)
    #define   GET16FigoReg_figoID_REV(r16)                     _BFGET_(r16,15, 0)
    #define   SET16FigoReg_figoID_REV(r16,v)                   _BFSET_(r16,15, 0,v)

    #define     w32FigoReg_figoID                              {\
            UNSG32 ufigoID_ID                                  : 16;\
            UNSG32 ufigoID_REV                                 : 16;\
          }
    union { UNSG32 u32FigoReg_figoID;
            struct w32FigoReg_figoID;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoMaxAdr_itcm(r32)                _BFGET_(r32,15, 0)
    #define   SET32FigoReg_figoMaxAdr_itcm(r32,v)              _BFSET_(r32,15, 0,v)
    #define   GET16FigoReg_figoMaxAdr_itcm(r16)                _BFGET_(r16,15, 0)
    #define   SET16FigoReg_figoMaxAdr_itcm(r16,v)              _BFSET_(r16,15, 0,v)

    #define   GET32FigoReg_figoMaxAdr_dtcm(r32)                _BFGET_(r32,31,16)
    #define   SET32FigoReg_figoMaxAdr_dtcm(r32,v)              _BFSET_(r32,31,16,v)
    #define   GET16FigoReg_figoMaxAdr_dtcm(r16)                _BFGET_(r16,15, 0)
    #define   SET16FigoReg_figoMaxAdr_dtcm(r16,v)              _BFSET_(r16,15, 0,v)

    #define     w32FigoReg_figoMaxAdr                          {\
            UNSG32 ufigoMaxAdr_itcm                            : 16;\
            UNSG32 ufigoMaxAdr_dtcm                            : 16;\
          }
    union { UNSG32 u32FigoReg_figoMaxAdr;
            struct w32FigoReg_figoMaxAdr;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoFlags_itcmAdrOOB(r32)           _BFGET_(r32, 0, 0)
    #define   SET32FigoReg_figoFlags_itcmAdrOOB(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16FigoReg_figoFlags_itcmAdrOOB(r16)           _BFGET_(r16, 0, 0)
    #define   SET16FigoReg_figoFlags_itcmAdrOOB(r16,v)         _BFSET_(r16, 0, 0,v)

    #define   GET32FigoReg_figoFlags_dtcmAdrOOB(r32)           _BFGET_(r32, 1, 1)
    #define   SET32FigoReg_figoFlags_dtcmAdrOOB(r32,v)         _BFSET_(r32, 1, 1,v)
    #define   GET16FigoReg_figoFlags_dtcmAdrOOB(r16)           _BFGET_(r16, 1, 1)
    #define   SET16FigoReg_figoFlags_dtcmAdrOOB(r16,v)         _BFSET_(r16, 1, 1,v)

    #define   GET32FigoReg_figoFlags_divideBy0(r32)            _BFGET_(r32, 2, 2)
    #define   SET32FigoReg_figoFlags_divideBy0(r32,v)          _BFSET_(r32, 2, 2,v)
    #define   GET16FigoReg_figoFlags_divideBy0(r16)            _BFGET_(r16, 2, 2)
    #define   SET16FigoReg_figoFlags_divideBy0(r16,v)          _BFSET_(r16, 2, 2,v)

    #define   GET32FigoReg_figoFlags_traceBufFull(r32)         _BFGET_(r32, 3, 3)
    #define   SET32FigoReg_figoFlags_traceBufFull(r32,v)       _BFSET_(r32, 3, 3,v)
    #define   GET16FigoReg_figoFlags_traceBufFull(r16)         _BFGET_(r16, 3, 3)
    #define   SET16FigoReg_figoFlags_traceBufFull(r16,v)       _BFSET_(r16, 3, 3,v)

    #define   GET32FigoReg_figoFlags_illegalIns(r32)           _BFGET_(r32, 4, 4)
    #define   SET32FigoReg_figoFlags_illegalIns(r32,v)         _BFSET_(r32, 4, 4,v)
    #define   GET16FigoReg_figoFlags_illegalIns(r16)           _BFGET_(r16, 4, 4)
    #define   SET16FigoReg_figoFlags_illegalIns(r16,v)         _BFSET_(r16, 4, 4,v)

    #define   GET32FigoReg_figoFlags_ALU64Overflow(r32)        _BFGET_(r32, 5, 5)
    #define   SET32FigoReg_figoFlags_ALU64Overflow(r32,v)      _BFSET_(r32, 5, 5,v)
    #define   GET16FigoReg_figoFlags_ALU64Overflow(r16)        _BFGET_(r16, 5, 5)
    #define   SET16FigoReg_figoFlags_ALU64Overflow(r16,v)      _BFSET_(r16, 5, 5,v)

    #define   GET32FigoReg_figoFlags_JTInvdPush(r32)           _BFGET_(r32, 6, 6)
    #define   SET32FigoReg_figoFlags_JTInvdPush(r32,v)         _BFSET_(r32, 6, 6,v)
    #define   GET16FigoReg_figoFlags_JTInvdPush(r16)           _BFGET_(r16, 6, 6)
    #define   SET16FigoReg_figoFlags_JTInvdPush(r16,v)         _BFSET_(r16, 6, 6,v)

    #define     w32FigoReg_figoFlags                           {\
            UNSG32 ufigoFlags_itcmAdrOOB                       :  1;\
            UNSG32 ufigoFlags_dtcmAdrOOB                       :  1;\
            UNSG32 ufigoFlags_divideBy0                        :  1;\
            UNSG32 ufigoFlags_traceBufFull                     :  1;\
            UNSG32 ufigoFlags_illegalIns                       :  1;\
            UNSG32 ufigoFlags_ALU64Overflow                    :  1;\
            UNSG32 ufigoFlags_JTInvdPush                       :  1;\
            UNSG32 RSVDxC_b7                                   : 25;\
          }
    union { UNSG32 u32FigoReg_figoFlags;
            struct w32FigoReg_figoFlags;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoFlagsMask_itcmAdrOOBMask(r32)   _BFGET_(r32, 0, 0)
    #define   SET32FigoReg_figoFlagsMask_itcmAdrOOBMask(r32,v) _BFSET_(r32, 0, 0,v)
    #define   GET16FigoReg_figoFlagsMask_itcmAdrOOBMask(r16)   _BFGET_(r16, 0, 0)
    #define   SET16FigoReg_figoFlagsMask_itcmAdrOOBMask(r16,v) _BFSET_(r16, 0, 0,v)

    #define   GET32FigoReg_figoFlagsMask_dtcmAdrOOBMask(r32)   _BFGET_(r32, 1, 1)
    #define   SET32FigoReg_figoFlagsMask_dtcmAdrOOBMask(r32,v) _BFSET_(r32, 1, 1,v)
    #define   GET16FigoReg_figoFlagsMask_dtcmAdrOOBMask(r16)   _BFGET_(r16, 1, 1)
    #define   SET16FigoReg_figoFlagsMask_dtcmAdrOOBMask(r16,v) _BFSET_(r16, 1, 1,v)

    #define   GET32FigoReg_figoFlagsMask_divideBy0Mask(r32)    _BFGET_(r32, 2, 2)
    #define   SET32FigoReg_figoFlagsMask_divideBy0Mask(r32,v)  _BFSET_(r32, 2, 2,v)
    #define   GET16FigoReg_figoFlagsMask_divideBy0Mask(r16)    _BFGET_(r16, 2, 2)
    #define   SET16FigoReg_figoFlagsMask_divideBy0Mask(r16,v)  _BFSET_(r16, 2, 2,v)

    #define   GET32FigoReg_figoFlagsMask_traceBufFullMask(r32) _BFGET_(r32, 3, 3)
    #define   SET32FigoReg_figoFlagsMask_traceBufFullMask(r32,v) _BFSET_(r32, 3, 3,v)
    #define   GET16FigoReg_figoFlagsMask_traceBufFullMask(r16) _BFGET_(r16, 3, 3)
    #define   SET16FigoReg_figoFlagsMask_traceBufFullMask(r16,v) _BFSET_(r16, 3, 3,v)

    #define   GET32FigoReg_figoFlagsMask_illegalInsMask(r32)   _BFGET_(r32, 4, 4)
    #define   SET32FigoReg_figoFlagsMask_illegalInsMask(r32,v) _BFSET_(r32, 4, 4,v)
    #define   GET16FigoReg_figoFlagsMask_illegalInsMask(r16)   _BFGET_(r16, 4, 4)
    #define   SET16FigoReg_figoFlagsMask_illegalInsMask(r16,v) _BFSET_(r16, 4, 4,v)

    #define   GET32FigoReg_figoFlagsMask_ALU64OverflowMask(r32) _BFGET_(r32, 5, 5)
    #define   SET32FigoReg_figoFlagsMask_ALU64OverflowMask(r32,v) _BFSET_(r32, 5, 5,v)
    #define   GET16FigoReg_figoFlagsMask_ALU64OverflowMask(r16) _BFGET_(r16, 5, 5)
    #define   SET16FigoReg_figoFlagsMask_ALU64OverflowMask(r16,v) _BFSET_(r16, 5, 5,v)

    #define   GET32FigoReg_figoFlagsMask_JTInvdPushMask(r32)   _BFGET_(r32, 6, 6)
    #define   SET32FigoReg_figoFlagsMask_JTInvdPushMask(r32,v) _BFSET_(r32, 6, 6,v)
    #define   GET16FigoReg_figoFlagsMask_JTInvdPushMask(r16)   _BFGET_(r16, 6, 6)
    #define   SET16FigoReg_figoFlagsMask_JTInvdPushMask(r16,v) _BFSET_(r16, 6, 6,v)

    #define     w32FigoReg_figoFlagsMask                       {\
            UNSG32 ufigoFlagsMask_itcmAdrOOBMask               :  1;\
            UNSG32 ufigoFlagsMask_dtcmAdrOOBMask               :  1;\
            UNSG32 ufigoFlagsMask_divideBy0Mask                :  1;\
            UNSG32 ufigoFlagsMask_traceBufFullMask             :  1;\
            UNSG32 ufigoFlagsMask_illegalInsMask               :  1;\
            UNSG32 ufigoFlagsMask_ALU64OverflowMask            :  1;\
            UNSG32 ufigoFlagsMask_JTInvdPushMask               :  1;\
            UNSG32 RSVDx10_b7                                  : 25;\
          }
    union { UNSG32 u32FigoReg_figoFlagsMask;
            struct w32FigoReg_figoFlagsMask;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoLastPC_val(r32)                 _BFGET_(r32,15, 0)
    #define   SET32FigoReg_figoLastPC_val(r32,v)               _BFSET_(r32,15, 0,v)
    #define   GET16FigoReg_figoLastPC_val(r16)                 _BFGET_(r16,15, 0)
    #define   SET16FigoReg_figoLastPC_val(r16,v)               _BFSET_(r16,15, 0,v)

    #define     w32FigoReg_figoLastPC                          {\
            UNSG32 ufigoLastPC_val                             : 16;\
            UNSG32 RSVDx14_b16                                 : 16;\
          }
    union { UNSG32 u32FigoReg_figoLastPC;
            struct w32FigoReg_figoLastPC;
          };
    ///////////////////////////////////////////////////////////
              SIE_FigoReg16                                    ie_pc;
    ///////////////////////////////////////////////////////////
              SIE_FigoTraceBuf                                 ie_tbuf;
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoIntr_up(r32)                    _BFGET_(r32, 0, 0)
    #define   SET32FigoReg_figoIntr_up(r32,v)                  _BFSET_(r32, 0, 0,v)
    #define   GET16FigoReg_figoIntr_up(r16)                    _BFGET_(r16, 0, 0)
    #define   SET16FigoReg_figoIntr_up(r16,v)                  _BFSET_(r16, 0, 0,v)

    #define     w32FigoReg_figoIntr                            {\
            UNSG32 ufigoIntr_up                                :  1;\
            UNSG32 RSVDx20_b1                                  : 31;\
          }
    union { UNSG32 u32FigoReg_figoIntr;
            struct w32FigoReg_figoIntr;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoIntrLvl_st(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32FigoReg_figoIntrLvl_st(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16FigoReg_figoIntrLvl_st(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16FigoReg_figoIntrLvl_st(r16,v)               _BFSET_(r16, 0, 0,v)

    #define     w32FigoReg_figoIntrLvl                         {\
            UNSG32 ufigoIntrLvl_st                             :  1;\
            UNSG32 RSVDx24_b1                                  : 31;\
          }
    union { UNSG32 u32FigoReg_figoIntrLvl;
            struct w32FigoReg_figoIntrLvl;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoRstn_up(r32)                    _BFGET_(r32, 0, 0)
    #define   SET32FigoReg_figoRstn_up(r32,v)                  _BFSET_(r32, 0, 0,v)
    #define   GET16FigoReg_figoRstn_up(r16)                    _BFGET_(r16, 0, 0)
    #define   SET16FigoReg_figoRstn_up(r16,v)                  _BFSET_(r16, 0, 0,v)

    #define     w32FigoReg_figoRstn                            {\
            UNSG32 ufigoRstn_up                                :  1;\
            UNSG32 RSVDx28_b1                                  : 31;\
          }
    union { UNSG32 u32FigoReg_figoRstn;
            struct w32FigoReg_figoRstn;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoCnt_en(r32)                     _BFGET_(r32, 0, 0)
    #define   SET32FigoReg_figoCnt_en(r32,v)                   _BFSET_(r32, 0, 0,v)
    #define   GET16FigoReg_figoCnt_en(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16FigoReg_figoCnt_en(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define     w32FigoReg_figoCnt                             {\
            UNSG32 ufigoCnt_en                                 :  1;\
            UNSG32 RSVDx2C_b1                                  : 31;\
          }
    union { UNSG32 u32FigoReg_figoCnt;
            struct w32FigoReg_figoCnt;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoCntClr_run(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32FigoReg_figoCntClr_run(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16FigoReg_figoCntClr_run(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16FigoReg_figoCntClr_run(r16,v)               _BFSET_(r16, 0, 0,v)

    #define   GET32FigoReg_figoCntClr_stall(r32)               _BFGET_(r32, 1, 1)
    #define   SET32FigoReg_figoCntClr_stall(r32,v)             _BFSET_(r32, 1, 1,v)
    #define   GET16FigoReg_figoCntClr_stall(r16)               _BFGET_(r16, 1, 1)
    #define   SET16FigoReg_figoCntClr_stall(r16,v)             _BFSET_(r16, 1, 1,v)

    #define     w32FigoReg_figoCntClr                          {\
            UNSG32 ufigoCntClr_run                             :  1;\
            UNSG32 ufigoCntClr_stall                           :  1;\
            UNSG32 RSVDx30_b2                                  : 30;\
          }
    union { UNSG32 u32FigoReg_figoCntClr;
            struct w32FigoReg_figoCntClr;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoRun_Cnt(r32)                    _BFGET_(r32,31, 0)
    #define   SET32FigoReg_figoRun_Cnt(r32,v)                  _BFSET_(r32,31, 0,v)

    #define     w32FigoReg_figoRun                             {\
            UNSG32 ufigoRun_Cnt                                : 32;\
          }
    union { UNSG32 u32FigoReg_figoRun;
            struct w32FigoReg_figoRun;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_figoStall_Cnt(r32)                  _BFGET_(r32,31, 0)
    #define   SET32FigoReg_figoStall_Cnt(r32,v)                _BFSET_(r32,31, 0,v)

    #define     w32FigoReg_figoStall                           {\
            UNSG32 ufigoStall_Cnt                              : 32;\
          }
    union { UNSG32 u32FigoReg_figoStall;
            struct w32FigoReg_figoStall;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx3C                                     [1988];
    ///////////////////////////////////////////////////////////
              SIE_ALU64                                        ie_alu64;
    ///////////////////////////////////////////////////////////
              SIE_FigoDebug                                    ie_debug;
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_wdCnt_threshold(r32)                _BFGET_(r32,31, 0)
    #define   SET32FigoReg_wdCnt_threshold(r32,v)              _BFSET_(r32,31, 0,v)

    #define     w32FigoReg_wdCnt                               {\
            UNSG32 uwdCnt_threshold                            : 32;\
          }
    union { UNSG32 u32FigoReg_wdCnt;
            struct w32FigoReg_wdCnt;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_wdClr_en(r32)                       _BFGET_(r32, 0, 0)
    #define   SET32FigoReg_wdClr_en(r32,v)                     _BFSET_(r32, 0, 0,v)
    #define   GET16FigoReg_wdClr_en(r16)                       _BFGET_(r16, 0, 0)
    #define   SET16FigoReg_wdClr_en(r16,v)                     _BFSET_(r16, 0, 0,v)

    #define     w32FigoReg_wdClr                               {\
            UNSG32 uwdClr_en                                   :  1;\
            UNSG32 RSVDx18C4_b1                                : 31;\
          }
    union { UNSG32 u32FigoReg_wdClr;
            struct w32FigoReg_wdClr;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32FigoReg_wdSt_overflow(r32)                  _BFGET_(r32, 0, 0)
    #define   SET32FigoReg_wdSt_overflow(r32,v)                _BFSET_(r32, 0, 0,v)
    #define   GET16FigoReg_wdSt_overflow(r16)                  _BFGET_(r16, 0, 0)
    #define   SET16FigoReg_wdSt_overflow(r16,v)                _BFSET_(r16, 0, 0,v)

    #define     w32FigoReg_wdSt                                {\
            UNSG32 uwdSt_overflow                              :  1;\
            UNSG32 RSVDx18C8_b1                                : 31;\
          }
    union { UNSG32 u32FigoReg_wdSt;
            struct w32FigoReg_wdSt;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx18CC                                   [1844];
    ///////////////////////////////////////////////////////////
    } SIE_FigoReg;

    typedef union  T32FigoReg_figoCtrl
          { UNSG32 u32;
            struct w32FigoReg_figoCtrl;
                 } T32FigoReg_figoCtrl;
    typedef union  T32FigoReg_figoID
          { UNSG32 u32;
            struct w32FigoReg_figoID;
                 } T32FigoReg_figoID;
    typedef union  T32FigoReg_figoMaxAdr
          { UNSG32 u32;
            struct w32FigoReg_figoMaxAdr;
                 } T32FigoReg_figoMaxAdr;
    typedef union  T32FigoReg_figoFlags
          { UNSG32 u32;
            struct w32FigoReg_figoFlags;
                 } T32FigoReg_figoFlags;
    typedef union  T32FigoReg_figoFlagsMask
          { UNSG32 u32;
            struct w32FigoReg_figoFlagsMask;
                 } T32FigoReg_figoFlagsMask;
    typedef union  T32FigoReg_figoLastPC
          { UNSG32 u32;
            struct w32FigoReg_figoLastPC;
                 } T32FigoReg_figoLastPC;
    typedef union  T32FigoReg_figoIntr
          { UNSG32 u32;
            struct w32FigoReg_figoIntr;
                 } T32FigoReg_figoIntr;
    typedef union  T32FigoReg_figoIntrLvl
          { UNSG32 u32;
            struct w32FigoReg_figoIntrLvl;
                 } T32FigoReg_figoIntrLvl;
    typedef union  T32FigoReg_figoRstn
          { UNSG32 u32;
            struct w32FigoReg_figoRstn;
                 } T32FigoReg_figoRstn;
    typedef union  T32FigoReg_figoCnt
          { UNSG32 u32;
            struct w32FigoReg_figoCnt;
                 } T32FigoReg_figoCnt;
    typedef union  T32FigoReg_figoCntClr
          { UNSG32 u32;
            struct w32FigoReg_figoCntClr;
                 } T32FigoReg_figoCntClr;
    typedef union  T32FigoReg_figoRun
          { UNSG32 u32;
            struct w32FigoReg_figoRun;
                 } T32FigoReg_figoRun;
    typedef union  T32FigoReg_figoStall
          { UNSG32 u32;
            struct w32FigoReg_figoStall;
                 } T32FigoReg_figoStall;
    typedef union  T32FigoReg_wdCnt
          { UNSG32 u32;
            struct w32FigoReg_wdCnt;
                 } T32FigoReg_wdCnt;
    typedef union  T32FigoReg_wdClr
          { UNSG32 u32;
            struct w32FigoReg_wdClr;
                 } T32FigoReg_wdClr;
    typedef union  T32FigoReg_wdSt
          { UNSG32 u32;
            struct w32FigoReg_wdSt;
                 } T32FigoReg_wdSt;
    ///////////////////////////////////////////////////////////

    typedef union  TFigoReg_figoCtrl
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoCtrl;
                   };
                 } TFigoReg_figoCtrl;
    typedef union  TFigoReg_figoID
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoID;
                   };
                 } TFigoReg_figoID;
    typedef union  TFigoReg_figoMaxAdr
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoMaxAdr;
                   };
                 } TFigoReg_figoMaxAdr;
    typedef union  TFigoReg_figoFlags
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoFlags;
                   };
                 } TFigoReg_figoFlags;
    typedef union  TFigoReg_figoFlagsMask
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoFlagsMask;
                   };
                 } TFigoReg_figoFlagsMask;
    typedef union  TFigoReg_figoLastPC
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoLastPC;
                   };
                 } TFigoReg_figoLastPC;
    typedef union  TFigoReg_figoIntr
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoIntr;
                   };
                 } TFigoReg_figoIntr;
    typedef union  TFigoReg_figoIntrLvl
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoIntrLvl;
                   };
                 } TFigoReg_figoIntrLvl;
    typedef union  TFigoReg_figoRstn
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoRstn;
                   };
                 } TFigoReg_figoRstn;
    typedef union  TFigoReg_figoCnt
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoCnt;
                   };
                 } TFigoReg_figoCnt;
    typedef union  TFigoReg_figoCntClr
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoCntClr;
                   };
                 } TFigoReg_figoCntClr;
    typedef union  TFigoReg_figoRun
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoRun;
                   };
                 } TFigoReg_figoRun;
    typedef union  TFigoReg_figoStall
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_figoStall;
                   };
                 } TFigoReg_figoStall;
    typedef union  TFigoReg_wdCnt
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_wdCnt;
                   };
                 } TFigoReg_wdCnt;
    typedef union  TFigoReg_wdClr
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_wdClr;
                   };
                 } TFigoReg_wdClr;
    typedef union  TFigoReg_wdSt
          { UNSG32 u32[1];
            struct {
            struct w32FigoReg_wdSt;
                   };
                 } TFigoReg_wdSt;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoReg_drvrd(SIE_FigoReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoReg_drvwr(SIE_FigoReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoReg_reset(SIE_FigoReg *p);
     SIGN32 FigoReg_cmp  (SIE_FigoReg *p, SIE_FigoReg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoReg_check(p,pie,pfx,hLOG) FigoReg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoReg_print(p,    pfx,hLOG) FigoReg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoReg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoInst                                 (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (RW)
///               ###
///               * Instruction opcode, 24-bit word
///               ###
///               %unsigned 24 opcode                    0x0
///               %%        8          # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      24b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoInst
#define h_FigoInst (){}

    #define     BA_FigoInst_opcode                             0x0000
    #define     B16FigoInst_opcode                             0x0000
    #define   LSb32FigoInst_opcode                                0
    #define   LSb16FigoInst_opcode                                0
    #define       bFigoInst_opcode                             24
    #define   MSK32FigoInst_opcode                                0x00FFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoInst {
    ///////////////////////////////////////////////////////////
    #define   GET32FigoInst_opcode(r32)                        _BFGET_(r32,23, 0)
    #define   SET32FigoInst_opcode(r32,v)                      _BFSET_(r32,23, 0,v)

            UNSG32 u_opcode                                    : 24;
            UNSG32 RSVDx0_b24                                  :  8;
    ///////////////////////////////////////////////////////////
    } SIE_FigoInst;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoInst_drvrd(SIE_FigoInst *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoInst_drvwr(SIE_FigoInst *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoInst_reset(SIE_FigoInst *p);
     SIGN32 FigoInst_cmp  (SIE_FigoInst *p, SIE_FigoInst *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoInst_check(p,pie,pfx,hLOG) FigoInst_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoInst_print(p,    pfx,hLOG) FigoInst_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoInst
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ITCM                                     (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 figoItcm             (P)
///     # 0x00000 inst                 
///               $FigoInst            inst              REG    [2048]
///                                    ###
///                                    * Instruction memory, 8K word each maximum
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    8192B, bits:   49152b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ITCM
#define h_ITCM (){}

    #define     RA_ITCM_figoItcm                               0x0000
    #define     RA_ITCM_inst                                   0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ITCM {
    ///////////////////////////////////////////////////////////
              SIE_FigoInst                                     ie_inst[2048];
    ///////////////////////////////////////////////////////////
    } SIE_ITCM;

    ///////////////////////////////////////////////////////////
     SIGN32 ITCM_drvrd(SIE_ITCM *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ITCM_drvwr(SIE_ITCM *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ITCM_reset(SIE_ITCM *p);
     SIGN32 ITCM_cmp  (SIE_ITCM *p, SIE_ITCM *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ITCM_check(p,pie,pfx,hLOG) ITCM_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ITCM_print(p,    pfx,hLOG) ITCM_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ITCM
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoData                                 (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (RW)
///               ###
///               * 32-bit data
///               ###
///               %unsigned 32 data_0i                   
///               %unsigned 32 data_1i                   
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoData
#define h_FigoData (){}

    #define     BA_FigoData_data_0i                            0x0000
    #define     B16FigoData_data_0i                            0x0000
    #define   LSb32FigoData_data_0i                               0
    #define   LSb16FigoData_data_0i                               0
    #define       bFigoData_data_0i                            32
    #define   MSK32FigoData_data_0i                               0xFFFFFFFF

    #define     BA_FigoData_data_1i                            0x0004
    #define     B16FigoData_data_1i                            0x0004
    #define   LSb32FigoData_data_1i                               0
    #define   LSb16FigoData_data_1i                               0
    #define       bFigoData_data_1i                            32
    #define   MSK32FigoData_data_1i                               0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoData {
    ///////////////////////////////////////////////////////////
    #define   GET32FigoData_data_0i(r32)                       _BFGET_(r32,31, 0)
    #define   SET32FigoData_data_0i(r32,v)                     _BFSET_(r32,31, 0,v)

            UNSG32 u_data_0i                                   : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32FigoData_data_1i(r32)                       _BFGET_(r32,31, 0)
    #define   SET32FigoData_data_1i(r32,v)                     _BFSET_(r32,31, 0,v)

            UNSG32 u_data_1i                                   : 32;
    ///////////////////////////////////////////////////////////
    } SIE_FigoData;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoData_drvrd(SIE_FigoData *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoData_drvwr(SIE_FigoData *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoData_reset(SIE_FigoData *p);
     SIGN32 FigoData_cmp  (SIE_FigoData *p, SIE_FigoData *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoData_check(p,pie,pfx,hLOG) FigoData_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoData_print(p,    pfx,hLOG) FigoData_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoData
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoSys                 biu              (4,4)
///     ###
///     * FigoSys registers
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 HBO0                 (P)
///     # 0x00000 hbo0                 
///               $HBO                 hbo0              REG          
///     @ 0x00700 HBO1                 (P)
///     # 0x00700 hbo1                 
///               $HBO                 hbo1              REG          
///     @ 0x00E00                      (W-)
///     #         # Stuffing bytes...
///               %% 4096
///     @ 0x01000 FIGO0                (P)
///     # 0x01000 figo0                
///               $FigoReg             figo0             REG          
///     @ 0x03000 FIGO1                (P)
///     # 0x03000 figo1                
///               $FigoReg             figo1             REG          
///     @ 0x05000 DS                   (P)
///     # 0x05000 ds                   
///               $DataStreamer        ds                REG          
///     @ 0x05024                      (W-)
///     #         # Stuffing bytes...
///               %% 16096
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:   22528B, bits:    5086b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoSys
#define h_FigoSys (){}

    #define     RA_FigoSys_HBO0                                0x0000
    #define     RA_FigoSys_hbo0                                0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_FigoSys_HBO1                                0x0700
    #define     RA_FigoSys_hbo1                                0x0700
    ///////////////////////////////////////////////////////////
    #define     RA_FigoSys_FIGO0                               0x1000
    #define     RA_FigoSys_figo0                               0x1000
    ///////////////////////////////////////////////////////////
    #define     RA_FigoSys_FIGO1                               0x3000
    #define     RA_FigoSys_figo1                               0x3000
    ///////////////////////////////////////////////////////////
    #define     RA_FigoSys_DS                                  0x5000
    #define     RA_FigoSys_ds                                  0x5000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoSys {
    ///////////////////////////////////////////////////////////
              SIE_HBO                                          ie_hbo0;
    ///////////////////////////////////////////////////////////
              SIE_HBO                                          ie_hbo1;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxE00                                    [512];
    ///////////////////////////////////////////////////////////
              SIE_FigoReg                                      ie_figo0;
    ///////////////////////////////////////////////////////////
              SIE_FigoReg                                      ie_figo1;
    ///////////////////////////////////////////////////////////
              SIE_DataStreamer                                 ie_ds;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx5024                                   [2012];
    ///////////////////////////////////////////////////////////
    } SIE_FigoSys;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoSys_drvrd(SIE_FigoSys *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoSys_drvwr(SIE_FigoSys *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoSys_reset(SIE_FigoSys *p);
     SIGN32 FigoSys_cmp  (SIE_FigoSys *p, SIE_FigoSys *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoSys_check(p,pie,pfx,hLOG) FigoSys_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoSys_print(p,    pfx,hLOG) FigoSys_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoSys
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoSysBasic            biu              (4,4)
///     ###
///     * FigoSys registers
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 HBO0                 (P)
///     # 0x00000 hbo0                 
///               $HBO                 hbo0              REG          
///     @ 0x00700                      (W-)
///     #         # Stuffing bytes...
///               %% 2048
///     @ 0x00800 FIGO0                (P)
///     # 0x00800 figo0                
///               $FigoReg             figo0             REG          
///     @ 0x02800 DS                   (P)
///     # 0x02800 ds                   
///               $DataStreamer        ds                REG          
///     @ 0x02824                      (W-)
///     #         # Stuffing bytes...
///               %% 16096
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:   12288B, bits:    2609b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoSysBasic
#define h_FigoSysBasic (){}

    #define     RA_FigoSysBasic_HBO0                           0x0000
    #define     RA_FigoSysBasic_hbo0                           0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_FigoSysBasic_FIGO0                          0x0800
    #define     RA_FigoSysBasic_figo0                          0x0800
    ///////////////////////////////////////////////////////////
    #define     RA_FigoSysBasic_DS                             0x2800
    #define     RA_FigoSysBasic_ds                             0x2800
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoSysBasic {
    ///////////////////////////////////////////////////////////
              SIE_HBO                                          ie_hbo0;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx700                                    [256];
    ///////////////////////////////////////////////////////////
              SIE_FigoReg                                      ie_figo0;
    ///////////////////////////////////////////////////////////
              SIE_DataStreamer                                 ie_ds;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx2824                                   [2012];
    ///////////////////////////////////////////////////////////
    } SIE_FigoSysBasic;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoSysBasic_drvrd(SIE_FigoSysBasic *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoSysBasic_drvwr(SIE_FigoSysBasic *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoSysBasic_reset(SIE_FigoSysBasic *p);
     SIGN32 FigoSysBasic_cmp  (SIE_FigoSysBasic *p, SIE_FigoSysBasic *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoSysBasic_check(p,pie,pfx,hLOG) FigoSysBasic_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoSysBasic_print(p,    pfx,hLOG) FigoSysBasic_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoSysBasic
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CabacCmdX                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 6  syntaxID                  
///                                    : INIT                      0x0
///                                                 ###
///                                                 * Initial the M-coder, set colIRange to 0x1FE and colIOffset to read_bits(9)
///                                                 ###
///                                    : MB_TYPE_I                 0x1
///                                                 ###
///                                                 * mb_type(I slices only)
///                                                 ###
///                                    : MB_TYPE_P                 0x2
///                                                 ###
///                                                 * mb_type(P slices only)
///                                                 ###
///                                    : MB_TYPE_B                 0x3
///                                                 ###
///                                                 * mb_type(B slices only)
///                                                 ###
///                                    : SUB_MB_TYPE_P             0x4
///                                                 ###
///                                                 * sub_mb_type(P slices only)
///                                                 ###
///                                    : SUB_MB_TYPE_B             0x5
///                                                 ###
///                                                 * sub_mb_type(B slices only)
///                                                 ###
///                                    : MVD_X                     0x6
///                                                 ###
///                                                 * Mvd_l0[][][0], mvdl1[][][0]
///                                                 ###
///                                    : MVD_Y                     0x7
///                                                 ###
///                                                 * Mvd_l0[][][1], mvdl1[][][1]
///                                                 ###
///                                    : REF_IDX                   0x8
///                                                 ###
///                                                 * ref_idx_l0, ref_idx_l1
///                                                 ###
///                                    : MB_QP_DELTA               0x9
///                                                 ###
///                                                 * mb_qp_delta
///                                                 ###
///                                    : INTRA_CHROMA_PRED_MODE     0xA
///                                                 ###
///                                                 * intra_chroma_pred_mode
///                                                 ###
///                                    : INTRANXN_PRED_MODE        0xB
///                                                 ###
///                                                 * prev_intraNxN_pred_mode_flag & rem_intraNxN_pred_mode
///                                                 ###
///                                    : COEFF_INTRA16_DC          0xC
///                                                 ###
///                                                 * coeff_abs_level_minus1, block_cat=0
///                                                 ###
///                                    : COEFF_INTRA16_AC          0xD
///                                                 ###
///                                                 * coeff_abs_level_minus1, block_cat=1
///                                                 ###
///                                    : COEFF_4X4                 0xE
///                                                 ###
///                                                 * coeff_abs_level_minus1, block_cat=2
///                                                 ###
///                                    : COEFF_UV_DC               0xF
///                                                 ###
///                                                 * coeff_abs_level_minus1, block_cat=3
///                                                 ###
///                                    : COEFF_UV_AC              0x10
///                                                 ###
///                                                 * coeff_abs_level_minus1, block_cat=4
///                                                 ###
///                                    : COEFF_8X8                0x11
///                                                 ###
///                                                 * coeff_abs_level_minus1, block_cat=5
///                                                 ###
///                                    : END_OF_SLICE_FLAG        0x12
///                                                 ###
///                                                 * end_of_slice_flag
///                                                 ###
///                                    : MB_SKIP_FLAG_P           0x13
///                                                 ###
///                                                 * mb_skip_flag(P slices only)
///                                                 ###
///                                    : MB_SKIP_FLAG_B           0x14
///                                                 ###
///                                                 * mb_skip_flag(B slices only)
///                                                 ###
///                                    : MB_FIELD_DECODING_FLAG    0x15
///                                                 ###
///                                                 * mb_field_decoding_flag
///                                                 ###
///                                    : TRANSFORM_SIZE_8X8_FLAG    0x16
///                                                 ###
///                                                 * transform_size_8x8_flag
///                                                 ###
///                                    : CBP_LUMA                 0x17
///                                                 ###
///                                                 * Cbp for luma block
///                                                 ###
///                                    : CBP_CHROMA0              0x18
///                                                 ###
///                                                 * Cbp for first chroma block
///                                                 ###
///                                    : CBP_CHROMA1              0x19
///                                                 ###
///                                                 * Cbp for second chroma block
///                                                 ###
///                                    : CBF_INTRA16_DC           0x1A
///                                                 ###
///                                                 * Cbf, block_cat=0
///                                                 ###
///                                    : CBF_INTRA16_AC           0x1B
///                                                 ###
///                                                 * Cbf, block_cat=1
///                                                 ###
///                                    : CBF_4X4                  0x1C
///                                                 ###
///                                                 * Cbf, block_cat=2
///                                                 ###
///                                    : CBF_UV_DC                0x1D
///                                                 ###
///                                                 * Cbf, block_cat=3
///                                                 ###
///                                    : CBF_UV_AC                0x1E
///                                                 ###
///                                                 * Cbf, block_cat=4
///                                                 ###
///                                    : SLF_INTRA16_DC           0x1F
///                                                 ###
///                                                 * Significant & last_significant flags, block_cat=0
///                                                 ###
///                                    : SLF_INTRA16_AC           0x20
///                                                 ###
///                                                 * Significant & last_significant flags, block_cat=1
///                                                 ###
///                                    : SLF_4X4                  0x21
///                                                 ###
///                                                 * Significant & last_significant flags, block_cat=2
///                                                 ###
///                                    : SLF_UV_DC                0x22
///                                                 ###
///                                                 * Significant & last_significant flags, block_cat=3
///                                                 ###
///                                    : SLF_UV_AC                0x23
///                                                 ###
///                                                 * Significant & last_significant flags, block_cat=4
///                                                 ###
///                                    : SLF_8X8                  0x24
///                                                 ###
///                                                 * Significant & last_significant flags, block_cat=5
///                                                 ###
///                                    : BLK_INTRA16_DC           0x25
///                                                 ###
///                                                 * Combo command for a block, block_cat=0
///                                                 ###
///                                    : BLK_INTRA16_AC           0x26
///                                                 ###
///                                                 * Combo command for a block, block_cat=1
///                                                 ###
///                                    : BLK_4X4                  0x27
///                                                 ###
///                                                 * Combo command for a block, block_cat=2
///                                                 ###
///                                    : BLK_UV_DC                0x28
///                                                 ###
///                                                 * Combo command for a block, block_cat=3
///                                                 ###
///                                    : BLK_UV_AC                0x29
///                                                 ###
///                                                 * Combo command for a block, block_cat=4
///                                                 ###
///                                    : BLK_8X8                  0x2A
///                                                 ###
///                                                 * Combo command for a block, block_cat=5
///                                                 ###
///                                    : INIT_RAM                 0x3F
///                                                 ###
///                                                 * Command for initialing the ctxRam
///                                                 ###
///               %%        8          # Stuffing bits...
///               %unsigned 2  id                        
///                                    : cabacID                   0x1
///                                                 ###
///                                                 * id==2'b01 indicates cabacCmdX
///                                                 ###
///               %unsigned 9  arg                       
///                                    ###
///                                    * When syntaxID==INIT_RAM, it is the index of ctxRam.
///                                    * Others, it is the argument for the new cabac.
///                                    ###
///               %unsigned 7  ctxRamData                
///                                    ###
///                                    * The content of context state RAM. The value for each entry is (valMPS<<6)| pStateIdx.
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      24b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CabacCmdX
#define h_CabacCmdX (){}

    #define     BA_CabacCmdX_syntaxID                          0x0000
    #define     B16CabacCmdX_syntaxID                          0x0000
    #define   LSb32CabacCmdX_syntaxID                             0
    #define   LSb16CabacCmdX_syntaxID                             0
    #define       bCabacCmdX_syntaxID                          6
    #define   MSK32CabacCmdX_syntaxID                             0x0000003F
    #define        CabacCmdX_syntaxID_INIT                                  0x0
    #define        CabacCmdX_syntaxID_MB_TYPE_I                             0x1
    #define        CabacCmdX_syntaxID_MB_TYPE_P                             0x2
    #define        CabacCmdX_syntaxID_MB_TYPE_B                             0x3
    #define        CabacCmdX_syntaxID_SUB_MB_TYPE_P                         0x4
    #define        CabacCmdX_syntaxID_SUB_MB_TYPE_B                         0x5
    #define        CabacCmdX_syntaxID_MVD_X                                 0x6
    #define        CabacCmdX_syntaxID_MVD_Y                                 0x7
    #define        CabacCmdX_syntaxID_REF_IDX                               0x8
    #define        CabacCmdX_syntaxID_MB_QP_DELTA                           0x9
    #define        CabacCmdX_syntaxID_INTRA_CHROMA_PRED_MODE                0xA
    #define        CabacCmdX_syntaxID_INTRANXN_PRED_MODE                    0xB
    #define        CabacCmdX_syntaxID_COEFF_INTRA16_DC                      0xC
    #define        CabacCmdX_syntaxID_COEFF_INTRA16_AC                      0xD
    #define        CabacCmdX_syntaxID_COEFF_4X4                             0xE
    #define        CabacCmdX_syntaxID_COEFF_UV_DC                           0xF
    #define        CabacCmdX_syntaxID_COEFF_UV_AC                           0x10
    #define        CabacCmdX_syntaxID_COEFF_8X8                             0x11
    #define        CabacCmdX_syntaxID_END_OF_SLICE_FLAG                     0x12
    #define        CabacCmdX_syntaxID_MB_SKIP_FLAG_P                        0x13
    #define        CabacCmdX_syntaxID_MB_SKIP_FLAG_B                        0x14
    #define        CabacCmdX_syntaxID_MB_FIELD_DECODING_FLAG                0x15
    #define        CabacCmdX_syntaxID_TRANSFORM_SIZE_8X8_FLAG               0x16
    #define        CabacCmdX_syntaxID_CBP_LUMA                              0x17
    #define        CabacCmdX_syntaxID_CBP_CHROMA0                           0x18
    #define        CabacCmdX_syntaxID_CBP_CHROMA1                           0x19
    #define        CabacCmdX_syntaxID_CBF_INTRA16_DC                        0x1A
    #define        CabacCmdX_syntaxID_CBF_INTRA16_AC                        0x1B
    #define        CabacCmdX_syntaxID_CBF_4X4                               0x1C
    #define        CabacCmdX_syntaxID_CBF_UV_DC                             0x1D
    #define        CabacCmdX_syntaxID_CBF_UV_AC                             0x1E
    #define        CabacCmdX_syntaxID_SLF_INTRA16_DC                        0x1F
    #define        CabacCmdX_syntaxID_SLF_INTRA16_AC                        0x20
    #define        CabacCmdX_syntaxID_SLF_4X4                               0x21
    #define        CabacCmdX_syntaxID_SLF_UV_DC                             0x22
    #define        CabacCmdX_syntaxID_SLF_UV_AC                             0x23
    #define        CabacCmdX_syntaxID_SLF_8X8                               0x24
    #define        CabacCmdX_syntaxID_BLK_INTRA16_DC                        0x25
    #define        CabacCmdX_syntaxID_BLK_INTRA16_AC                        0x26
    #define        CabacCmdX_syntaxID_BLK_4X4                               0x27
    #define        CabacCmdX_syntaxID_BLK_UV_DC                             0x28
    #define        CabacCmdX_syntaxID_BLK_UV_AC                             0x29
    #define        CabacCmdX_syntaxID_BLK_8X8                               0x2A
    #define        CabacCmdX_syntaxID_INIT_RAM                              0x3F

    #define     BA_CabacCmdX_id                                0x0001
    #define     B16CabacCmdX_id                                0x0000
    #define   LSb32CabacCmdX_id                                   14
    #define   LSb16CabacCmdX_id                                   14
    #define       bCabacCmdX_id                                2
    #define   MSK32CabacCmdX_id                                   0x0000C000
    #define        CabacCmdX_id_cabacID                                     0x1

    #define     BA_CabacCmdX_arg                               0x0002
    #define     B16CabacCmdX_arg                               0x0002
    #define   LSb32CabacCmdX_arg                                  16
    #define   LSb16CabacCmdX_arg                                  0
    #define       bCabacCmdX_arg                               9
    #define   MSK32CabacCmdX_arg                                  0x01FF0000

    #define     BA_CabacCmdX_ctxRamData                        0x0003
    #define     B16CabacCmdX_ctxRamData                        0x0002
    #define   LSb32CabacCmdX_ctxRamData                           25
    #define   LSb16CabacCmdX_ctxRamData                           9
    #define       bCabacCmdX_ctxRamData                        7
    #define   MSK32CabacCmdX_ctxRamData                           0xFE000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CabacCmdX {
    ///////////////////////////////////////////////////////////
    #define   GET32CabacCmdX_syntaxID(r32)                     _BFGET_(r32, 5, 0)
    #define   SET32CabacCmdX_syntaxID(r32,v)                   _BFSET_(r32, 5, 0,v)
    #define   GET16CabacCmdX_syntaxID(r16)                     _BFGET_(r16, 5, 0)
    #define   SET16CabacCmdX_syntaxID(r16,v)                   _BFSET_(r16, 5, 0,v)

    #define   GET32CabacCmdX_id(r32)                           _BFGET_(r32,15,14)
    #define   SET32CabacCmdX_id(r32,v)                         _BFSET_(r32,15,14,v)
    #define   GET16CabacCmdX_id(r16)                           _BFGET_(r16,15,14)
    #define   SET16CabacCmdX_id(r16,v)                         _BFSET_(r16,15,14,v)

    #define   GET32CabacCmdX_arg(r32)                          _BFGET_(r32,24,16)
    #define   SET32CabacCmdX_arg(r32,v)                        _BFSET_(r32,24,16,v)
    #define   GET16CabacCmdX_arg(r16)                          _BFGET_(r16, 8, 0)
    #define   SET16CabacCmdX_arg(r16,v)                        _BFSET_(r16, 8, 0,v)

    #define   GET32CabacCmdX_ctxRamData(r32)                   _BFGET_(r32,31,25)
    #define   SET32CabacCmdX_ctxRamData(r32,v)                 _BFSET_(r32,31,25,v)
    #define   GET16CabacCmdX_ctxRamData(r16)                   _BFGET_(r16,15, 9)
    #define   SET16CabacCmdX_ctxRamData(r16,v)                 _BFSET_(r16,15, 9,v)

            UNSG32 u_syntaxID                                  :  6;
            UNSG32 RSVDx0_b6                                   :  8;
            UNSG32 u_id                                        :  2;
            UNSG32 u_arg                                       :  9;
            UNSG32 u_ctxRamData                                :  7;
    ///////////////////////////////////////////////////////////
    } SIE_CabacCmdX;

    ///////////////////////////////////////////////////////////
     SIGN32 CabacCmdX_drvrd(SIE_CabacCmdX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CabacCmdX_drvwr(SIE_CabacCmdX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CabacCmdX_reset(SIE_CabacCmdX *p);
     SIGN32 CabacCmdX_cmp  (SIE_CabacCmdX *p, SIE_CabacCmdX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CabacCmdX_check(p,pie,pfx,hLOG) CabacCmdX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CabacCmdX_print(p,    pfx,hLOG) CabacCmdX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CabacCmdX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BoolDecoderCmd          flat             (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 5  cmd                       
///                                    : INIT                      0x0
///                                                 ###
///                                                 * Initializes the BoolDecoder context. Sets value to 0, and range to 255.
///                                                 ###
///                                    : RST_REG                   0x1
///                                                 ###
///                                                 * Resets register-based probabilities to their default value. Use arg2 to specify the registers to be reset.
///                                                 ###
///                                    : DEC_LITERAL               0x2
///                                                 ###
///                                                 * Decode N bits with probability of 128. Specify N using arg2 field.
///                                                 ###
///                                    : DEC_BOOL                  0x3
///                                                 ###
///                                                 * Decode 1 bit with probability P. Specify P using arg1 field.
///                                                 ###
///                                    : DEC_COND                  0x4
///                                                 ###
///                                                 * Decode 1 bit with probability P. If result is 1, further decode N bits with probability of 128. Specify P using arg1 field, and N using arg2 field. Mainly used for probability updates.
///                                                 * The result of the 1-bit conditional bit is always returned as sev[0].
///                                                 * If sev[0] = 1, sev[N:1] will contain valid data.
///                                                 * If sev[0] = 0, sev[N:1] is invalid.
///                                                 ###
///                                    : DEC_MB_SEGMENT            0x5
///                                                 ###
///                                                 * Decode tree-encoded MB segment number.
///                                                 ###
///                                    : DEC_KF_YMODE              0x6
///                                                 ###
///                                                 * Decode tree-encoded key-frame Y mode.
///                                                 ###
///                                    : DEC_KF_BMODE              0x7
///                                                 ###
///                                                 * Decode tree-encoded key-frame B mode. Tree offset specified as arg3. The two-dimensional offset [10][10] is split into arg3[7:4] and arg3[3:0] fields.
///                                                 ###
///                                    : DEC_KF_UV_MODE            0x8
///                                                 ###
///                                                 * Decode tree-encoded key-frame UV mode.
///                                                 ###
///                                    : DEC_YMODE                 0x9
///                                                 ###
///                                                 * Decode tree-encoded non-key-frame Y mode.
///                                                 ###
///                                    : DEC_BMODE                 0xA
///                                                 ###
///                                                 * Decode tree-encoded non-key-frame B mode.
///                                                 ###
///                                    : DEC_UV_MODE               0xB
///                                                 ###
///                                                 * Decode tree-encoded non-key-frame UV mode.
///                                                 ###
///                                    : DEC_MV_REF                0xC
///                                                 ###
///                                                 * Decode tree-encoded motion vector reference. Tree offset specified as arg3.
///                                                 * arg3[2:0] = cnt[0]
///                                                 * arg3[5:3] = cnt[1]
///                                                 * arg3[8:6] = cnt[2]
///                                                 * arg3[11:9] = cnt[3]
///                                                 * Please refer to the official VP8 spec (section 16.3) for further information on the cnt array.
///                                                 ###
///                                    : DEC_MV_PARTITION          0xD
///                                                 ###
///                                                 * Decode tree-encoded motion vector partition type.
///                                                 ###
///                                    : DEC_SUB_MV_REF            0xE
///                                                 ###
///                                                 * Decode tree-encoded sub MB motion vector reference. Tree offset specified as arg3. Valid offset range [0 – 4].
///                                                 ###
///                                    : DEC_MV                    0xF
///                                                 ###
///                                                 * Decode tree-encoded motion vector component. Tree offset specified as arg3. Valid offset range [0 – 1].
///                                                 ###
///                                    : DEC_COEF                 0x10
///                                                 ###
///                                                 * Decode tree-encoded DCT coefficient. Tree offset specified as arg3. The three dimensional offset [4][8][3] is split into arg[6:5], arg[4:2] and arg[1:0] fields. This command will automatically repeat itself until all the 16 coefficients in the block have been decoded, or an EOB has been reached.
///                                                 ###
///                                    : CTX_RD                   0x1D
///                                                 ###
///                                                 * Read boolDecoder context variables Range[7:0] and Value[7:0]. Returned as sev[15:0] = {Value[7:0],Range[7:0]}.
///                                                 ###
///                                    : CTX_WR                   0x1E
///                                                 ###
///                                                 * Write boolDecoder context variables Range[7:0] with arg1[7:0], and Value[7:0] with arg3[7:0].
///                                                 ###
///                                    : INIT_RAM                 0x1F
///                                                 ###
///                                                 * Initialize or update location A of the context RAM with probability P. Specify A using arg3, and P using arg1.
///                                                 ###
///               %unsigned 8  arg1                      
///                                    ###
///                                    * Field used for specifying probabilities when cmd is DEC_BOOL, DEC_COND and INIT_RAM.
///                                    ###
///               %%        1          # Stuffing bits...
///               %unsigned 2  id                        
///                                    : boolCoderID               0x2
///                                                 ###
///                                                 * id = 0x2 indicates that this is a boolCoder command.
///                                                 ###
///               %unsigned 4  arg2                      
///                                    ###
///                                    * Field used for specifying number of bits to decode when cmd is DEC_LITERAL and DEC_COND. 0x0 means 16 bits.
///                                    * Also used by RST_REG command to specify which registers are reset. The enumerations are specified below.
///                                    ###
///                                    : rst_all                   0x0
///                                    : rst_mb_segment            0x1
///                                    : rst_ymode                 0x2
///                                    : rst_uv_mode               0x3
///                                    : rst_mv                    0x4
///               %unsigned 12 arg3                      
///                                    ###
///                                    * Field used for specifying the tree-offsets when decoding tree-encoded syntax. Also used for INIT_RAM to specify the context RAM address for initializing and updating its probability tables.
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BoolDecoderCmd
#define h_BoolDecoderCmd (){}

    #define     BA_BoolDecoderCmd_cmd                          0x0000
    #define     B16BoolDecoderCmd_cmd                          0x0000
    #define   LSb32BoolDecoderCmd_cmd                             0
    #define   LSb16BoolDecoderCmd_cmd                             0
    #define       bBoolDecoderCmd_cmd                          5
    #define   MSK32BoolDecoderCmd_cmd                             0x0000001F
    #define        BoolDecoderCmd_cmd_INIT                                  0x0
    #define        BoolDecoderCmd_cmd_RST_REG                               0x1
    #define        BoolDecoderCmd_cmd_DEC_LITERAL                           0x2
    #define        BoolDecoderCmd_cmd_DEC_BOOL                              0x3
    #define        BoolDecoderCmd_cmd_DEC_COND                              0x4
    #define        BoolDecoderCmd_cmd_DEC_MB_SEGMENT                        0x5
    #define        BoolDecoderCmd_cmd_DEC_KF_YMODE                          0x6
    #define        BoolDecoderCmd_cmd_DEC_KF_BMODE                          0x7
    #define        BoolDecoderCmd_cmd_DEC_KF_UV_MODE                        0x8
    #define        BoolDecoderCmd_cmd_DEC_YMODE                             0x9
    #define        BoolDecoderCmd_cmd_DEC_BMODE                             0xA
    #define        BoolDecoderCmd_cmd_DEC_UV_MODE                           0xB
    #define        BoolDecoderCmd_cmd_DEC_MV_REF                            0xC
    #define        BoolDecoderCmd_cmd_DEC_MV_PARTITION                      0xD
    #define        BoolDecoderCmd_cmd_DEC_SUB_MV_REF                        0xE
    #define        BoolDecoderCmd_cmd_DEC_MV                                0xF
    #define        BoolDecoderCmd_cmd_DEC_COEF                              0x10
    #define        BoolDecoderCmd_cmd_CTX_RD                                0x1D
    #define        BoolDecoderCmd_cmd_CTX_WR                                0x1E
    #define        BoolDecoderCmd_cmd_INIT_RAM                              0x1F

    #define     BA_BoolDecoderCmd_arg1                         0x0000
    #define     B16BoolDecoderCmd_arg1                         0x0000
    #define   LSb32BoolDecoderCmd_arg1                            5
    #define   LSb16BoolDecoderCmd_arg1                            5
    #define       bBoolDecoderCmd_arg1                         8
    #define   MSK32BoolDecoderCmd_arg1                            0x00001FE0

    #define     BA_BoolDecoderCmd_id                           0x0001
    #define     B16BoolDecoderCmd_id                           0x0000
    #define   LSb32BoolDecoderCmd_id                              14
    #define   LSb16BoolDecoderCmd_id                              14
    #define       bBoolDecoderCmd_id                           2
    #define   MSK32BoolDecoderCmd_id                              0x0000C000
    #define        BoolDecoderCmd_id_boolCoderID                            0x2

    #define     BA_BoolDecoderCmd_arg2                         0x0002
    #define     B16BoolDecoderCmd_arg2                         0x0002
    #define   LSb32BoolDecoderCmd_arg2                            16
    #define   LSb16BoolDecoderCmd_arg2                            0
    #define       bBoolDecoderCmd_arg2                         4
    #define   MSK32BoolDecoderCmd_arg2                            0x000F0000
    #define        BoolDecoderCmd_arg2_rst_all                              0x0
    #define        BoolDecoderCmd_arg2_rst_mb_segment                       0x1
    #define        BoolDecoderCmd_arg2_rst_ymode                            0x2
    #define        BoolDecoderCmd_arg2_rst_uv_mode                          0x3
    #define        BoolDecoderCmd_arg2_rst_mv                               0x4

    #define     BA_BoolDecoderCmd_arg3                         0x0002
    #define     B16BoolDecoderCmd_arg3                         0x0002
    #define   LSb32BoolDecoderCmd_arg3                            20
    #define   LSb16BoolDecoderCmd_arg3                            4
    #define       bBoolDecoderCmd_arg3                         12
    #define   MSK32BoolDecoderCmd_arg3                            0xFFF00000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BoolDecoderCmd {
    ///////////////////////////////////////////////////////////
    #define   GET32BoolDecoderCmd_cmd(r32)                     _BFGET_(r32, 4, 0)
    #define   SET32BoolDecoderCmd_cmd(r32,v)                   _BFSET_(r32, 4, 0,v)
    #define   GET16BoolDecoderCmd_cmd(r16)                     _BFGET_(r16, 4, 0)
    #define   SET16BoolDecoderCmd_cmd(r16,v)                   _BFSET_(r16, 4, 0,v)

    #define   GET32BoolDecoderCmd_arg1(r32)                    _BFGET_(r32,12, 5)
    #define   SET32BoolDecoderCmd_arg1(r32,v)                  _BFSET_(r32,12, 5,v)
    #define   GET16BoolDecoderCmd_arg1(r16)                    _BFGET_(r16,12, 5)
    #define   SET16BoolDecoderCmd_arg1(r16,v)                  _BFSET_(r16,12, 5,v)

    #define   GET32BoolDecoderCmd_id(r32)                      _BFGET_(r32,15,14)
    #define   SET32BoolDecoderCmd_id(r32,v)                    _BFSET_(r32,15,14,v)
    #define   GET16BoolDecoderCmd_id(r16)                      _BFGET_(r16,15,14)
    #define   SET16BoolDecoderCmd_id(r16,v)                    _BFSET_(r16,15,14,v)

    #define   GET32BoolDecoderCmd_arg2(r32)                    _BFGET_(r32,19,16)
    #define   SET32BoolDecoderCmd_arg2(r32,v)                  _BFSET_(r32,19,16,v)
    #define   GET16BoolDecoderCmd_arg2(r16)                    _BFGET_(r16, 3, 0)
    #define   SET16BoolDecoderCmd_arg2(r16,v)                  _BFSET_(r16, 3, 0,v)

    #define   GET32BoolDecoderCmd_arg3(r32)                    _BFGET_(r32,31,20)
    #define   SET32BoolDecoderCmd_arg3(r32,v)                  _BFSET_(r32,31,20,v)
    #define   GET16BoolDecoderCmd_arg3(r16)                    _BFGET_(r16,15, 4)
    #define   SET16BoolDecoderCmd_arg3(r16,v)                  _BFSET_(r16,15, 4,v)

            UNSG32 u_cmd                                       :  5;
            UNSG32 u_arg1                                      :  8;
            UNSG32 RSVDx0_b13                                  :  1;
            UNSG32 u_id                                        :  2;
            UNSG32 u_arg2                                      :  4;
            UNSG32 u_arg3                                      : 12;
    ///////////////////////////////////////////////////////////
    } SIE_BoolDecoderCmd;

    ///////////////////////////////////////////////////////////
     SIGN32 BoolDecoderCmd_drvrd(SIE_BoolDecoderCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BoolDecoderCmd_drvwr(SIE_BoolDecoderCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BoolDecoderCmd_reset(SIE_BoolDecoderCmd *p);
     SIGN32 BoolDecoderCmd_cmp  (SIE_BoolDecoderCmd *p, SIE_BoolDecoderCmd *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BoolDecoderCmd_check(p,pie,pfx,hLOG) BoolDecoderCmd_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BoolDecoderCmd_print(p,    pfx,hLOG) BoolDecoderCmd_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BoolDecoderCmd
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BoolEncoderCmd          flat             (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 5  cmd                       
///                                    : INIT                      0x0
///                                                 ###
///                                                 * Initializes the BoolEncoder context. Sets bottom to 0, and range to 255.
///                                                 ###
///                                    : RST_REG                   0x1
///                                                 ###
///                                                 * Resets register-based probabilities to their default values. Use arg2 to specify the registers to be reset.
///                                                 ###
///                                    : ENC_LITERAL               0x2
///                                                 ###
///                                                 * Encode N bits with probability of 128. Specify N using arg2 field.
///                                                 ###
///                                    : ENC_BOOL                  0x3
///                                                 ###
///                                                 * Encode 1 bit with probability P. Specify P using arg1 field.
///                                                 ###
///                                    : ENC_MB_SEGMENT            0x4
///                                                 ###
///                                                 * Tokenize and encode MB segment number.
///                                                 ###
///                                    : ENC_KF_YMODE              0x5
///                                                 ###
///                                                 * Tokenize and encode key-frame Y mode.
///                                                 ###
///                                    : ENC_KF_BMODE              0x6
///                                                 ###
///                                                 * Tokenize and encode key-frame B mode. Tree offset specified as arg3. Valid offset range [0 – 99].
///                                                 ###
///                                    : ENC_KF_UV_MODE            0x7
///                                                 ###
///                                                 * Tokenize and encode key-frame UV mode.
///                                                 ###
///                                    : ENC_YMODE                 0x8
///                                                 ###
///                                                 * Tokenize and encode non-key-frame Y mode.
///                                                 ###
///                                    : ENC_BMODE                 0x9
///                                                 ###
///                                                 * Tokenize and encode non-key-frame B mode.
///                                                 ###
///                                    : ENC_UV_MODE               0xA
///                                                 ###
///                                                 * Tokenize and encode non-key-frame UV mode.
///                                                 ###
///                                    : ENC_MV_REF                0xB
///                                                 ###
///                                                 * Tokenize and encode motion vector reference. Tree offset speficied as arg3. Valid offset range [0 – 5].
///                                                 ###
///                                    : ENC_MV_PARTITION          0xC
///                                                 ###
///                                                 * Tokenize and encode motion vector partition type.
///                                                 ###
///                                    : ENC_SUB_MV_REF            0xD
///                                                 ###
///                                                 * Tokenize and encode sub MB motion vector reference. Tree offset specified as arg3. Valid offset range [0 – 4].
///                                                 ###
///                                    : ENC_MV                    0xE
///                                                 ###
///                                                 * Tokenize and encode motion vector component. Tree offset specified as arg3. Valid offset range [0 – 1].
///                                                 ###
///                                    : ENC_COEF                  0xF
///                                                 ###
///                                                 * Tokenize and encode DCT coefficients. Tree offset specified as arg3. The three dimensional offset [4][8][3] is split into arg3[6:5], arg3[4:2] and arg3[1:0] fields. Unlike the decoder, this command will only encode 1 coefficient at a time.
///                                                 ###
///                                    : FLUSH                    0x10
///                                                 ###
///                                                 * Flushes the contents of the BoolEncoder and shifts out all remaining bits. The flush operation is equivalent to encoding 32 “0” with a probability of 128. It operates on the current active partition. Repeat for all available partitions.
///                                                 ###
///                                    : SET_PARTITION            0x1E
///                                                 ###
///                                                 * Sets the current active partition to encode. Unlike the decoder, hardware will maintain the partition context variables internally. Use arg2 to specify the partition number. Valid range is 0 – 3.
///                                                 ###
///                                    : INIT_RAM                 0x1F
///                                                 ###
///                                                 * Initialize or update location A of the context RAM with probability P. Specify A using arg3, and P using arg1.
///                                                 ###
///               %unsigned 8  arg1                      
///                                    ###
///                                    * Field used for specifying probabilities when cmd is ENC_BOOL.
///                                    ###
///               %%        1          # Stuffing bits...
///               %unsigned 2  id                        
///                                    : boolCoderID               0x2
///                                                 ###
///                                                 * id = 0x2 indicates that this is a boolCoder command.
///                                                 ###
///               %unsigned 4  arg2                      
///                                    ###
///                                    * Field used for specifying number of bits to encode when cmd is ENC_LITERAL. 0x0 means 16 bits. Also used by RST_REG command to specify which registers are reset (the enumerations are specified below), and by SET_PARTITION to set the active partition number.
///                                    ###
///                                    : rst_all                   0x0
///                                    : rst_mb_segment            0x1
///                                    : rst_ymode                 0x2
///                                    : rst_uv_mode               0x3
///                                    : rst_mv                    0x4
///               %unsigned 12 arg3                      
///                                    ###
///                                    * Field used for specifying the tree-offsets when encoding tree-encoded syntax. Also used for INIT_RAM to specify the context RAM address for initializing and updating its probability tables.
///                                    ###
///               %unsigned 16 sev0                      
///                                    ###
///                                    * Field for specifying the syntax element values to be encoded. Use this field for all ENC_* commands.
///                                    ###
///               %unsigned 16 sev1                      
///                                    ###
///                                    * Field for specifying the EOB flag for the ENC_COEF command.
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BoolEncoderCmd
#define h_BoolEncoderCmd (){}

    #define     BA_BoolEncoderCmd_cmd                          0x0000
    #define     B16BoolEncoderCmd_cmd                          0x0000
    #define   LSb32BoolEncoderCmd_cmd                             0
    #define   LSb16BoolEncoderCmd_cmd                             0
    #define       bBoolEncoderCmd_cmd                          5
    #define   MSK32BoolEncoderCmd_cmd                             0x0000001F
    #define        BoolEncoderCmd_cmd_INIT                                  0x0
    #define        BoolEncoderCmd_cmd_RST_REG                               0x1
    #define        BoolEncoderCmd_cmd_ENC_LITERAL                           0x2
    #define        BoolEncoderCmd_cmd_ENC_BOOL                              0x3
    #define        BoolEncoderCmd_cmd_ENC_MB_SEGMENT                        0x4
    #define        BoolEncoderCmd_cmd_ENC_KF_YMODE                          0x5
    #define        BoolEncoderCmd_cmd_ENC_KF_BMODE                          0x6
    #define        BoolEncoderCmd_cmd_ENC_KF_UV_MODE                        0x7
    #define        BoolEncoderCmd_cmd_ENC_YMODE                             0x8
    #define        BoolEncoderCmd_cmd_ENC_BMODE                             0x9
    #define        BoolEncoderCmd_cmd_ENC_UV_MODE                           0xA
    #define        BoolEncoderCmd_cmd_ENC_MV_REF                            0xB
    #define        BoolEncoderCmd_cmd_ENC_MV_PARTITION                      0xC
    #define        BoolEncoderCmd_cmd_ENC_SUB_MV_REF                        0xD
    #define        BoolEncoderCmd_cmd_ENC_MV                                0xE
    #define        BoolEncoderCmd_cmd_ENC_COEF                              0xF
    #define        BoolEncoderCmd_cmd_FLUSH                                 0x10
    #define        BoolEncoderCmd_cmd_SET_PARTITION                         0x1E
    #define        BoolEncoderCmd_cmd_INIT_RAM                              0x1F

    #define     BA_BoolEncoderCmd_arg1                         0x0000
    #define     B16BoolEncoderCmd_arg1                         0x0000
    #define   LSb32BoolEncoderCmd_arg1                            5
    #define   LSb16BoolEncoderCmd_arg1                            5
    #define       bBoolEncoderCmd_arg1                         8
    #define   MSK32BoolEncoderCmd_arg1                            0x00001FE0

    #define     BA_BoolEncoderCmd_id                           0x0001
    #define     B16BoolEncoderCmd_id                           0x0000
    #define   LSb32BoolEncoderCmd_id                              14
    #define   LSb16BoolEncoderCmd_id                              14
    #define       bBoolEncoderCmd_id                           2
    #define   MSK32BoolEncoderCmd_id                              0x0000C000
    #define        BoolEncoderCmd_id_boolCoderID                            0x2

    #define     BA_BoolEncoderCmd_arg2                         0x0002
    #define     B16BoolEncoderCmd_arg2                         0x0002
    #define   LSb32BoolEncoderCmd_arg2                            16
    #define   LSb16BoolEncoderCmd_arg2                            0
    #define       bBoolEncoderCmd_arg2                         4
    #define   MSK32BoolEncoderCmd_arg2                            0x000F0000
    #define        BoolEncoderCmd_arg2_rst_all                              0x0
    #define        BoolEncoderCmd_arg2_rst_mb_segment                       0x1
    #define        BoolEncoderCmd_arg2_rst_ymode                            0x2
    #define        BoolEncoderCmd_arg2_rst_uv_mode                          0x3
    #define        BoolEncoderCmd_arg2_rst_mv                               0x4

    #define     BA_BoolEncoderCmd_arg3                         0x0002
    #define     B16BoolEncoderCmd_arg3                         0x0002
    #define   LSb32BoolEncoderCmd_arg3                            20
    #define   LSb16BoolEncoderCmd_arg3                            4
    #define       bBoolEncoderCmd_arg3                         12
    #define   MSK32BoolEncoderCmd_arg3                            0xFFF00000

    #define     BA_BoolEncoderCmd_sev0                         0x0004
    #define     B16BoolEncoderCmd_sev0                         0x0004
    #define   LSb32BoolEncoderCmd_sev0                            0
    #define   LSb16BoolEncoderCmd_sev0                            0
    #define       bBoolEncoderCmd_sev0                         16
    #define   MSK32BoolEncoderCmd_sev0                            0x0000FFFF

    #define     BA_BoolEncoderCmd_sev1                         0x0006
    #define     B16BoolEncoderCmd_sev1                         0x0006
    #define   LSb32BoolEncoderCmd_sev1                            16
    #define   LSb16BoolEncoderCmd_sev1                            0
    #define       bBoolEncoderCmd_sev1                         16
    #define   MSK32BoolEncoderCmd_sev1                            0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BoolEncoderCmd {
    ///////////////////////////////////////////////////////////
    #define   GET32BoolEncoderCmd_cmd(r32)                     _BFGET_(r32, 4, 0)
    #define   SET32BoolEncoderCmd_cmd(r32,v)                   _BFSET_(r32, 4, 0,v)
    #define   GET16BoolEncoderCmd_cmd(r16)                     _BFGET_(r16, 4, 0)
    #define   SET16BoolEncoderCmd_cmd(r16,v)                   _BFSET_(r16, 4, 0,v)

    #define   GET32BoolEncoderCmd_arg1(r32)                    _BFGET_(r32,12, 5)
    #define   SET32BoolEncoderCmd_arg1(r32,v)                  _BFSET_(r32,12, 5,v)
    #define   GET16BoolEncoderCmd_arg1(r16)                    _BFGET_(r16,12, 5)
    #define   SET16BoolEncoderCmd_arg1(r16,v)                  _BFSET_(r16,12, 5,v)

    #define   GET32BoolEncoderCmd_id(r32)                      _BFGET_(r32,15,14)
    #define   SET32BoolEncoderCmd_id(r32,v)                    _BFSET_(r32,15,14,v)
    #define   GET16BoolEncoderCmd_id(r16)                      _BFGET_(r16,15,14)
    #define   SET16BoolEncoderCmd_id(r16,v)                    _BFSET_(r16,15,14,v)

    #define   GET32BoolEncoderCmd_arg2(r32)                    _BFGET_(r32,19,16)
    #define   SET32BoolEncoderCmd_arg2(r32,v)                  _BFSET_(r32,19,16,v)
    #define   GET16BoolEncoderCmd_arg2(r16)                    _BFGET_(r16, 3, 0)
    #define   SET16BoolEncoderCmd_arg2(r16,v)                  _BFSET_(r16, 3, 0,v)

    #define   GET32BoolEncoderCmd_arg3(r32)                    _BFGET_(r32,31,20)
    #define   SET32BoolEncoderCmd_arg3(r32,v)                  _BFSET_(r32,31,20,v)
    #define   GET16BoolEncoderCmd_arg3(r16)                    _BFGET_(r16,15, 4)
    #define   SET16BoolEncoderCmd_arg3(r16,v)                  _BFSET_(r16,15, 4,v)

            UNSG32 u_cmd                                       :  5;
            UNSG32 u_arg1                                      :  8;
            UNSG32 RSVDx0_b13                                  :  1;
            UNSG32 u_id                                        :  2;
            UNSG32 u_arg2                                      :  4;
            UNSG32 u_arg3                                      : 12;
    ///////////////////////////////////////////////////////////

    #define   GET32BoolEncoderCmd_sev0(r32)                    _BFGET_(r32,15, 0)
    #define   SET32BoolEncoderCmd_sev0(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16BoolEncoderCmd_sev0(r16)                    _BFGET_(r16,15, 0)
    #define   SET16BoolEncoderCmd_sev0(r16,v)                  _BFSET_(r16,15, 0,v)

    #define   GET32BoolEncoderCmd_sev1(r32)                    _BFGET_(r32,31,16)
    #define   SET32BoolEncoderCmd_sev1(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16BoolEncoderCmd_sev1(r16)                    _BFGET_(r16,15, 0)
    #define   SET16BoolEncoderCmd_sev1(r16,v)                  _BFSET_(r16,15, 0,v)

            UNSG32 u_sev0                                      : 16;
            UNSG32 u_sev1                                      : 16;
    ///////////////////////////////////////////////////////////
    } SIE_BoolEncoderCmd;

    ///////////////////////////////////////////////////////////
     SIGN32 BoolEncoderCmd_drvrd(SIE_BoolEncoderCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BoolEncoderCmd_drvwr(SIE_BoolEncoderCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BoolEncoderCmd_reset(SIE_BoolEncoderCmd *p);
     SIGN32 BoolEncoderCmd_cmp  (SIE_BoolEncoderCmd *p, SIE_BoolEncoderCmd *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BoolEncoderCmd_check(p,pie,pfx,hLOG) BoolEncoderCmd_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BoolEncoderCmd_print(p,    pfx,hLOG) BoolEncoderCmd_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BoolEncoderCmd
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE VldCmd                                   (4,4)
///     ###
///     * VLD Command Definition
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 8  cmd0                      
///                                    : nop                       0x0
///                                                 ###
///                                                 * Do nothing
///                                                 ###
///                                    : syncWord                  0x1
///                                                 ###
///                                                 * Search for the next sync word
///                                                 ###
///                                    : byteAlign                 0x2
///                                                 ###
///                                                 * Forward to the next byte aligned location
///                                                 ###
///                                    : skipBits                  0x3
///                                                 ###
///                                                 * Skip 1~63 bits (0 has no effect)
///                                                 ###
///                                    : skipWords                 0x4
///                                                 ###
///                                                 * skip 1~63 words; (1 word = 64 bits; 0 has no effect)
///                                                 ###
///                                    : skipBlks                  0x5
///                                                 ###
///                                                 * skip 1~63 blocks (1 block = 64 words; 0 has no effect)
///                                                 ###
///                                    : autoTab                   0x6
///                                                 ###
///                                                 * Use the table id generated from previous command for bitstream decoding
///                                                 ###
///                                    : signEGC                   0x7
///                                                 ###
///                                                 * Signed Exp-Golomb code decoding; need parameter to indicate max value
///                                                 ###
///                                    : unsgEGC                   0x8
///                                                 ###
///                                                 * Unsigned Exp-Golomb code decoding; need parameter to indicate max value
///                                                 ###
///                                    : getBits                   0x9
///                                                 ###
///                                                 * Get a fix number of bits
///                                                 ###
///                                    : loopAuto                  0xA
///                                                 ###
///                                                 * 1. Combined with a table lookup command: Execute cmd1 once, then repeat autoTab for up to the specified number of times. Parameter of 0 is treated as a spetial value defined in vldReg.loopCnt.
///                                                 * 2. Combined with syncWord command.
///                                                 ###
///                                    : detectEOS                 0xB
///                                                 ###
///                                                 * Detect end of slice (optional padding + 23 0's)
///                                                 ###
///                                    : interrupt                 0xC
///                                                 ###
///                                                 * triggers an interrupt upon receiving this command
///                                                 ###
///                                    : setError                  0xD
///                                                 ###
///                                                 * Set status.illegalCode to 1.
///                                                 ###
///                                    : unsgEGC1                  0xE
///                                                 ###
///                                                 * Unsigned first order Golomb code decoding; need parameter to indicate max value.
///                                                 ###
///                                    : unsgEGC2                  0xF
///                                    : unsgEGC3                 0x10
///                                    : rvStructVLC              0x11
///                                    : tableOffset              0x20
///                                                 ###
///                                                 * Starting index of sev tables
///                                                 * Other values map to table indices directly
///                                                 ###
///               %unsigned 6  par0                      
///                                    ###
///                                    * Parameter for cmd0
///                                    ###
///               %unsigned 2  id                        
///                                    : VLD                       0x0
///                                                 ###
///                                                 * id==2'b00 indicates vldCmd
///                                                 ###
///               %unsigned 8  cmd1                      
///                                    ###
///                                    * Same definition as cmd0, except that loopAuto cannot appear at cmd1
///                                    ###
///               %unsigned 6  par1                      
///                                    ###
///                                    * Parameter for cmd1
///                                    ###
///               %unsigned 2  bkspace                   
///                                    ###
///                                    * Number of pending commands to abort; 0 means to commit all. Currently only support 0 & 1
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_VldCmd
#define h_VldCmd (){}

    #define     BA_VldCmd_cmd0                                 0x0000
    #define     B16VldCmd_cmd0                                 0x0000
    #define   LSb32VldCmd_cmd0                                    0
    #define   LSb16VldCmd_cmd0                                    0
    #define       bVldCmd_cmd0                                 8
    #define   MSK32VldCmd_cmd0                                    0x000000FF
    #define        VldCmd_cmd0_nop                                          0x0
    #define        VldCmd_cmd0_syncWord                                     0x1
    #define        VldCmd_cmd0_byteAlign                                    0x2
    #define        VldCmd_cmd0_skipBits                                     0x3
    #define        VldCmd_cmd0_skipWords                                    0x4
    #define        VldCmd_cmd0_skipBlks                                     0x5
    #define        VldCmd_cmd0_autoTab                                      0x6
    #define        VldCmd_cmd0_signEGC                                      0x7
    #define        VldCmd_cmd0_unsgEGC                                      0x8
    #define        VldCmd_cmd0_getBits                                      0x9
    #define        VldCmd_cmd0_loopAuto                                     0xA
    #define        VldCmd_cmd0_detectEOS                                    0xB
    #define        VldCmd_cmd0_interrupt                                    0xC
    #define        VldCmd_cmd0_setError                                     0xD
    #define        VldCmd_cmd0_unsgEGC1                                     0xE
    #define        VldCmd_cmd0_unsgEGC2                                     0xF
    #define        VldCmd_cmd0_unsgEGC3                                     0x10
    #define        VldCmd_cmd0_rvStructVLC                                  0x11
    #define        VldCmd_cmd0_tableOffset                                  0x20

    #define     BA_VldCmd_par0                                 0x0001
    #define     B16VldCmd_par0                                 0x0000
    #define   LSb32VldCmd_par0                                    8
    #define   LSb16VldCmd_par0                                    8
    #define       bVldCmd_par0                                 6
    #define   MSK32VldCmd_par0                                    0x00003F00

    #define     BA_VldCmd_id                                   0x0001
    #define     B16VldCmd_id                                   0x0000
    #define   LSb32VldCmd_id                                      14
    #define   LSb16VldCmd_id                                      14
    #define       bVldCmd_id                                   2
    #define   MSK32VldCmd_id                                      0x0000C000
    #define        VldCmd_id_VLD                                            0x0

    #define     BA_VldCmd_cmd1                                 0x0002
    #define     B16VldCmd_cmd1                                 0x0002
    #define   LSb32VldCmd_cmd1                                    16
    #define   LSb16VldCmd_cmd1                                    0
    #define       bVldCmd_cmd1                                 8
    #define   MSK32VldCmd_cmd1                                    0x00FF0000

    #define     BA_VldCmd_par1                                 0x0003
    #define     B16VldCmd_par1                                 0x0002
    #define   LSb32VldCmd_par1                                    24
    #define   LSb16VldCmd_par1                                    8
    #define       bVldCmd_par1                                 6
    #define   MSK32VldCmd_par1                                    0x3F000000

    #define     BA_VldCmd_bkspace                              0x0003
    #define     B16VldCmd_bkspace                              0x0002
    #define   LSb32VldCmd_bkspace                                 30
    #define   LSb16VldCmd_bkspace                                 14
    #define       bVldCmd_bkspace                              2
    #define   MSK32VldCmd_bkspace                                 0xC0000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_VldCmd {
    ///////////////////////////////////////////////////////////
    #define   GET32VldCmd_cmd0(r32)                            _BFGET_(r32, 7, 0)
    #define   SET32VldCmd_cmd0(r32,v)                          _BFSET_(r32, 7, 0,v)
    #define   GET16VldCmd_cmd0(r16)                            _BFGET_(r16, 7, 0)
    #define   SET16VldCmd_cmd0(r16,v)                          _BFSET_(r16, 7, 0,v)

    #define   GET32VldCmd_par0(r32)                            _BFGET_(r32,13, 8)
    #define   SET32VldCmd_par0(r32,v)                          _BFSET_(r32,13, 8,v)
    #define   GET16VldCmd_par0(r16)                            _BFGET_(r16,13, 8)
    #define   SET16VldCmd_par0(r16,v)                          _BFSET_(r16,13, 8,v)

    #define   GET32VldCmd_id(r32)                              _BFGET_(r32,15,14)
    #define   SET32VldCmd_id(r32,v)                            _BFSET_(r32,15,14,v)
    #define   GET16VldCmd_id(r16)                              _BFGET_(r16,15,14)
    #define   SET16VldCmd_id(r16,v)                            _BFSET_(r16,15,14,v)

    #define   GET32VldCmd_cmd1(r32)                            _BFGET_(r32,23,16)
    #define   SET32VldCmd_cmd1(r32,v)                          _BFSET_(r32,23,16,v)
    #define   GET16VldCmd_cmd1(r16)                            _BFGET_(r16, 7, 0)
    #define   SET16VldCmd_cmd1(r16,v)                          _BFSET_(r16, 7, 0,v)

    #define   GET32VldCmd_par1(r32)                            _BFGET_(r32,29,24)
    #define   SET32VldCmd_par1(r32,v)                          _BFSET_(r32,29,24,v)
    #define   GET16VldCmd_par1(r16)                            _BFGET_(r16,13, 8)
    #define   SET16VldCmd_par1(r16,v)                          _BFSET_(r16,13, 8,v)

    #define   GET32VldCmd_bkspace(r32)                         _BFGET_(r32,31,30)
    #define   SET32VldCmd_bkspace(r32,v)                       _BFSET_(r32,31,30,v)
    #define   GET16VldCmd_bkspace(r16)                         _BFGET_(r16,15,14)
    #define   SET16VldCmd_bkspace(r16,v)                       _BFSET_(r16,15,14,v)

            UNSG32 u_cmd0                                      :  8;
            UNSG32 u_par0                                      :  6;
            UNSG32 u_id                                        :  2;
            UNSG32 u_cmd1                                      :  8;
            UNSG32 u_par1                                      :  6;
            UNSG32 u_bkspace                                   :  2;
    ///////////////////////////////////////////////////////////
    } SIE_VldCmd;

    ///////////////////////////////////////////////////////////
     SIGN32 VldCmd_drvrd(SIE_VldCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 VldCmd_drvwr(SIE_VldCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void VldCmd_reset(SIE_VldCmd *p);
     SIGN32 VldCmd_cmp  (SIE_VldCmd *p, SIE_VldCmd *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define VldCmd_check(p,pie,pfx,hLOG) VldCmd_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define VldCmd_print(p,    pfx,hLOG) VldCmd_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: VldCmd
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CABACCmd                                 (4,4)
///     ###
///     * Command format for CABAC Extension
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 9  cmdCtxIdxInit             
///                                    ###
///                                    * The unique ID for the context variables. Each context is associated with a state and a MPS(most probable symbol)
///                                    ###
///               %unsigned 3  para                      0x0
///                                    ###
///                                    * Optional parameter
///                                    ###
///               %unsigned 2  cmd                       
///                                    : init                      0x0
///                                                 ###
///                                                 * Initialize the CABAC decode engine. Internal variable codIRange receives the first 9 bits from the bit buffer and codIOffset gets the value of 0x1FE
///                                                 ###
///                                    : decode                    0x1
///                                                 ###
///                                                 * Decode one sytanx values
///                                                 ###
///                                    : loop                      0x2
///                                                 ###
///                                                 * Decode multiple syntax values, using loopCount as the maximum number
///                                                 ###
///                                    : constrained               0x3
///                                                 ###
///                                                 * Decode one syntax values with constrained range, using loopCount as the bound
///                                                 ###
///               %unsigned 2  id                        
///                                    : cabacID                   0x1
///                                                 ###
///                                                 * id==2'b01 indicates cabacCmd
///                                                 ###
///               %unsigned 6  loopCount                 
///                                    ###
///                                    * The loop count for repeatedly decoding using the same ctxIdxOffset
///                                    * Also used as constrained SE range
///                                    ###
///               %unsigned 1  loopCtxIdxInitSel         
///                                    : useCmdCtxIdx              0x0
///                                                 ###
///                                                 * Use the cmdCtxIdxInit at the beginning of each loop
///                                                 ###
///                                    : useRbCtxIdx               0x1
///                                                 ###
///                                                 * Use the last ctxIdx generated by RB for previous loop at the beginning of new loop
///                                                 ###
///               %%        9          # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      23b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CABACCmd
#define h_CABACCmd (){}

    #define     BA_CABACCmd_cmdCtxIdxInit                      0x0000
    #define     B16CABACCmd_cmdCtxIdxInit                      0x0000
    #define   LSb32CABACCmd_cmdCtxIdxInit                         0
    #define   LSb16CABACCmd_cmdCtxIdxInit                         0
    #define       bCABACCmd_cmdCtxIdxInit                      9
    #define   MSK32CABACCmd_cmdCtxIdxInit                         0x000001FF

    #define     BA_CABACCmd_para                               0x0001
    #define     B16CABACCmd_para                               0x0000
    #define   LSb32CABACCmd_para                                  9
    #define   LSb16CABACCmd_para                                  9
    #define       bCABACCmd_para                               3
    #define   MSK32CABACCmd_para                                  0x00000E00

    #define     BA_CABACCmd_cmd                                0x0001
    #define     B16CABACCmd_cmd                                0x0000
    #define   LSb32CABACCmd_cmd                                   12
    #define   LSb16CABACCmd_cmd                                   12
    #define       bCABACCmd_cmd                                2
    #define   MSK32CABACCmd_cmd                                   0x00003000
    #define        CABACCmd_cmd_init                                        0x0
    #define        CABACCmd_cmd_decode                                      0x1
    #define        CABACCmd_cmd_loop                                        0x2
    #define        CABACCmd_cmd_constrained                                 0x3

    #define     BA_CABACCmd_id                                 0x0001
    #define     B16CABACCmd_id                                 0x0000
    #define   LSb32CABACCmd_id                                    14
    #define   LSb16CABACCmd_id                                    14
    #define       bCABACCmd_id                                 2
    #define   MSK32CABACCmd_id                                    0x0000C000
    #define        CABACCmd_id_cabacID                                      0x1

    #define     BA_CABACCmd_loopCount                          0x0002
    #define     B16CABACCmd_loopCount                          0x0002
    #define   LSb32CABACCmd_loopCount                             16
    #define   LSb16CABACCmd_loopCount                             0
    #define       bCABACCmd_loopCount                          6
    #define   MSK32CABACCmd_loopCount                             0x003F0000

    #define     BA_CABACCmd_loopCtxIdxInitSel                  0x0002
    #define     B16CABACCmd_loopCtxIdxInitSel                  0x0002
    #define   LSb32CABACCmd_loopCtxIdxInitSel                     22
    #define   LSb16CABACCmd_loopCtxIdxInitSel                     6
    #define       bCABACCmd_loopCtxIdxInitSel                  1
    #define   MSK32CABACCmd_loopCtxIdxInitSel                     0x00400000
    #define        CABACCmd_loopCtxIdxInitSel_useCmdCtxIdx                  0x0
    #define        CABACCmd_loopCtxIdxInitSel_useRbCtxIdx                   0x1
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CABACCmd {
    ///////////////////////////////////////////////////////////
    #define   GET32CABACCmd_cmdCtxIdxInit(r32)                 _BFGET_(r32, 8, 0)
    #define   SET32CABACCmd_cmdCtxIdxInit(r32,v)               _BFSET_(r32, 8, 0,v)
    #define   GET16CABACCmd_cmdCtxIdxInit(r16)                 _BFGET_(r16, 8, 0)
    #define   SET16CABACCmd_cmdCtxIdxInit(r16,v)               _BFSET_(r16, 8, 0,v)

    #define   GET32CABACCmd_para(r32)                          _BFGET_(r32,11, 9)
    #define   SET32CABACCmd_para(r32,v)                        _BFSET_(r32,11, 9,v)
    #define   GET16CABACCmd_para(r16)                          _BFGET_(r16,11, 9)
    #define   SET16CABACCmd_para(r16,v)                        _BFSET_(r16,11, 9,v)

    #define   GET32CABACCmd_cmd(r32)                           _BFGET_(r32,13,12)
    #define   SET32CABACCmd_cmd(r32,v)                         _BFSET_(r32,13,12,v)
    #define   GET16CABACCmd_cmd(r16)                           _BFGET_(r16,13,12)
    #define   SET16CABACCmd_cmd(r16,v)                         _BFSET_(r16,13,12,v)

    #define   GET32CABACCmd_id(r32)                            _BFGET_(r32,15,14)
    #define   SET32CABACCmd_id(r32,v)                          _BFSET_(r32,15,14,v)
    #define   GET16CABACCmd_id(r16)                            _BFGET_(r16,15,14)
    #define   SET16CABACCmd_id(r16,v)                          _BFSET_(r16,15,14,v)

    #define   GET32CABACCmd_loopCount(r32)                     _BFGET_(r32,21,16)
    #define   SET32CABACCmd_loopCount(r32,v)                   _BFSET_(r32,21,16,v)
    #define   GET16CABACCmd_loopCount(r16)                     _BFGET_(r16, 5, 0)
    #define   SET16CABACCmd_loopCount(r16,v)                   _BFSET_(r16, 5, 0,v)

    #define   GET32CABACCmd_loopCtxIdxInitSel(r32)             _BFGET_(r32,22,22)
    #define   SET32CABACCmd_loopCtxIdxInitSel(r32,v)           _BFSET_(r32,22,22,v)
    #define   GET16CABACCmd_loopCtxIdxInitSel(r16)             _BFGET_(r16, 6, 6)
    #define   SET16CABACCmd_loopCtxIdxInitSel(r16,v)           _BFSET_(r16, 6, 6,v)

            UNSG32 u_cmdCtxIdxInit                             :  9;
            UNSG32 u_para                                      :  3;
            UNSG32 u_cmd                                       :  2;
            UNSG32 u_id                                        :  2;
            UNSG32 u_loopCount                                 :  6;
            UNSG32 u_loopCtxIdxInitSel                         :  1;
            UNSG32 RSVDx0_b23                                  :  9;
    ///////////////////////////////////////////////////////////
    } SIE_CABACCmd;

    ///////////////////////////////////////////////////////////
     SIGN32 CABACCmd_drvrd(SIE_CABACCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CABACCmd_drvwr(SIE_CABACCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CABACCmd_reset(SIE_CABACCmd *p);
     SIGN32 CABACCmd_cmp  (SIE_CABACCmd *p, SIE_CABACCmd *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CABACCmd_check(p,pie,pfx,hLOG) CABACCmd_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CABACCmd_print(p,    pfx,hLOG) CABACCmd_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CABACCmd
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BOOLCODERCmd                             (4,4)
///     ###
///     * Command format for CABAC Extension
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 14 cmd                       
///                                    ###
///                                    * Bool coder command ID
///                                    ###
///               %unsigned 2  id                        
///                                    : boolcoderID               0x2
///                                                 ###
///                                                 * id==2'b10 indicates bool coder command
///                                                 ###
///               %unsigned 8  param                     
///                                    ###
///                                    * Bool coder parameter
///                                    ###
///               %%        8          # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      24b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BOOLCODERCmd
#define h_BOOLCODERCmd (){}

    #define     BA_BOOLCODERCmd_cmd                            0x0000
    #define     B16BOOLCODERCmd_cmd                            0x0000
    #define   LSb32BOOLCODERCmd_cmd                               0
    #define   LSb16BOOLCODERCmd_cmd                               0
    #define       bBOOLCODERCmd_cmd                            14
    #define   MSK32BOOLCODERCmd_cmd                               0x00003FFF

    #define     BA_BOOLCODERCmd_id                             0x0001
    #define     B16BOOLCODERCmd_id                             0x0000
    #define   LSb32BOOLCODERCmd_id                                14
    #define   LSb16BOOLCODERCmd_id                                14
    #define       bBOOLCODERCmd_id                             2
    #define   MSK32BOOLCODERCmd_id                                0x0000C000
    #define        BOOLCODERCmd_id_boolcoderID                              0x2

    #define     BA_BOOLCODERCmd_param                          0x0002
    #define     B16BOOLCODERCmd_param                          0x0002
    #define   LSb32BOOLCODERCmd_param                             16
    #define   LSb16BOOLCODERCmd_param                             0
    #define       bBOOLCODERCmd_param                          8
    #define   MSK32BOOLCODERCmd_param                             0x00FF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BOOLCODERCmd {
    ///////////////////////////////////////////////////////////
    #define   GET32BOOLCODERCmd_cmd(r32)                       _BFGET_(r32,13, 0)
    #define   SET32BOOLCODERCmd_cmd(r32,v)                     _BFSET_(r32,13, 0,v)
    #define   GET16BOOLCODERCmd_cmd(r16)                       _BFGET_(r16,13, 0)
    #define   SET16BOOLCODERCmd_cmd(r16,v)                     _BFSET_(r16,13, 0,v)

    #define   GET32BOOLCODERCmd_id(r32)                        _BFGET_(r32,15,14)
    #define   SET32BOOLCODERCmd_id(r32,v)                      _BFSET_(r32,15,14,v)
    #define   GET16BOOLCODERCmd_id(r16)                        _BFGET_(r16,15,14)
    #define   SET16BOOLCODERCmd_id(r16,v)                      _BFSET_(r16,15,14,v)

    #define   GET32BOOLCODERCmd_param(r32)                     _BFGET_(r32,23,16)
    #define   SET32BOOLCODERCmd_param(r32,v)                   _BFSET_(r32,23,16,v)
    #define   GET16BOOLCODERCmd_param(r16)                     _BFGET_(r16, 7, 0)
    #define   SET16BOOLCODERCmd_param(r16,v)                   _BFSET_(r16, 7, 0,v)

            UNSG32 u_cmd                                       : 14;
            UNSG32 u_id                                        :  2;
            UNSG32 u_param                                     :  8;
            UNSG32 RSVDx0_b24                                  :  8;
    ///////////////////////////////////////////////////////////
    } SIE_BOOLCODERCmd;

    ///////////////////////////////////////////////////////////
     SIGN32 BOOLCODERCmd_drvrd(SIE_BOOLCODERCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BOOLCODERCmd_drvwr(SIE_BOOLCODERCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BOOLCODERCmd_reset(SIE_BOOLCODERCmd *p);
     SIGN32 BOOLCODERCmd_cmp  (SIE_BOOLCODERCmd *p, SIE_BOOLCODERCmd *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BOOLCODERCmd_check(p,pie,pfx,hLOG) BOOLCODERCmd_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BOOLCODERCmd_print(p,    pfx,hLOG) BOOLCODERCmd_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BOOLCODERCmd
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE VldQueue                                 (4,4)
///     ###
///     * Syntax Element Values
///     ###
///     # # ----------------------------------------------------------
///               : CMDQ_DEPTH         0x8
///               : SEVQ_DEPTH         0x8
///     @ 0x00000 Dummy                (P)
///               %unsigned 1  xxx                       0x0
///               %%        31         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       1b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_VldQueue
#define h_VldQueue (){}

    #define        VldQueue_CMDQ_DEPTH                         0x8
    #define        VldQueue_SEVQ_DEPTH                         0x8
    ///////////////////////////////////////////////////////////
    #define     RA_VldQueue_Dummy                              0x0000

    #define     BA_VldQueue_Dummy_xxx                          0x0000
    #define     B16VldQueue_Dummy_xxx                          0x0000
    #define   LSb32VldQueue_Dummy_xxx                             0
    #define   LSb16VldQueue_Dummy_xxx                             0
    #define       bVldQueue_Dummy_xxx                          1
    #define   MSK32VldQueue_Dummy_xxx                             0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_VldQueue {
    ///////////////////////////////////////////////////////////
    #define   GET32VldQueue_Dummy_xxx(r32)                     _BFGET_(r32, 0, 0)
    #define   SET32VldQueue_Dummy_xxx(r32,v)                   _BFSET_(r32, 0, 0,v)
    #define   GET16VldQueue_Dummy_xxx(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16VldQueue_Dummy_xxx(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define     w32VldQueue_Dummy                              {\
            UNSG32 uDummy_xxx                                  :  1;\
            UNSG32 RSVDx0_b1                                   : 31;\
          }
    union { UNSG32 u32VldQueue_Dummy;
            struct w32VldQueue_Dummy;
          };
    ///////////////////////////////////////////////////////////
    } SIE_VldQueue;

    typedef union  T32VldQueue_Dummy
          { UNSG32 u32;
            struct w32VldQueue_Dummy;
                 } T32VldQueue_Dummy;
    ///////////////////////////////////////////////////////////

    typedef union  TVldQueue_Dummy
          { UNSG32 u32[1];
            struct {
            struct w32VldQueue_Dummy;
                   };
                 } TVldQueue_Dummy;

    ///////////////////////////////////////////////////////////
     SIGN32 VldQueue_drvrd(SIE_VldQueue *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 VldQueue_drvwr(SIE_VldQueue *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void VldQueue_reset(SIE_VldQueue *p);
     SIGN32 VldQueue_cmp  (SIE_VldQueue *p, SIE_VldQueue *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define VldQueue_check(p,pie,pfx,hLOG) VldQueue_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define VldQueue_print(p,    pfx,hLOG) VldQueue_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: VldQueue
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE VldSev                                   (4,4)
///     ###
///     * Syntax Element Values
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 32 sev0                      
///                                    ###
///                                    * Returned syntax element value of cmd0
///                                    ###
///                                    : timeout               0x80000000
///                                                 ###
///                                                 * VLD did not return valid data before timeout
///                                                 ###
///                                    : egcOverflow           0x7FFFFFFF
///                                                 ###
///                                                 * EGC decoding found more than 19 zeros
///                                                 ###
///                                    : loopEnd                   0x0
///                                                 ###
///                                                 * LoopAuto command stopped prematurely without error
///                                                 * other values as determined by cmd result
///                                                 ###
///               %unsigned 32 sev1                      
///                                    ###
///                                    * same return value definition as sev0
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_VldSev
#define h_VldSev (){}

    #define     BA_VldSev_sev0                                 0x0000
    #define     B16VldSev_sev0                                 0x0000
    #define   LSb32VldSev_sev0                                    0
    #define   LSb16VldSev_sev0                                    0
    #define       bVldSev_sev0                                 32
    #define   MSK32VldSev_sev0                                    0xFFFFFFFF
    #define        VldSev_sev0_timeout                                      0x80000000
    #define        VldSev_sev0_egcOverflow                                  0x7FFFFFFF
    #define        VldSev_sev0_loopEnd                                      0x0

    #define     BA_VldSev_sev1                                 0x0004
    #define     B16VldSev_sev1                                 0x0004
    #define   LSb32VldSev_sev1                                    0
    #define   LSb16VldSev_sev1                                    0
    #define       bVldSev_sev1                                 32
    #define   MSK32VldSev_sev1                                    0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_VldSev {
    ///////////////////////////////////////////////////////////
    #define   GET32VldSev_sev0(r32)                            _BFGET_(r32,31, 0)
    #define   SET32VldSev_sev0(r32,v)                          _BFSET_(r32,31, 0,v)

            UNSG32 u_sev0                                      : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32VldSev_sev1(r32)                            _BFGET_(r32,31, 0)
    #define   SET32VldSev_sev1(r32,v)                          _BFSET_(r32,31, 0,v)

            UNSG32 u_sev1                                      : 32;
    ///////////////////////////////////////////////////////////
    } SIE_VldSev;

    ///////////////////////////////////////////////////////////
     SIGN32 VldSev_drvrd(SIE_VldSev *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 VldSev_drvwr(SIE_VldSev *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void VldSev_reset(SIE_VldSev *p);
     SIGN32 VldSev_cmp  (SIE_VldSev *p, SIE_VldSev *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define VldSev_check(p,pie,pfx,hLOG) VldSev_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define VldSev_print(p,    pfx,hLOG) VldSev_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: VldSev
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE VldSyncWordSev                           (4,4)
///     ###
///     * Syntax Element Values
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 2  status                    
///                                    ###
///                                    * Returned search result
///                                    ###
///                                    : no_found                  0x0
///                                                 ###
///                                                 * VLD did not found valid syncword
///                                                 ###
///                                    : sync_found                0x1
///                                                 ###
///                                                 * Found matched scSuffix
///                                                 ###
///                                    : sync1_found               0x2
///                                                 ###
///                                                 * Found matched scSuffix1
///                                                 ###
///               %unsigned 22 counter                   
///                                    ###
///                                    * byte counter when the syncword is found.
///                                    ###
///               %unsigned 8  showbits_l                
///               %unsigned 31 showbits_h                
///               %%        1          # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      63b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_VldSyncWordSev
#define h_VldSyncWordSev (){}

    #define     BA_VldSyncWordSev_status                       0x0000
    #define     B16VldSyncWordSev_status                       0x0000
    #define   LSb32VldSyncWordSev_status                          0
    #define   LSb16VldSyncWordSev_status                          0
    #define       bVldSyncWordSev_status                       2
    #define   MSK32VldSyncWordSev_status                          0x00000003
    #define        VldSyncWordSev_status_no_found                           0x0
    #define        VldSyncWordSev_status_sync_found                         0x1
    #define        VldSyncWordSev_status_sync1_found                        0x2

    #define     BA_VldSyncWordSev_counter                      0x0000
    #define     B16VldSyncWordSev_counter                      0x0000
    #define   LSb32VldSyncWordSev_counter                         2
    #define   LSb16VldSyncWordSev_counter                         2
    #define       bVldSyncWordSev_counter                      22
    #define   MSK32VldSyncWordSev_counter                         0x00FFFFFC

    #define     BA_VldSyncWordSev_showbits_l                   0x0003
    #define     B16VldSyncWordSev_showbits_l                   0x0002
    #define   LSb32VldSyncWordSev_showbits_l                      24
    #define   LSb16VldSyncWordSev_showbits_l                      8
    #define       bVldSyncWordSev_showbits_l                   8
    #define   MSK32VldSyncWordSev_showbits_l                      0xFF000000

    #define     BA_VldSyncWordSev_showbits_h                   0x0004
    #define     B16VldSyncWordSev_showbits_h                   0x0004
    #define   LSb32VldSyncWordSev_showbits_h                      0
    #define   LSb16VldSyncWordSev_showbits_h                      0
    #define       bVldSyncWordSev_showbits_h                   31
    #define   MSK32VldSyncWordSev_showbits_h                      0x7FFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_VldSyncWordSev {
    ///////////////////////////////////////////////////////////
    #define   GET32VldSyncWordSev_status(r32)                  _BFGET_(r32, 1, 0)
    #define   SET32VldSyncWordSev_status(r32,v)                _BFSET_(r32, 1, 0,v)
    #define   GET16VldSyncWordSev_status(r16)                  _BFGET_(r16, 1, 0)
    #define   SET16VldSyncWordSev_status(r16,v)                _BFSET_(r16, 1, 0,v)

    #define   GET32VldSyncWordSev_counter(r32)                 _BFGET_(r32,23, 2)
    #define   SET32VldSyncWordSev_counter(r32,v)               _BFSET_(r32,23, 2,v)

    #define   GET32VldSyncWordSev_showbits_l(r32)              _BFGET_(r32,31,24)
    #define   SET32VldSyncWordSev_showbits_l(r32,v)            _BFSET_(r32,31,24,v)
    #define   GET16VldSyncWordSev_showbits_l(r16)              _BFGET_(r16,15, 8)
    #define   SET16VldSyncWordSev_showbits_l(r16,v)            _BFSET_(r16,15, 8,v)

            UNSG32 u_status                                    :  2;
            UNSG32 u_counter                                   : 22;
            UNSG32 u_showbits_l                                :  8;
    ///////////////////////////////////////////////////////////

    #define   GET32VldSyncWordSev_showbits_h(r32)              _BFGET_(r32,30, 0)
    #define   SET32VldSyncWordSev_showbits_h(r32,v)            _BFSET_(r32,30, 0,v)

            UNSG32 u_showbits_h                                : 31;
            UNSG32 RSVDx4_b31                                  :  1;
    ///////////////////////////////////////////////////////////
    } SIE_VldSyncWordSev;

    ///////////////////////////////////////////////////////////
     SIGN32 VldSyncWordSev_drvrd(SIE_VldSyncWordSev *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 VldSyncWordSev_drvwr(SIE_VldSyncWordSev *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void VldSyncWordSev_reset(SIE_VldSyncWordSev *p);
     SIGN32 VldSyncWordSev_cmp  (SIE_VldSyncWordSev *p, SIE_VldSyncWordSev *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define VldSyncWordSev_check(p,pie,pfx,hLOG) VldSyncWordSev_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define VldSyncWordSev_print(p,    pfx,hLOG) VldSyncWordSev_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: VldSyncWordSev
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CabacCtx                                 (4,4)
///     ###
///     * Format of the entries in the Cabac Context RAM
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 state                (RW)
///               %unsigned 6  pStateIdx                 
///               %unsigned 1  valMPS                    
///               %unsigned 9  nxtCtxNum                 
///               %unsigned 9  nxtCtx1Num                
///               %%        7          # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      25b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CabacCtx
#define h_CabacCtx (){}

    #define     RA_CabacCtx_state                              0x0000

    #define     BA_CabacCtx_state_pStateIdx                    0x0000
    #define     B16CabacCtx_state_pStateIdx                    0x0000
    #define   LSb32CabacCtx_state_pStateIdx                       0
    #define   LSb16CabacCtx_state_pStateIdx                       0
    #define       bCabacCtx_state_pStateIdx                    6
    #define   MSK32CabacCtx_state_pStateIdx                       0x0000003F

    #define     BA_CabacCtx_state_valMPS                       0x0000
    #define     B16CabacCtx_state_valMPS                       0x0000
    #define   LSb32CabacCtx_state_valMPS                          6
    #define   LSb16CabacCtx_state_valMPS                          6
    #define       bCabacCtx_state_valMPS                       1
    #define   MSK32CabacCtx_state_valMPS                          0x00000040

    #define     BA_CabacCtx_state_nxtCtxNum                    0x0000
    #define     B16CabacCtx_state_nxtCtxNum                    0x0000
    #define   LSb32CabacCtx_state_nxtCtxNum                       7
    #define   LSb16CabacCtx_state_nxtCtxNum                       7
    #define       bCabacCtx_state_nxtCtxNum                    9
    #define   MSK32CabacCtx_state_nxtCtxNum                       0x0000FF80

    #define     BA_CabacCtx_state_nxtCtx1Num                   0x0002
    #define     B16CabacCtx_state_nxtCtx1Num                   0x0002
    #define   LSb32CabacCtx_state_nxtCtx1Num                      16
    #define   LSb16CabacCtx_state_nxtCtx1Num                      0
    #define       bCabacCtx_state_nxtCtx1Num                   9
    #define   MSK32CabacCtx_state_nxtCtx1Num                      0x01FF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CabacCtx {
    ///////////////////////////////////////////////////////////
    #define   GET32CabacCtx_state_pStateIdx(r32)               _BFGET_(r32, 5, 0)
    #define   SET32CabacCtx_state_pStateIdx(r32,v)             _BFSET_(r32, 5, 0,v)
    #define   GET16CabacCtx_state_pStateIdx(r16)               _BFGET_(r16, 5, 0)
    #define   SET16CabacCtx_state_pStateIdx(r16,v)             _BFSET_(r16, 5, 0,v)

    #define   GET32CabacCtx_state_valMPS(r32)                  _BFGET_(r32, 6, 6)
    #define   SET32CabacCtx_state_valMPS(r32,v)                _BFSET_(r32, 6, 6,v)
    #define   GET16CabacCtx_state_valMPS(r16)                  _BFGET_(r16, 6, 6)
    #define   SET16CabacCtx_state_valMPS(r16,v)                _BFSET_(r16, 6, 6,v)

    #define   GET32CabacCtx_state_nxtCtxNum(r32)               _BFGET_(r32,15, 7)
    #define   SET32CabacCtx_state_nxtCtxNum(r32,v)             _BFSET_(r32,15, 7,v)
    #define   GET16CabacCtx_state_nxtCtxNum(r16)               _BFGET_(r16,15, 7)
    #define   SET16CabacCtx_state_nxtCtxNum(r16,v)             _BFSET_(r16,15, 7,v)

    #define   GET32CabacCtx_state_nxtCtx1Num(r32)              _BFGET_(r32,24,16)
    #define   SET32CabacCtx_state_nxtCtx1Num(r32,v)            _BFSET_(r32,24,16,v)
    #define   GET16CabacCtx_state_nxtCtx1Num(r16)              _BFGET_(r16, 8, 0)
    #define   SET16CabacCtx_state_nxtCtx1Num(r16,v)            _BFSET_(r16, 8, 0,v)

    #define     w32CabacCtx_state                              {\
            UNSG32 ustate_pStateIdx                            :  6;\
            UNSG32 ustate_valMPS                               :  1;\
            UNSG32 ustate_nxtCtxNum                            :  9;\
            UNSG32 ustate_nxtCtx1Num                           :  9;\
            UNSG32 RSVDx0_b25                                  :  7;\
          }
    union { UNSG32 u32CabacCtx_state;
            struct w32CabacCtx_state;
          };
    ///////////////////////////////////////////////////////////
    } SIE_CabacCtx;

    typedef union  T32CabacCtx_state
          { UNSG32 u32;
            struct w32CabacCtx_state;
                 } T32CabacCtx_state;
    ///////////////////////////////////////////////////////////

    typedef union  TCabacCtx_state
          { UNSG32 u32[1];
            struct {
            struct w32CabacCtx_state;
                   };
                 } TCabacCtx_state;

    ///////////////////////////////////////////////////////////
     SIGN32 CabacCtx_drvrd(SIE_CabacCtx *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CabacCtx_drvwr(SIE_CabacCtx *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CabacCtx_reset(SIE_CabacCtx *p);
     SIGN32 CabacCtx_cmp  (SIE_CabacCtx *p, SIE_CabacCtx *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CabacCtx_check(p,pie,pfx,hLOG) CabacCtx_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CabacCtx_print(p,    pfx,hLOG) CabacCtx_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CabacCtx
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CtxTable                                 (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 Ctx                  
///               $CabacCtx            Ctx               REG     [512]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    2048B, bits:   12800b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CtxTable
#define h_CtxTable (){}

    #define     RA_CtxTable_Ctx                                0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CtxTable {
    ///////////////////////////////////////////////////////////
              SIE_CabacCtx                                     ie_Ctx[512];
    ///////////////////////////////////////////////////////////
    } SIE_CtxTable;

    ///////////////////////////////////////////////////////////
     SIGN32 CtxTable_drvrd(SIE_CtxTable *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CtxTable_drvwr(SIE_CtxTable *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CtxTable_reset(SIE_CtxTable *p);
     SIGN32 CtxTable_cmp  (SIE_CtxTable *p, SIE_CtxTable *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CtxTable_check(p,pie,pfx,hLOG) CtxTable_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CtxTable_print(p,    pfx,hLOG) CtxTable_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CtxTable
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE VldIntf                                  (4,4)
///     ###
///     * Dummy register definitionsfor VLD interfaces
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 msg                  (RW-)
///               %unsigned 32 val                       
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_VldIntf
#define h_VldIntf (){}

    #define     RA_VldIntf_msg                                 0x0000

    #define     BA_VldIntf_msg_val                             0x0000
    #define     B16VldIntf_msg_val                             0x0000
    #define   LSb32VldIntf_msg_val                                0
    #define   LSb16VldIntf_msg_val                                0
    #define       bVldIntf_msg_val                             32
    #define   MSK32VldIntf_msg_val                                0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_VldIntf {
    ///////////////////////////////////////////////////////////
    #define   GET32VldIntf_msg_val(r32)                        _BFGET_(r32,31, 0)
    #define   SET32VldIntf_msg_val(r32,v)                      _BFSET_(r32,31, 0,v)

    #define     w32VldIntf_msg                                 {\
            UNSG32 umsg_val                                    : 32;\
          }
    union { UNSG32 u32VldIntf_msg;
            struct w32VldIntf_msg;
          };
    ///////////////////////////////////////////////////////////
    } SIE_VldIntf;

    typedef union  T32VldIntf_msg
          { UNSG32 u32;
            struct w32VldIntf_msg;
                 } T32VldIntf_msg;
    ///////////////////////////////////////////////////////////

    typedef union  TVldIntf_msg
          { UNSG32 u32[1];
            struct {
            struct w32VldIntf_msg;
                   };
                 } TVldIntf_msg;

    ///////////////////////////////////////////////////////////
     SIGN32 VldIntf_drvrd(SIE_VldIntf *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 VldIntf_drvwr(SIE_VldIntf *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void VldIntf_reset(SIE_VldIntf *p);
     SIGN32 VldIntf_cmp  (SIE_VldIntf *p, SIE_VldIntf *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define VldIntf_check(p,pie,pfx,hLOG) VldIntf_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define VldIntf_print(p,    pfx,hLOG) VldIntf_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: VldIntf
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE VldCounter                               (4,4)
///     ###
///     * Format of the entries in the Cabac Context RAM
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 counter              (R-)
///               %unsigned 3  bit                       
///               %unsigned 29 byte                      
///                                    ###
///                                    * Automatically clear after kickoff
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_VldCounter
#define h_VldCounter (){}

    #define     RA_VldCounter_counter                          0x0000

    #define     BA_VldCounter_counter_bit                      0x0000
    #define     B16VldCounter_counter_bit                      0x0000
    #define   LSb32VldCounter_counter_bit                         0
    #define   LSb16VldCounter_counter_bit                         0
    #define       bVldCounter_counter_bit                      3
    #define   MSK32VldCounter_counter_bit                         0x00000007

    #define     BA_VldCounter_counter_byte                     0x0000
    #define     B16VldCounter_counter_byte                     0x0000
    #define   LSb32VldCounter_counter_byte                        3
    #define   LSb16VldCounter_counter_byte                        3
    #define       bVldCounter_counter_byte                     29
    #define   MSK32VldCounter_counter_byte                        0xFFFFFFF8
    ///////////////////////////////////////////////////////////

    typedef struct SIE_VldCounter {
    ///////////////////////////////////////////////////////////
    #define   GET32VldCounter_counter_bit(r32)                 _BFGET_(r32, 2, 0)
    #define   SET32VldCounter_counter_bit(r32,v)               _BFSET_(r32, 2, 0,v)
    #define   GET16VldCounter_counter_bit(r16)                 _BFGET_(r16, 2, 0)
    #define   SET16VldCounter_counter_bit(r16,v)               _BFSET_(r16, 2, 0,v)

    #define   GET32VldCounter_counter_byte(r32)                _BFGET_(r32,31, 3)
    #define   SET32VldCounter_counter_byte(r32,v)              _BFSET_(r32,31, 3,v)

    #define     w32VldCounter_counter                          {\
            UNSG32 ucounter_bit                                :  3;\
            UNSG32 ucounter_byte                               : 29;\
          }
    union { UNSG32 u32VldCounter_counter;
            struct w32VldCounter_counter;
          };
    ///////////////////////////////////////////////////////////
    } SIE_VldCounter;

    typedef union  T32VldCounter_counter
          { UNSG32 u32;
            struct w32VldCounter_counter;
                 } T32VldCounter_counter;
    ///////////////////////////////////////////////////////////

    typedef union  TVldCounter_counter
          { UNSG32 u32[1];
            struct {
            struct w32VldCounter_counter;
                   };
                 } TVldCounter_counter;

    ///////////////////////////////////////////////////////////
     SIGN32 VldCounter_drvrd(SIE_VldCounter *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 VldCounter_drvwr(SIE_VldCounter *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void VldCounter_reset(SIE_VldCounter *p);
     SIGN32 VldCounter_cmp  (SIE_VldCounter *p, SIE_VldCounter *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define VldCounter_check(p,pie,pfx,hLOG) VldCounter_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define VldCounter_print(p,    pfx,hLOG) VldCounter_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: VldCounter
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE VldBitBuf                                (4,4)
///     ###
///     * VLD bit buffer [0:31]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 bitbuf               (R-)
///               %unsigned 32 bitbuf                    
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_VldBitBuf
#define h_VldBitBuf (){}

    #define     RA_VldBitBuf_bitbuf                            0x0000

    #define     BA_VldBitBuf_bitbuf_bitbuf                     0x0000
    #define     B16VldBitBuf_bitbuf_bitbuf                     0x0000
    #define   LSb32VldBitBuf_bitbuf_bitbuf                        0
    #define   LSb16VldBitBuf_bitbuf_bitbuf                        0
    #define       bVldBitBuf_bitbuf_bitbuf                     32
    #define   MSK32VldBitBuf_bitbuf_bitbuf                        0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_VldBitBuf {
    ///////////////////////////////////////////////////////////
    #define   GET32VldBitBuf_bitbuf_bitbuf(r32)                _BFGET_(r32,31, 0)
    #define   SET32VldBitBuf_bitbuf_bitbuf(r32,v)              _BFSET_(r32,31, 0,v)

    #define     w32VldBitBuf_bitbuf                            {\
            UNSG32 ubitbuf_bitbuf                              : 32;\
          }
    union { UNSG32 u32VldBitBuf_bitbuf;
            struct w32VldBitBuf_bitbuf;
          };
    ///////////////////////////////////////////////////////////
    } SIE_VldBitBuf;

    typedef union  T32VldBitBuf_bitbuf
          { UNSG32 u32;
            struct w32VldBitBuf_bitbuf;
                 } T32VldBitBuf_bitbuf;
    ///////////////////////////////////////////////////////////

    typedef union  TVldBitBuf_bitbuf
          { UNSG32 u32[1];
            struct {
            struct w32VldBitBuf_bitbuf;
                   };
                 } TVldBitBuf_bitbuf;

    ///////////////////////////////////////////////////////////
     SIGN32 VldBitBuf_drvrd(SIE_VldBitBuf *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 VldBitBuf_drvwr(SIE_VldBitBuf *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void VldBitBuf_reset(SIE_VldBitBuf *p);
     SIGN32 VldBitBuf_cmp  (SIE_VldBitBuf *p, SIE_VldBitBuf *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define VldBitBuf_check(p,pie,pfx,hLOG) VldBitBuf_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define VldBitBuf_print(p,    pfx,hLOG) VldBitBuf_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: VldBitBuf
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE VldStatus                                (4,4)
///     ###
///     * Format of the entries in the Cabac Context RAM
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 status               (RW-)
///               %unsigned 1  illegalCode               0x0
///                                    ###
///                                    * 1: decoding error has occurred; write 1 to clear:
///                                    ###
///               %unsigned 1  scpCrossed                0x0
///                                    ###
///                                    * 1: reached byte-aligned 23 zeros during decoding, indicating potential start code prefix or end of slice reached. Bit pointer will not cross this boundary, and sev will return 0. Write 1 to clear
///                                    ###
///               %unsigned 1  overflow                  0x0
///                                    ###
///                                    * 1: CMDQ overflowed. Write 1 to clear
///                                    ###
///               %unsigned 1  underflow                 0x0
///                                    ###
///                                    * 1: SEVQ underflowed. Write 1 to clear
///                                    ###
///               %unsigned 1  cmdqBusy                  0x0
///                                    ###
///                                    * 1: cmdQ is not empty. Write 1 to clear & reset cmdQ
///                                    ###
///               %unsigned 1  vldBusy                   0x0
///                                    ###
///                                    * 1: vld decoding engine is still busy. Write 1 to clear & reset vld decoding engine
///                                    ###
///               %unsigned 1  sevqBusy                  0x0
///                                    ###
///                                    * 1: sevQ is not empty. Write 1 to clear & reset sevQ
///                                    ###
///               %%        25         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       7b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_VldStatus
#define h_VldStatus (){}

    #define     RA_VldStatus_status                            0x0000

    #define     BA_VldStatus_status_illegalCode                0x0000
    #define     B16VldStatus_status_illegalCode                0x0000
    #define   LSb32VldStatus_status_illegalCode                   0
    #define   LSb16VldStatus_status_illegalCode                   0
    #define       bVldStatus_status_illegalCode                1
    #define   MSK32VldStatus_status_illegalCode                   0x00000001

    #define     BA_VldStatus_status_scpCrossed                 0x0000
    #define     B16VldStatus_status_scpCrossed                 0x0000
    #define   LSb32VldStatus_status_scpCrossed                    1
    #define   LSb16VldStatus_status_scpCrossed                    1
    #define       bVldStatus_status_scpCrossed                 1
    #define   MSK32VldStatus_status_scpCrossed                    0x00000002

    #define     BA_VldStatus_status_overflow                   0x0000
    #define     B16VldStatus_status_overflow                   0x0000
    #define   LSb32VldStatus_status_overflow                      2
    #define   LSb16VldStatus_status_overflow                      2
    #define       bVldStatus_status_overflow                   1
    #define   MSK32VldStatus_status_overflow                      0x00000004

    #define     BA_VldStatus_status_underflow                  0x0000
    #define     B16VldStatus_status_underflow                  0x0000
    #define   LSb32VldStatus_status_underflow                     3
    #define   LSb16VldStatus_status_underflow                     3
    #define       bVldStatus_status_underflow                  1
    #define   MSK32VldStatus_status_underflow                     0x00000008

    #define     BA_VldStatus_status_cmdqBusy                   0x0000
    #define     B16VldStatus_status_cmdqBusy                   0x0000
    #define   LSb32VldStatus_status_cmdqBusy                      4
    #define   LSb16VldStatus_status_cmdqBusy                      4
    #define       bVldStatus_status_cmdqBusy                   1
    #define   MSK32VldStatus_status_cmdqBusy                      0x00000010

    #define     BA_VldStatus_status_vldBusy                    0x0000
    #define     B16VldStatus_status_vldBusy                    0x0000
    #define   LSb32VldStatus_status_vldBusy                       5
    #define   LSb16VldStatus_status_vldBusy                       5
    #define       bVldStatus_status_vldBusy                    1
    #define   MSK32VldStatus_status_vldBusy                       0x00000020

    #define     BA_VldStatus_status_sevqBusy                   0x0000
    #define     B16VldStatus_status_sevqBusy                   0x0000
    #define   LSb32VldStatus_status_sevqBusy                      6
    #define   LSb16VldStatus_status_sevqBusy                      6
    #define       bVldStatus_status_sevqBusy                   1
    #define   MSK32VldStatus_status_sevqBusy                      0x00000040
    ///////////////////////////////////////////////////////////

    typedef struct SIE_VldStatus {
    ///////////////////////////////////////////////////////////
    #define   GET32VldStatus_status_illegalCode(r32)           _BFGET_(r32, 0, 0)
    #define   SET32VldStatus_status_illegalCode(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16VldStatus_status_illegalCode(r16)           _BFGET_(r16, 0, 0)
    #define   SET16VldStatus_status_illegalCode(r16,v)         _BFSET_(r16, 0, 0,v)

    #define   GET32VldStatus_status_scpCrossed(r32)            _BFGET_(r32, 1, 1)
    #define   SET32VldStatus_status_scpCrossed(r32,v)          _BFSET_(r32, 1, 1,v)
    #define   GET16VldStatus_status_scpCrossed(r16)            _BFGET_(r16, 1, 1)
    #define   SET16VldStatus_status_scpCrossed(r16,v)          _BFSET_(r16, 1, 1,v)

    #define   GET32VldStatus_status_overflow(r32)              _BFGET_(r32, 2, 2)
    #define   SET32VldStatus_status_overflow(r32,v)            _BFSET_(r32, 2, 2,v)
    #define   GET16VldStatus_status_overflow(r16)              _BFGET_(r16, 2, 2)
    #define   SET16VldStatus_status_overflow(r16,v)            _BFSET_(r16, 2, 2,v)

    #define   GET32VldStatus_status_underflow(r32)             _BFGET_(r32, 3, 3)
    #define   SET32VldStatus_status_underflow(r32,v)           _BFSET_(r32, 3, 3,v)
    #define   GET16VldStatus_status_underflow(r16)             _BFGET_(r16, 3, 3)
    #define   SET16VldStatus_status_underflow(r16,v)           _BFSET_(r16, 3, 3,v)

    #define   GET32VldStatus_status_cmdqBusy(r32)              _BFGET_(r32, 4, 4)
    #define   SET32VldStatus_status_cmdqBusy(r32,v)            _BFSET_(r32, 4, 4,v)
    #define   GET16VldStatus_status_cmdqBusy(r16)              _BFGET_(r16, 4, 4)
    #define   SET16VldStatus_status_cmdqBusy(r16,v)            _BFSET_(r16, 4, 4,v)

    #define   GET32VldStatus_status_vldBusy(r32)               _BFGET_(r32, 5, 5)
    #define   SET32VldStatus_status_vldBusy(r32,v)             _BFSET_(r32, 5, 5,v)
    #define   GET16VldStatus_status_vldBusy(r16)               _BFGET_(r16, 5, 5)
    #define   SET16VldStatus_status_vldBusy(r16,v)             _BFSET_(r16, 5, 5,v)

    #define   GET32VldStatus_status_sevqBusy(r32)              _BFGET_(r32, 6, 6)
    #define   SET32VldStatus_status_sevqBusy(r32,v)            _BFSET_(r32, 6, 6,v)
    #define   GET16VldStatus_status_sevqBusy(r16)              _BFGET_(r16, 6, 6)
    #define   SET16VldStatus_status_sevqBusy(r16,v)            _BFSET_(r16, 6, 6,v)

    #define     w32VldStatus_status                            {\
            UNSG32 ustatus_illegalCode                         :  1;\
            UNSG32 ustatus_scpCrossed                          :  1;\
            UNSG32 ustatus_overflow                            :  1;\
            UNSG32 ustatus_underflow                           :  1;\
            UNSG32 ustatus_cmdqBusy                            :  1;\
            UNSG32 ustatus_vldBusy                             :  1;\
            UNSG32 ustatus_sevqBusy                            :  1;\
            UNSG32 RSVDx0_b7                                   : 25;\
          }
    union { UNSG32 u32VldStatus_status;
            struct w32VldStatus_status;
          };
    ///////////////////////////////////////////////////////////
    } SIE_VldStatus;

    typedef union  T32VldStatus_status
          { UNSG32 u32;
            struct w32VldStatus_status;
                 } T32VldStatus_status;
    ///////////////////////////////////////////////////////////

    typedef union  TVldStatus_status
          { UNSG32 u32[1];
            struct {
            struct w32VldStatus_status;
                   };
                 } TVldStatus_status;

    ///////////////////////////////////////////////////////////
     SIGN32 VldStatus_drvrd(SIE_VldStatus *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 VldStatus_drvwr(SIE_VldStatus *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void VldStatus_reset(SIE_VldStatus *p);
     SIGN32 VldStatus_cmp  (SIE_VldStatus *p, SIE_VldStatus *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define VldStatus_check(p,pie,pfx,hLOG) VldStatus_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define VldStatus_print(p,    pfx,hLOG) VldStatus_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: VldStatus
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE VldReg                  biu              (4,4)
///     ###
///     * VLD register definition
///     ###
///     # # ----------------------------------------------------------
///               : RegBase            0x0
///                            ###
///                            * Starting offset address for VLD registers
///                            ###
///     @ 0x00000 flow                 (RW-)
///               ###
///               * VLD flow control
///               ###
///               %unsigned 1  enable                    0x0
///                                    ###
///                                    * Write 1 to enable VLD core and bitstream DMA transfer; write 0 to disable VLD core and bitstream DMA transfer;
///                                    ###
///               %unsigned 1  select                    0x0
///                                    ###
///                                    * Write 1 to get input bitstream from vScope FIFO channel.
///                                    * Write 0 to get input bitstream from dHub channel.
///                                    ###
///               %%        30         # Stuffing bits...
///     @ 0x00004 ctrl                 (P)
///               %unsigned 1  noScpDetect               0x0
///                                    ###
///                                    * 1:do not perform on-the-fly detection of EOS.
///                                    ###
///               %unsigned 1  noStuffRemoval            0x0
///                                    ###
///                                    * 1: do not remove emulation stuffing bytes
///                                    ###
///               %unsigned 1  avsStuffRemoval           0x0
///                                    ###
///                                    * 1: AVS-style bit removal (2 bits of 10b)
///                                    ###
///               %%        29         # Stuffing bits...
///     @ 0x00008 Status               (P)
///     # 0x00008 status               
///               $VldStatus           status            MEM          
///     @ 0x0000C Counter              (P)
///     # 0x0000C counter              
///               $VldCounter          counter           MEM          
///     @ 0x00010 BitBuffer            (P)
///     # 0x00010 bitbuf               
///               $VldBitBuf           bitbuf            MEM          
///     @ 0x00014 waitMax              (P)
///               %unsigned 16 cyc                       0x0
///                                    ###
///                                    * Maximum number of cycles to wait before DMA timeout occurs. 0 means no timeout
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00018 skipBytes            (P)
///               %unsigned 22 v                         0x0
///                                    ###
///                                    * number of bytes to skip after vld is enabled.
///                                    ###
///               %%        10         # Stuffing bits...
///     @ 0x0001C searchRange          (P)
///               %unsigned 22 v                         0x0
///                                    ###
///                                    * maximum number of bytes allowed to skip forward when executing syncWord command. When syncWord command is combined with loopAuto command, this value is the total budget for the whole loop.
///                                    * Note that 0 means only stop when a syncWord is found. Less than 8 is not allowed.
///                                    ###
///               %%        10         # Stuffing bits...
///     @ 0x00020 dmaWait              (P)
///               %unsigned 16 cyc                       0x4
///                                    ###
///                                    * Cycle count to be waited before fetching VES from external DMA agent when the VES queue is empty.
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00024 vldTblSet            (P)
///               %unsigned 4  format                    0x0
///                                    : H264                      0x0
///                                    : MPEG1                     0x2
///                                    : MPEG2                     0x4
///                                    : VC1                       0x6
///                                    : MPEG4                     0x1
///                                    : H263                      0x3
///                                    : DIVX311                   0x5
///                                    : AVS                       0x7
///                                    : JPEG                      0x9
///                                    : RV89_Intra                0xA
///                                    : RV89_Inter                0xB
///                                                 ###
///                                                 * Used for supporting VLD tables of other video formats. Note that for odd# vldTblSet, the table ID should still start from 0x20, which is same as vldTblSet #0.
///                                                 ###
///               %%        28         # Stuffing bits...
///     @ 0x00028 escLoopCnt           (P)
///               %unsigned 16 v                         0x40
///                                    ###
///                                    * Loop count when the loopAuto parameter is 0.
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x0002C maxDecBytes          (P-)
///               %unsigned 22 v                         0x0
///                                    ###
///                                    * Maximum decoding bytes after VLD is enabled. VLD engine should not consume more than this value of bytes. When VLD reaches this limitation, the status.scpCrossed flag is set. VLD bit buffer pointer will not cross this limitation. In other words, the VLD treat this limitation as a sync word. Set to 0 to disable this limitation. Note that write to this register will reset the VLD internal byte counter (not Counter.count) to 0.
///                                    ###
///               %%        10         # Stuffing bits...
///     @ 0x00030 eosPrefix            (P)
///               %unsigned 8  pattern                   0x0
///               %unsigned 8  mask                      0xFF
///               %unsigned 1  nonskip                   0x0
///                                    ###
///                                    * End-of-slice prefix comparison pattern & mask
///                                    * nonskip specifies the behavior when bitstream is already byte aligned:
///                                    * 1: eosPrefix matching is mandatory
///                                    * 0: eosPrefix matching is optional
///                                    ###
///               %%        15         # Stuffing bits...
///     @ 0x00034 eosSuffix            (P)
///               %unsigned 8  pattern                   0x0
///               %unsigned 8  mask                      0xFF
///                                    ###
///                                    * End-of-slice suffix comparison pattern & mask
///                                    * Used for both detectEOS command only;
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00038 scSuffix             (P)
///               %unsigned 8  pattern                   0x0
///               %unsigned 8  mask                      0xFF
///                                    ###
///                                    * Start code suffix matching pattern & mask; used for SyncWord command. Note that the :”mask” specifies the number of bits of the byte after two zero bytes should be considered as the syncword. For example, if mask is set to 0xC0, that means only two MSBs are considered as part of syncword. If syncword is found, the bit pointer will stop just after the two bits.
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x0003C scSuffix1            (P)
///               %unsigned 8  pattern                   0x0
///               %unsigned 8  mask                      0xFF
///               %unsigned 1  enable                    0x0
///                                    ###
///                                    * Start code suffix matching pattern & mask; used for SyncWord command for MPEG-4 mode. Note that the :”mask” specifies the number of bits of the byte after two zero bytes should be considered as the syncword. For example, if mask is set to 0xC0, that means only two MSBs are considered as part of syncword. If syncword is found, the bit pointer will stop just after the two bits.
///                                    ###
///               %%        15         # Stuffing bits...
///     @ 0x00040 eosSuffix1           (P)
///               %unsigned 8  pattern                   0x0
///               %unsigned 8  mask                      0xFF
///                                    ###
///                                    * On-the-fly EOS detection pattern & mask.
///                                    * Used for on-the-fly end-of-slice detection only; used to bitbuf block pointer from crossing slice boundary during normal decoding
///                                    * The starting address of the Context State RAM
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00044                      (W-)
///     #         # Stuffing bytes...
///               %% 15840
///     @ 0x00800 ctxRam               (P)
///     # 0x00800 table                
///               $CtxTable            table             MEM          
///                                    ###
///                                    * 25-bit wide SRAM
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    4096B, bits:     333b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_VldReg
#define h_VldReg (){}

    #define        VldReg_RegBase                              0x0
    ///////////////////////////////////////////////////////////
    #define     RA_VldReg_flow                                 0x0000

    #define     BA_VldReg_flow_enable                          0x0000
    #define     B16VldReg_flow_enable                          0x0000
    #define   LSb32VldReg_flow_enable                             0
    #define   LSb16VldReg_flow_enable                             0
    #define       bVldReg_flow_enable                          1
    #define   MSK32VldReg_flow_enable                             0x00000001

    #define     BA_VldReg_flow_select                          0x0000
    #define     B16VldReg_flow_select                          0x0000
    #define   LSb32VldReg_flow_select                             1
    #define   LSb16VldReg_flow_select                             1
    #define       bVldReg_flow_select                          1
    #define   MSK32VldReg_flow_select                             0x00000002
    ///////////////////////////////////////////////////////////
    #define     RA_VldReg_ctrl                                 0x0004

    #define     BA_VldReg_ctrl_noScpDetect                     0x0004
    #define     B16VldReg_ctrl_noScpDetect                     0x0004
    #define   LSb32VldReg_ctrl_noScpDetect                        0
    #define   LSb16VldReg_ctrl_noScpDetect                        0
    #define       bVldReg_ctrl_noScpDetect                     1
    #define   MSK32VldReg_ctrl_noScpDetect                        0x00000001

    #define     BA_VldReg_ctrl_noStuffRemoval                  0x0004
    #define     B16VldReg_ctrl_noStuffRemoval                  0x0004
    #define   LSb32VldReg_ctrl_noStuffRemoval                     1
    #define   LSb16VldReg_ctrl_noStuffRemoval                     1
    #define       bVldReg_ctrl_noStuffRemoval                  1
    #define   MSK32VldReg_ctrl_noStuffRemoval                     0x00000002

    #define     BA_VldReg_ctrl_avsStuffRemoval                 0x0004
    #define     B16VldReg_ctrl_avsStuffRemoval                 0x0004
    #define   LSb32VldReg_ctrl_avsStuffRemoval                    2
    #define   LSb16VldReg_ctrl_avsStuffRemoval                    2
    #define       bVldReg_ctrl_avsStuffRemoval                 1
    #define   MSK32VldReg_ctrl_avsStuffRemoval                    0x00000004
    ///////////////////////////////////////////////////////////
    #define     RA_VldReg_Status                               0x0008
    #define     RA_VldReg_status                               0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_VldReg_Counter                              0x000C
    #define     RA_VldReg_counter                              0x000C
    ///////////////////////////////////////////////////////////
    #define     RA_VldReg_BitBuffer                            0x0010
    #define     RA_VldReg_bitbuf                               0x0010
    ///////////////////////////////////////////////////////////
    #define     RA_VldReg_waitMax                              0x0014

    #define     BA_VldReg_waitMax_cyc                          0x0014
    #define     B16VldReg_waitMax_cyc                          0x0014
    #define   LSb32VldReg_waitMax_cyc                             0
    #define   LSb16VldReg_waitMax_cyc                             0
    #define       bVldReg_waitMax_cyc                          16
    #define   MSK32VldReg_waitMax_cyc                             0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_VldReg_skipBytes                            0x0018

    #define     BA_VldReg_skipBytes_v                          0x0018
    #define     B16VldReg_skipBytes_v                          0x0018
    #define   LSb32VldReg_skipBytes_v                             0
    #define   LSb16VldReg_skipBytes_v                             0
    #define       bVldReg_skipBytes_v                          22
    #define   MSK32VldReg_skipBytes_v                             0x003FFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_VldReg_searchRange                          0x001C

    #define     BA_VldReg_searchRange_v                        0x001C
    #define     B16VldReg_searchRange_v                        0x001C
    #define   LSb32VldReg_searchRange_v                           0
    #define   LSb16VldReg_searchRange_v                           0
    #define       bVldReg_searchRange_v                        22
    #define   MSK32VldReg_searchRange_v                           0x003FFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_VldReg_dmaWait                              0x0020

    #define     BA_VldReg_dmaWait_cyc                          0x0020
    #define     B16VldReg_dmaWait_cyc                          0x0020
    #define   LSb32VldReg_dmaWait_cyc                             0
    #define   LSb16VldReg_dmaWait_cyc                             0
    #define       bVldReg_dmaWait_cyc                          16
    #define   MSK32VldReg_dmaWait_cyc                             0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_VldReg_vldTblSet                            0x0024

    #define     BA_VldReg_vldTblSet_format                     0x0024
    #define     B16VldReg_vldTblSet_format                     0x0024
    #define   LSb32VldReg_vldTblSet_format                        0
    #define   LSb16VldReg_vldTblSet_format                        0
    #define       bVldReg_vldTblSet_format                     4
    #define   MSK32VldReg_vldTblSet_format                        0x0000000F
    #define        VldReg_vldTblSet_format_H264                             0x0
    #define        VldReg_vldTblSet_format_MPEG1                            0x2
    #define        VldReg_vldTblSet_format_MPEG2                            0x4
    #define        VldReg_vldTblSet_format_VC1                              0x6
    #define        VldReg_vldTblSet_format_MPEG4                            0x1
    #define        VldReg_vldTblSet_format_H263                             0x3
    #define        VldReg_vldTblSet_format_DIVX311                          0x5
    #define        VldReg_vldTblSet_format_AVS                              0x7
    #define        VldReg_vldTblSet_format_JPEG                             0x9
    #define        VldReg_vldTblSet_format_RV89_Intra                       0xA
    #define        VldReg_vldTblSet_format_RV89_Inter                       0xB
    ///////////////////////////////////////////////////////////
    #define     RA_VldReg_escLoopCnt                           0x0028

    #define     BA_VldReg_escLoopCnt_v                         0x0028
    #define     B16VldReg_escLoopCnt_v                         0x0028
    #define   LSb32VldReg_escLoopCnt_v                            0
    #define   LSb16VldReg_escLoopCnt_v                            0
    #define       bVldReg_escLoopCnt_v                         16
    #define   MSK32VldReg_escLoopCnt_v                            0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_VldReg_maxDecBytes                          0x002C

    #define     BA_VldReg_maxDecBytes_v                        0x002C
    #define     B16VldReg_maxDecBytes_v                        0x002C
    #define   LSb32VldReg_maxDecBytes_v                           0
    #define   LSb16VldReg_maxDecBytes_v                           0
    #define       bVldReg_maxDecBytes_v                        22
    #define   MSK32VldReg_maxDecBytes_v                           0x003FFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_VldReg_eosPrefix                            0x0030

    #define     BA_VldReg_eosPrefix_pattern                    0x0030
    #define     B16VldReg_eosPrefix_pattern                    0x0030
    #define   LSb32VldReg_eosPrefix_pattern                       0
    #define   LSb16VldReg_eosPrefix_pattern                       0
    #define       bVldReg_eosPrefix_pattern                    8
    #define   MSK32VldReg_eosPrefix_pattern                       0x000000FF

    #define     BA_VldReg_eosPrefix_mask                       0x0031
    #define     B16VldReg_eosPrefix_mask                       0x0030
    #define   LSb32VldReg_eosPrefix_mask                          8
    #define   LSb16VldReg_eosPrefix_mask                          8
    #define       bVldReg_eosPrefix_mask                       8
    #define   MSK32VldReg_eosPrefix_mask                          0x0000FF00

    #define     BA_VldReg_eosPrefix_nonskip                    0x0032
    #define     B16VldReg_eosPrefix_nonskip                    0x0032
    #define   LSb32VldReg_eosPrefix_nonskip                       16
    #define   LSb16VldReg_eosPrefix_nonskip                       0
    #define       bVldReg_eosPrefix_nonskip                    1
    #define   MSK32VldReg_eosPrefix_nonskip                       0x00010000
    ///////////////////////////////////////////////////////////
    #define     RA_VldReg_eosSuffix                            0x0034

    #define     BA_VldReg_eosSuffix_pattern                    0x0034
    #define     B16VldReg_eosSuffix_pattern                    0x0034
    #define   LSb32VldReg_eosSuffix_pattern                       0
    #define   LSb16VldReg_eosSuffix_pattern                       0
    #define       bVldReg_eosSuffix_pattern                    8
    #define   MSK32VldReg_eosSuffix_pattern                       0x000000FF

    #define     BA_VldReg_eosSuffix_mask                       0x0035
    #define     B16VldReg_eosSuffix_mask                       0x0034
    #define   LSb32VldReg_eosSuffix_mask                          8
    #define   LSb16VldReg_eosSuffix_mask                          8
    #define       bVldReg_eosSuffix_mask                       8
    #define   MSK32VldReg_eosSuffix_mask                          0x0000FF00
    ///////////////////////////////////////////////////////////
    #define     RA_VldReg_scSuffix                             0x0038

    #define     BA_VldReg_scSuffix_pattern                     0x0038
    #define     B16VldReg_scSuffix_pattern                     0x0038
    #define   LSb32VldReg_scSuffix_pattern                        0
    #define   LSb16VldReg_scSuffix_pattern                        0
    #define       bVldReg_scSuffix_pattern                     8
    #define   MSK32VldReg_scSuffix_pattern                        0x000000FF

    #define     BA_VldReg_scSuffix_mask                        0x0039
    #define     B16VldReg_scSuffix_mask                        0x0038
    #define   LSb32VldReg_scSuffix_mask                           8
    #define   LSb16VldReg_scSuffix_mask                           8
    #define       bVldReg_scSuffix_mask                        8
    #define   MSK32VldReg_scSuffix_mask                           0x0000FF00
    ///////////////////////////////////////////////////////////
    #define     RA_VldReg_scSuffix1                            0x003C

    #define     BA_VldReg_scSuffix1_pattern                    0x003C
    #define     B16VldReg_scSuffix1_pattern                    0x003C
    #define   LSb32VldReg_scSuffix1_pattern                       0
    #define   LSb16VldReg_scSuffix1_pattern                       0
    #define       bVldReg_scSuffix1_pattern                    8
    #define   MSK32VldReg_scSuffix1_pattern                       0x000000FF

    #define     BA_VldReg_scSuffix1_mask                       0x003D
    #define     B16VldReg_scSuffix1_mask                       0x003C
    #define   LSb32VldReg_scSuffix1_mask                          8
    #define   LSb16VldReg_scSuffix1_mask                          8
    #define       bVldReg_scSuffix1_mask                       8
    #define   MSK32VldReg_scSuffix1_mask                          0x0000FF00

    #define     BA_VldReg_scSuffix1_enable                     0x003E
    #define     B16VldReg_scSuffix1_enable                     0x003E
    #define   LSb32VldReg_scSuffix1_enable                        16
    #define   LSb16VldReg_scSuffix1_enable                        0
    #define       bVldReg_scSuffix1_enable                     1
    #define   MSK32VldReg_scSuffix1_enable                        0x00010000
    ///////////////////////////////////////////////////////////
    #define     RA_VldReg_eosSuffix1                           0x0040

    #define     BA_VldReg_eosSuffix1_pattern                   0x0040
    #define     B16VldReg_eosSuffix1_pattern                   0x0040
    #define   LSb32VldReg_eosSuffix1_pattern                      0
    #define   LSb16VldReg_eosSuffix1_pattern                      0
    #define       bVldReg_eosSuffix1_pattern                   8
    #define   MSK32VldReg_eosSuffix1_pattern                      0x000000FF

    #define     BA_VldReg_eosSuffix1_mask                      0x0041
    #define     B16VldReg_eosSuffix1_mask                      0x0040
    #define   LSb32VldReg_eosSuffix1_mask                         8
    #define   LSb16VldReg_eosSuffix1_mask                         8
    #define       bVldReg_eosSuffix1_mask                      8
    #define   MSK32VldReg_eosSuffix1_mask                         0x0000FF00
    ///////////////////////////////////////////////////////////
    #define     RA_VldReg_ctxRam                               0x0800
    #define     RA_VldReg_table                                0x0800
    ///////////////////////////////////////////////////////////

    typedef struct SIE_VldReg {
    ///////////////////////////////////////////////////////////
    #define   GET32VldReg_flow_enable(r32)                     _BFGET_(r32, 0, 0)
    #define   SET32VldReg_flow_enable(r32,v)                   _BFSET_(r32, 0, 0,v)
    #define   GET16VldReg_flow_enable(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16VldReg_flow_enable(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define   GET32VldReg_flow_select(r32)                     _BFGET_(r32, 1, 1)
    #define   SET32VldReg_flow_select(r32,v)                   _BFSET_(r32, 1, 1,v)
    #define   GET16VldReg_flow_select(r16)                     _BFGET_(r16, 1, 1)
    #define   SET16VldReg_flow_select(r16,v)                   _BFSET_(r16, 1, 1,v)

    #define     w32VldReg_flow                                 {\
            UNSG32 uflow_enable                                :  1;\
            UNSG32 uflow_select                                :  1;\
            UNSG32 RSVDx0_b2                                   : 30;\
          }
    union { UNSG32 u32VldReg_flow;
            struct w32VldReg_flow;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32VldReg_ctrl_noScpDetect(r32)                _BFGET_(r32, 0, 0)
    #define   SET32VldReg_ctrl_noScpDetect(r32,v)              _BFSET_(r32, 0, 0,v)
    #define   GET16VldReg_ctrl_noScpDetect(r16)                _BFGET_(r16, 0, 0)
    #define   SET16VldReg_ctrl_noScpDetect(r16,v)              _BFSET_(r16, 0, 0,v)

    #define   GET32VldReg_ctrl_noStuffRemoval(r32)             _BFGET_(r32, 1, 1)
    #define   SET32VldReg_ctrl_noStuffRemoval(r32,v)           _BFSET_(r32, 1, 1,v)
    #define   GET16VldReg_ctrl_noStuffRemoval(r16)             _BFGET_(r16, 1, 1)
    #define   SET16VldReg_ctrl_noStuffRemoval(r16,v)           _BFSET_(r16, 1, 1,v)

    #define   GET32VldReg_ctrl_avsStuffRemoval(r32)            _BFGET_(r32, 2, 2)
    #define   SET32VldReg_ctrl_avsStuffRemoval(r32,v)          _BFSET_(r32, 2, 2,v)
    #define   GET16VldReg_ctrl_avsStuffRemoval(r16)            _BFGET_(r16, 2, 2)
    #define   SET16VldReg_ctrl_avsStuffRemoval(r16,v)          _BFSET_(r16, 2, 2,v)

    #define     w32VldReg_ctrl                                 {\
            UNSG32 uctrl_noScpDetect                           :  1;\
            UNSG32 uctrl_noStuffRemoval                        :  1;\
            UNSG32 uctrl_avsStuffRemoval                       :  1;\
            UNSG32 RSVDx4_b3                                   : 29;\
          }
    union { UNSG32 u32VldReg_ctrl;
            struct w32VldReg_ctrl;
          };
    ///////////////////////////////////////////////////////////
              SIE_VldStatus                                    ie_status;
    ///////////////////////////////////////////////////////////
              SIE_VldCounter                                   ie_counter;
    ///////////////////////////////////////////////////////////
              SIE_VldBitBuf                                    ie_bitbuf;
    ///////////////////////////////////////////////////////////
    #define   GET32VldReg_waitMax_cyc(r32)                     _BFGET_(r32,15, 0)
    #define   SET32VldReg_waitMax_cyc(r32,v)                   _BFSET_(r32,15, 0,v)
    #define   GET16VldReg_waitMax_cyc(r16)                     _BFGET_(r16,15, 0)
    #define   SET16VldReg_waitMax_cyc(r16,v)                   _BFSET_(r16,15, 0,v)

    #define     w32VldReg_waitMax                              {\
            UNSG32 uwaitMax_cyc                                : 16;\
            UNSG32 RSVDx14_b16                                 : 16;\
          }
    union { UNSG32 u32VldReg_waitMax;
            struct w32VldReg_waitMax;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32VldReg_skipBytes_v(r32)                     _BFGET_(r32,21, 0)
    #define   SET32VldReg_skipBytes_v(r32,v)                   _BFSET_(r32,21, 0,v)

    #define     w32VldReg_skipBytes                            {\
            UNSG32 uskipBytes_v                                : 22;\
            UNSG32 RSVDx18_b22                                 : 10;\
          }
    union { UNSG32 u32VldReg_skipBytes;
            struct w32VldReg_skipBytes;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32VldReg_searchRange_v(r32)                   _BFGET_(r32,21, 0)
    #define   SET32VldReg_searchRange_v(r32,v)                 _BFSET_(r32,21, 0,v)

    #define     w32VldReg_searchRange                          {\
            UNSG32 usearchRange_v                              : 22;\
            UNSG32 RSVDx1C_b22                                 : 10;\
          }
    union { UNSG32 u32VldReg_searchRange;
            struct w32VldReg_searchRange;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32VldReg_dmaWait_cyc(r32)                     _BFGET_(r32,15, 0)
    #define   SET32VldReg_dmaWait_cyc(r32,v)                   _BFSET_(r32,15, 0,v)
    #define   GET16VldReg_dmaWait_cyc(r16)                     _BFGET_(r16,15, 0)
    #define   SET16VldReg_dmaWait_cyc(r16,v)                   _BFSET_(r16,15, 0,v)

    #define     w32VldReg_dmaWait                              {\
            UNSG32 udmaWait_cyc                                : 16;\
            UNSG32 RSVDx20_b16                                 : 16;\
          }
    union { UNSG32 u32VldReg_dmaWait;
            struct w32VldReg_dmaWait;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32VldReg_vldTblSet_format(r32)                _BFGET_(r32, 3, 0)
    #define   SET32VldReg_vldTblSet_format(r32,v)              _BFSET_(r32, 3, 0,v)
    #define   GET16VldReg_vldTblSet_format(r16)                _BFGET_(r16, 3, 0)
    #define   SET16VldReg_vldTblSet_format(r16,v)              _BFSET_(r16, 3, 0,v)

    #define     w32VldReg_vldTblSet                            {\
            UNSG32 uvldTblSet_format                           :  4;\
            UNSG32 RSVDx24_b4                                  : 28;\
          }
    union { UNSG32 u32VldReg_vldTblSet;
            struct w32VldReg_vldTblSet;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32VldReg_escLoopCnt_v(r32)                    _BFGET_(r32,15, 0)
    #define   SET32VldReg_escLoopCnt_v(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16VldReg_escLoopCnt_v(r16)                    _BFGET_(r16,15, 0)
    #define   SET16VldReg_escLoopCnt_v(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32VldReg_escLoopCnt                           {\
            UNSG32 uescLoopCnt_v                               : 16;\
            UNSG32 RSVDx28_b16                                 : 16;\
          }
    union { UNSG32 u32VldReg_escLoopCnt;
            struct w32VldReg_escLoopCnt;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32VldReg_maxDecBytes_v(r32)                   _BFGET_(r32,21, 0)
    #define   SET32VldReg_maxDecBytes_v(r32,v)                 _BFSET_(r32,21, 0,v)

    #define     w32VldReg_maxDecBytes                          {\
            UNSG32 umaxDecBytes_v                              : 22;\
            UNSG32 RSVDx2C_b22                                 : 10;\
          }
    union { UNSG32 u32VldReg_maxDecBytes;
            struct w32VldReg_maxDecBytes;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32VldReg_eosPrefix_pattern(r32)               _BFGET_(r32, 7, 0)
    #define   SET32VldReg_eosPrefix_pattern(r32,v)             _BFSET_(r32, 7, 0,v)
    #define   GET16VldReg_eosPrefix_pattern(r16)               _BFGET_(r16, 7, 0)
    #define   SET16VldReg_eosPrefix_pattern(r16,v)             _BFSET_(r16, 7, 0,v)

    #define   GET32VldReg_eosPrefix_mask(r32)                  _BFGET_(r32,15, 8)
    #define   SET32VldReg_eosPrefix_mask(r32,v)                _BFSET_(r32,15, 8,v)
    #define   GET16VldReg_eosPrefix_mask(r16)                  _BFGET_(r16,15, 8)
    #define   SET16VldReg_eosPrefix_mask(r16,v)                _BFSET_(r16,15, 8,v)

    #define   GET32VldReg_eosPrefix_nonskip(r32)               _BFGET_(r32,16,16)
    #define   SET32VldReg_eosPrefix_nonskip(r32,v)             _BFSET_(r32,16,16,v)
    #define   GET16VldReg_eosPrefix_nonskip(r16)               _BFGET_(r16, 0, 0)
    #define   SET16VldReg_eosPrefix_nonskip(r16,v)             _BFSET_(r16, 0, 0,v)

    #define     w32VldReg_eosPrefix                            {\
            UNSG32 ueosPrefix_pattern                          :  8;\
            UNSG32 ueosPrefix_mask                             :  8;\
            UNSG32 ueosPrefix_nonskip                          :  1;\
            UNSG32 RSVDx30_b17                                 : 15;\
          }
    union { UNSG32 u32VldReg_eosPrefix;
            struct w32VldReg_eosPrefix;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32VldReg_eosSuffix_pattern(r32)               _BFGET_(r32, 7, 0)
    #define   SET32VldReg_eosSuffix_pattern(r32,v)             _BFSET_(r32, 7, 0,v)
    #define   GET16VldReg_eosSuffix_pattern(r16)               _BFGET_(r16, 7, 0)
    #define   SET16VldReg_eosSuffix_pattern(r16,v)             _BFSET_(r16, 7, 0,v)

    #define   GET32VldReg_eosSuffix_mask(r32)                  _BFGET_(r32,15, 8)
    #define   SET32VldReg_eosSuffix_mask(r32,v)                _BFSET_(r32,15, 8,v)
    #define   GET16VldReg_eosSuffix_mask(r16)                  _BFGET_(r16,15, 8)
    #define   SET16VldReg_eosSuffix_mask(r16,v)                _BFSET_(r16,15, 8,v)

    #define     w32VldReg_eosSuffix                            {\
            UNSG32 ueosSuffix_pattern                          :  8;\
            UNSG32 ueosSuffix_mask                             :  8;\
            UNSG32 RSVDx34_b16                                 : 16;\
          }
    union { UNSG32 u32VldReg_eosSuffix;
            struct w32VldReg_eosSuffix;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32VldReg_scSuffix_pattern(r32)                _BFGET_(r32, 7, 0)
    #define   SET32VldReg_scSuffix_pattern(r32,v)              _BFSET_(r32, 7, 0,v)
    #define   GET16VldReg_scSuffix_pattern(r16)                _BFGET_(r16, 7, 0)
    #define   SET16VldReg_scSuffix_pattern(r16,v)              _BFSET_(r16, 7, 0,v)

    #define   GET32VldReg_scSuffix_mask(r32)                   _BFGET_(r32,15, 8)
    #define   SET32VldReg_scSuffix_mask(r32,v)                 _BFSET_(r32,15, 8,v)
    #define   GET16VldReg_scSuffix_mask(r16)                   _BFGET_(r16,15, 8)
    #define   SET16VldReg_scSuffix_mask(r16,v)                 _BFSET_(r16,15, 8,v)

    #define     w32VldReg_scSuffix                             {\
            UNSG32 uscSuffix_pattern                           :  8;\
            UNSG32 uscSuffix_mask                              :  8;\
            UNSG32 RSVDx38_b16                                 : 16;\
          }
    union { UNSG32 u32VldReg_scSuffix;
            struct w32VldReg_scSuffix;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32VldReg_scSuffix1_pattern(r32)               _BFGET_(r32, 7, 0)
    #define   SET32VldReg_scSuffix1_pattern(r32,v)             _BFSET_(r32, 7, 0,v)
    #define   GET16VldReg_scSuffix1_pattern(r16)               _BFGET_(r16, 7, 0)
    #define   SET16VldReg_scSuffix1_pattern(r16,v)             _BFSET_(r16, 7, 0,v)

    #define   GET32VldReg_scSuffix1_mask(r32)                  _BFGET_(r32,15, 8)
    #define   SET32VldReg_scSuffix1_mask(r32,v)                _BFSET_(r32,15, 8,v)
    #define   GET16VldReg_scSuffix1_mask(r16)                  _BFGET_(r16,15, 8)
    #define   SET16VldReg_scSuffix1_mask(r16,v)                _BFSET_(r16,15, 8,v)

    #define   GET32VldReg_scSuffix1_enable(r32)                _BFGET_(r32,16,16)
    #define   SET32VldReg_scSuffix1_enable(r32,v)              _BFSET_(r32,16,16,v)
    #define   GET16VldReg_scSuffix1_enable(r16)                _BFGET_(r16, 0, 0)
    #define   SET16VldReg_scSuffix1_enable(r16,v)              _BFSET_(r16, 0, 0,v)

    #define     w32VldReg_scSuffix1                            {\
            UNSG32 uscSuffix1_pattern                          :  8;\
            UNSG32 uscSuffix1_mask                             :  8;\
            UNSG32 uscSuffix1_enable                           :  1;\
            UNSG32 RSVDx3C_b17                                 : 15;\
          }
    union { UNSG32 u32VldReg_scSuffix1;
            struct w32VldReg_scSuffix1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32VldReg_eosSuffix1_pattern(r32)              _BFGET_(r32, 7, 0)
    #define   SET32VldReg_eosSuffix1_pattern(r32,v)            _BFSET_(r32, 7, 0,v)
    #define   GET16VldReg_eosSuffix1_pattern(r16)              _BFGET_(r16, 7, 0)
    #define   SET16VldReg_eosSuffix1_pattern(r16,v)            _BFSET_(r16, 7, 0,v)

    #define   GET32VldReg_eosSuffix1_mask(r32)                 _BFGET_(r32,15, 8)
    #define   SET32VldReg_eosSuffix1_mask(r32,v)               _BFSET_(r32,15, 8,v)
    #define   GET16VldReg_eosSuffix1_mask(r16)                 _BFGET_(r16,15, 8)
    #define   SET16VldReg_eosSuffix1_mask(r16,v)               _BFSET_(r16,15, 8,v)

    #define     w32VldReg_eosSuffix1                           {\
            UNSG32 ueosSuffix1_pattern                         :  8;\
            UNSG32 ueosSuffix1_mask                            :  8;\
            UNSG32 RSVDx40_b16                                 : 16;\
          }
    union { UNSG32 u32VldReg_eosSuffix1;
            struct w32VldReg_eosSuffix1;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx44                                     [1980];
    ///////////////////////////////////////////////////////////
              SIE_CtxTable                                     ie_table;
    ///////////////////////////////////////////////////////////
    } SIE_VldReg;

    typedef union  T32VldReg_flow
          { UNSG32 u32;
            struct w32VldReg_flow;
                 } T32VldReg_flow;
    typedef union  T32VldReg_ctrl
          { UNSG32 u32;
            struct w32VldReg_ctrl;
                 } T32VldReg_ctrl;
    typedef union  T32VldReg_waitMax
          { UNSG32 u32;
            struct w32VldReg_waitMax;
                 } T32VldReg_waitMax;
    typedef union  T32VldReg_skipBytes
          { UNSG32 u32;
            struct w32VldReg_skipBytes;
                 } T32VldReg_skipBytes;
    typedef union  T32VldReg_searchRange
          { UNSG32 u32;
            struct w32VldReg_searchRange;
                 } T32VldReg_searchRange;
    typedef union  T32VldReg_dmaWait
          { UNSG32 u32;
            struct w32VldReg_dmaWait;
                 } T32VldReg_dmaWait;
    typedef union  T32VldReg_vldTblSet
          { UNSG32 u32;
            struct w32VldReg_vldTblSet;
                 } T32VldReg_vldTblSet;
    typedef union  T32VldReg_escLoopCnt
          { UNSG32 u32;
            struct w32VldReg_escLoopCnt;
                 } T32VldReg_escLoopCnt;
    typedef union  T32VldReg_maxDecBytes
          { UNSG32 u32;
            struct w32VldReg_maxDecBytes;
                 } T32VldReg_maxDecBytes;
    typedef union  T32VldReg_eosPrefix
          { UNSG32 u32;
            struct w32VldReg_eosPrefix;
                 } T32VldReg_eosPrefix;
    typedef union  T32VldReg_eosSuffix
          { UNSG32 u32;
            struct w32VldReg_eosSuffix;
                 } T32VldReg_eosSuffix;
    typedef union  T32VldReg_scSuffix
          { UNSG32 u32;
            struct w32VldReg_scSuffix;
                 } T32VldReg_scSuffix;
    typedef union  T32VldReg_scSuffix1
          { UNSG32 u32;
            struct w32VldReg_scSuffix1;
                 } T32VldReg_scSuffix1;
    typedef union  T32VldReg_eosSuffix1
          { UNSG32 u32;
            struct w32VldReg_eosSuffix1;
                 } T32VldReg_eosSuffix1;
    ///////////////////////////////////////////////////////////

    typedef union  TVldReg_flow
          { UNSG32 u32[1];
            struct {
            struct w32VldReg_flow;
                   };
                 } TVldReg_flow;
    typedef union  TVldReg_ctrl
          { UNSG32 u32[1];
            struct {
            struct w32VldReg_ctrl;
                   };
                 } TVldReg_ctrl;
    typedef union  TVldReg_waitMax
          { UNSG32 u32[1];
            struct {
            struct w32VldReg_waitMax;
                   };
                 } TVldReg_waitMax;
    typedef union  TVldReg_skipBytes
          { UNSG32 u32[1];
            struct {
            struct w32VldReg_skipBytes;
                   };
                 } TVldReg_skipBytes;
    typedef union  TVldReg_searchRange
          { UNSG32 u32[1];
            struct {
            struct w32VldReg_searchRange;
                   };
                 } TVldReg_searchRange;
    typedef union  TVldReg_dmaWait
          { UNSG32 u32[1];
            struct {
            struct w32VldReg_dmaWait;
                   };
                 } TVldReg_dmaWait;
    typedef union  TVldReg_vldTblSet
          { UNSG32 u32[1];
            struct {
            struct w32VldReg_vldTblSet;
                   };
                 } TVldReg_vldTblSet;
    typedef union  TVldReg_escLoopCnt
          { UNSG32 u32[1];
            struct {
            struct w32VldReg_escLoopCnt;
                   };
                 } TVldReg_escLoopCnt;
    typedef union  TVldReg_maxDecBytes
          { UNSG32 u32[1];
            struct {
            struct w32VldReg_maxDecBytes;
                   };
                 } TVldReg_maxDecBytes;
    typedef union  TVldReg_eosPrefix
          { UNSG32 u32[1];
            struct {
            struct w32VldReg_eosPrefix;
                   };
                 } TVldReg_eosPrefix;
    typedef union  TVldReg_eosSuffix
          { UNSG32 u32[1];
            struct {
            struct w32VldReg_eosSuffix;
                   };
                 } TVldReg_eosSuffix;
    typedef union  TVldReg_scSuffix
          { UNSG32 u32[1];
            struct {
            struct w32VldReg_scSuffix;
                   };
                 } TVldReg_scSuffix;
    typedef union  TVldReg_scSuffix1
          { UNSG32 u32[1];
            struct {
            struct w32VldReg_scSuffix1;
                   };
                 } TVldReg_scSuffix1;
    typedef union  TVldReg_eosSuffix1
          { UNSG32 u32[1];
            struct {
            struct w32VldReg_eosSuffix1;
                   };
                 } TVldReg_eosSuffix1;

    ///////////////////////////////////////////////////////////
     SIGN32 VldReg_drvrd(SIE_VldReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 VldReg_drvwr(SIE_VldReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void VldReg_reset(SIE_VldReg *p);
     SIGN32 VldReg_cmp  (SIE_VldReg *p, SIE_VldReg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define VldReg_check(p,pie,pfx,hLOG) VldReg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define VldReg_print(p,    pfx,hLOG) VldReg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: VldReg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE VlcCmd                                   (8,2)
///     ###
///     * VLC Command Definition
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 vlccmd               (P)
///               %unsigned 16 cmd                       
///                                    : vlc_putbits               0x1
///                                                 ###
///                                                 * Added the number of bits specified in the parameter to the bitstream buffer.
///                                                 ###
///                                    : vlc_bytealign             0x2
///                                                 ###
///                                                 * Add the pattern specified in the parameter to make the bitstream buffer byte aligned if it is already not aligned.
///                                                 ###
///                                    : vlc_bitstream_flush       0x3
///                                                 ###
///                                                 * Clear the stat register vlc_stat_reg
///                                                 ###
///                                    : vlc_wait_done             0x4
///                                                 ###
///                                                 * Insert the corresponding sync word in the bit stream
///                                                 ###
///                                    : vlc_get_cntr              0x5
///                                                 ###
///                                                 * Pad with zeros to make the bit stream byte aligned
///                                                 ###
///                                    : vlc_reset                 0x6
///                                                 ###
///                                                 * Resets internal status bits, counters and pointers.
///                                                 ###
///                                    : vlc_enable_ep3byte        0x7
///                                                 ###
///                                                 * Enable internal Emulation_Prevention_three_byte enable bit.
///                                                 * VLC hardware will automatically insert a byte equal to 03 in the third byte position when it detects the following patterns at any byte boundary when the Emulation_Prevention_three_byte enable bit is set.
///                                                 * - 0x00 00 00 -> 0x00 00 03 00
///                                                 * - 0x00 00 01 -> 0x00 00 03 01
///                                                 * - 0x00 00 02 -> 0x00 00 03 02
///                                                 * - 0x00 00 03 -> 0x00 00 03 03
///                                                 ###
///                                    : vlc_disable_ep3byte       0x8
///                                                 ###
///                                                 * Disable Emulation_Prevention_three_byte control bit.
///                                                 ###
///                                    : vlc_get_statusreg         0x9
///                                                 ###
///                                                 * VLC returns the contents of internal status register.
///                                                 ###
///                                    : vlc_auto_table            0xA
///                                                 ###
///                                                 * VLC look up the table stored for lookup table
///                                                 ###
///                                    : Vlc_lmax_rmax_intra       0xB
///                                                 ###
///                                                 * VLC gets the LMAX and RMAX from tables B-19 and B-20 for the given level and run values for MPEG4 coefficient coding.
///                                                 ###
///                                    : Vlc_lmax_rmax_inter       0xC
///                                                 ###
///                                                 * VLC gets the LMAX and RMAX for the given level and run values for MPEG4 coefficient coding.
///                                                 ###
///                                    : Vlc_lmax_rmax_short       0xD
///                                                 ###
///                                                 * VLC does escape coding decision for short_video_header = 1 case. In this case type4 escape mode is select for escape coding .
///                                                 ###
///                                    : vlc_enable_ep0byte        0xE
///                                                 ###
///                                                 * Enable internal Emulation_Prevention_one_byte enable bit.
///                                                 * VLC hardware will automatically insert a byte equal to 0x00 in the byte position following an 0xFF. This feature can be used to avoid start code emulation of JPEG headers.
///                                                 * - 0xFF -> 0xFF 00
///                                                 ###
///                                    : vlc_disable_ep0byte       0xF
///                                                 ###
///                                                 * Disable Emulation_Prevention_one_byte control bit.
///                                                 ###
///                                    : vlc_tbl_lkup           0x2000
///                                                 ###
///                                                 * Looks up the table to get the encode bits. See the look up table Document for information on the table.
///                                                 ###
///                                    : Reserved               0x4000
///                                                 ###
///                                                 * Reserved for Cabac commands
///                                                 ###
///               %%        16         # Stuffing bits...
///     #         # Stuffing bytes...
///               %% 32
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_VlcCmd
#define h_VlcCmd (){}

    #define     RA_VlcCmd_vlccmd                               0x0000

    #define     BA_VlcCmd_vlccmd_cmd                           0x0000
    #define     B16VlcCmd_vlccmd_cmd                           0x0000
    #define   LSb32VlcCmd_vlccmd_cmd                              0
    #define   LSb16VlcCmd_vlccmd_cmd                              0
    #define       bVlcCmd_vlccmd_cmd                           16
    #define   MSK32VlcCmd_vlccmd_cmd                              0x0000FFFF
    #define        VlcCmd_vlccmd_cmd_vlc_putbits                            0x1
    #define        VlcCmd_vlccmd_cmd_vlc_bytealign                          0x2
    #define        VlcCmd_vlccmd_cmd_vlc_bitstream_flush                    0x3
    #define        VlcCmd_vlccmd_cmd_vlc_wait_done                          0x4
    #define        VlcCmd_vlccmd_cmd_vlc_get_cntr                           0x5
    #define        VlcCmd_vlccmd_cmd_vlc_reset                              0x6
    #define        VlcCmd_vlccmd_cmd_vlc_enable_ep3byte                     0x7
    #define        VlcCmd_vlccmd_cmd_vlc_disable_ep3byte                    0x8
    #define        VlcCmd_vlccmd_cmd_vlc_get_statusreg                      0x9
    #define        VlcCmd_vlccmd_cmd_vlc_auto_table                         0xA
    #define        VlcCmd_vlccmd_cmd_Vlc_lmax_rmax_intra                    0xB
    #define        VlcCmd_vlccmd_cmd_Vlc_lmax_rmax_inter                    0xC
    #define        VlcCmd_vlccmd_cmd_Vlc_lmax_rmax_short                    0xD
    #define        VlcCmd_vlccmd_cmd_vlc_enable_ep0byte                     0xE
    #define        VlcCmd_vlccmd_cmd_vlc_disable_ep0byte                    0xF
    #define        VlcCmd_vlccmd_cmd_vlc_tbl_lkup                           0x2000
    #define        VlcCmd_vlccmd_cmd_Reserved                               0x4000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_VlcCmd {
    ///////////////////////////////////////////////////////////
    #define   GET32VlcCmd_vlccmd_cmd(r32)                      _BFGET_(r32,15, 0)
    #define   SET32VlcCmd_vlccmd_cmd(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16VlcCmd_vlccmd_cmd(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VlcCmd_vlccmd_cmd(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32VlcCmd_vlccmd                               {\
            UNSG32 uvlccmd_cmd                                 : 16;\
            UNSG32 RSVDx0_b16                                  : 16;\
             UNSG8 RSVDx4                                      [4];\
          }
    union { UNSG32 u32VlcCmd_vlccmd;
            struct w32VlcCmd_vlccmd;
          };
    ///////////////////////////////////////////////////////////
    } SIE_VlcCmd;

    typedef union  T32VlcCmd_vlccmd
          { UNSG32 u32;
            struct w32VlcCmd_vlccmd;
                 } T32VlcCmd_vlccmd;
    ///////////////////////////////////////////////////////////

    typedef union  TVlcCmd_vlccmd
          { UNSG32 u32[2];
            struct {
            struct w32VlcCmd_vlccmd;
                   };
                 } TVlcCmd_vlccmd;

    ///////////////////////////////////////////////////////////
     SIGN32 VlcCmd_drvrd(SIE_VlcCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 VlcCmd_drvwr(SIE_VlcCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void VlcCmd_reset(SIE_VlcCmd *p);
     SIGN32 VlcCmd_cmp  (SIE_VlcCmd *p, SIE_VlcCmd *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define VlcCmd_check(p,pie,pfx,hLOG) VlcCmd_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define VlcCmd_print(p,    pfx,hLOG) VlcCmd_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: VlcCmd
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE VlCRd                                    (8,2)
///     ###
///     * Data Output read
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 vlcresp              (P)
///               %unsigned 32 Data0                     
///                                    ###
///                                    * Returned Data value of Bit Stream Counter or Status bits.
///                                    ###
///     #         # Stuffing bytes...
///               %% 32
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_VlCRd
#define h_VlCRd (){}

    #define     RA_VlCRd_vlcresp                               0x0000

    #define     BA_VlCRd_vlcresp_Data0                         0x0000
    #define     B16VlCRd_vlcresp_Data0                         0x0000
    #define   LSb32VlCRd_vlcresp_Data0                            0
    #define   LSb16VlCRd_vlcresp_Data0                            0
    #define       bVlCRd_vlcresp_Data0                         32
    #define   MSK32VlCRd_vlcresp_Data0                            0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_VlCRd {
    ///////////////////////////////////////////////////////////
    #define   GET32VlCRd_vlcresp_Data0(r32)                    _BFGET_(r32,31, 0)
    #define   SET32VlCRd_vlcresp_Data0(r32,v)                  _BFSET_(r32,31, 0,v)

    #define     w32VlCRd_vlcresp                               {\
            UNSG32 uvlcresp_Data0                              : 32;\
             UNSG8 RSVDx4                                      [4];\
          }
    union { UNSG32 u32VlCRd_vlcresp;
            struct w32VlCRd_vlcresp;
          };
    ///////////////////////////////////////////////////////////
    } SIE_VlCRd;

    typedef union  T32VlCRd_vlcresp
          { UNSG32 u32;
            struct w32VlCRd_vlcresp;
                 } T32VlCRd_vlcresp;
    ///////////////////////////////////////////////////////////

    typedef union  TVlCRd_vlcresp
          { UNSG32 u32[2];
            struct {
            struct w32VlCRd_vlcresp;
                   };
                 } TVlCRd_vlcresp;

    ///////////////////////////////////////////////////////////
     SIGN32 VlCRd_drvrd(SIE_VlCRd *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 VlCRd_drvwr(SIE_VlCRd *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void VlCRd_reset(SIE_VlCRd *p);
     SIGN32 VlCRd_cmp  (SIE_VlCRd *p, SIE_VlCRd *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define VlCRd_check(p,pie,pfx,hLOG) VlCRd_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define VlCRd_print(p,    pfx,hLOG) VlCRd_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: VlCRd
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE VLC32b                  flat             (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 32 data                      
///                                    ###
///                                    * Any 32b data
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_VLC32b
#define h_VLC32b (){}

    #define     BA_VLC32b_data                                 0x0000
    #define     B16VLC32b_data                                 0x0000
    #define   LSb32VLC32b_data                                    0
    #define   LSb16VLC32b_data                                    0
    #define       bVLC32b_data                                 32
    #define   MSK32VLC32b_data                                    0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_VLC32b {
    ///////////////////////////////////////////////////////////
    #define   GET32VLC32b_data(r32)                            _BFGET_(r32,31, 0)
    #define   SET32VLC32b_data(r32,v)                          _BFSET_(r32,31, 0,v)

            UNSG32 u_data                                      : 32;
    ///////////////////////////////////////////////////////////
    } SIE_VLC32b;

    ///////////////////////////////////////////////////////////
     SIGN32 VLC32b_drvrd(SIE_VLC32b *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 VLC32b_drvwr(SIE_VLC32b *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void VLC32b_reset(SIE_VLC32b *p);
     SIGN32 VLC32b_cmp  (SIE_VLC32b *p, SIE_VLC32b *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define VLC32b_check(p,pie,pfx,hLOG) VLC32b_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define VLC32b_print(p,    pfx,hLOG) VLC32b_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: VLC32b
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE RF64VLCx                flat             (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 RSVD_L               
///               $VLC32b              RSVD_L            REG       [6]
///     @ 0x00018 Format               (RW)
///               %unsigned 8  Standard                  0x0
///                                    ###
///                                    * Space reserved for future formats
///                                    ###
///                                    : mpg2                      0x0
///                                    : mpg4                      0x1
///                                    : h264                      0x2
///               %unsigned 2  Entropy                   
///                                    : VLC                       0x0
///                                    : CABAC                     0x1
///               %%        22         # Stuffing bits...
///     @ 0x0001C Timeout              (RW)
///               ###
///               * VLC Time out counter
///               ###
///               %unsigned 16 tcount                    0x0
///                                    ###
///                                    * Maximum number of cycle to wait for wait_done/Bitstream_flush command before sending the timeout status in the response data. 0 means no timeout.
///                                    * Reserved [256:4095]
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00020                      (P)
///     # 0x00020 RDVD_H               
///               $VLC32b              RDVD_H            REG     [120]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_RF64VLCx
#define h_RF64VLCx (){}

    #define     RA_RF64VLCx_RSVD_L                             0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_RF64VLCx_Format                             0x0018

    #define     BA_RF64VLCx_Format_Standard                    0x0018
    #define     B16RF64VLCx_Format_Standard                    0x0018
    #define   LSb32RF64VLCx_Format_Standard                       0
    #define   LSb16RF64VLCx_Format_Standard                       0
    #define       bRF64VLCx_Format_Standard                    8
    #define   MSK32RF64VLCx_Format_Standard                       0x000000FF
    #define        RF64VLCx_Format_Standard_mpg2                            0x0
    #define        RF64VLCx_Format_Standard_mpg4                            0x1
    #define        RF64VLCx_Format_Standard_h264                            0x2

    #define     BA_RF64VLCx_Format_Entropy                     0x0019
    #define     B16RF64VLCx_Format_Entropy                     0x0018
    #define   LSb32RF64VLCx_Format_Entropy                        8
    #define   LSb16RF64VLCx_Format_Entropy                        8
    #define       bRF64VLCx_Format_Entropy                     2
    #define   MSK32RF64VLCx_Format_Entropy                        0x00000300
    #define        RF64VLCx_Format_Entropy_VLC                              0x0
    #define        RF64VLCx_Format_Entropy_CABAC                            0x1
    ///////////////////////////////////////////////////////////
    #define     RA_RF64VLCx_Timeout                            0x001C

    #define     BA_RF64VLCx_Timeout_tcount                     0x001C
    #define     B16RF64VLCx_Timeout_tcount                     0x001C
    #define   LSb32RF64VLCx_Timeout_tcount                        0
    #define   LSb16RF64VLCx_Timeout_tcount                        0
    #define       bRF64VLCx_Timeout_tcount                     16
    #define   MSK32RF64VLCx_Timeout_tcount                        0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_RF64VLCx_RDVD_H                             0x0020
    ///////////////////////////////////////////////////////////

    typedef struct SIE_RF64VLCx {
    ///////////////////////////////////////////////////////////
              SIE_VLC32b                                       ie_RSVD_L[6];
    ///////////////////////////////////////////////////////////
    #define   GET32RF64VLCx_Format_Standard(r32)               _BFGET_(r32, 7, 0)
    #define   SET32RF64VLCx_Format_Standard(r32,v)             _BFSET_(r32, 7, 0,v)
    #define   GET16RF64VLCx_Format_Standard(r16)               _BFGET_(r16, 7, 0)
    #define   SET16RF64VLCx_Format_Standard(r16,v)             _BFSET_(r16, 7, 0,v)

    #define   GET32RF64VLCx_Format_Entropy(r32)                _BFGET_(r32, 9, 8)
    #define   SET32RF64VLCx_Format_Entropy(r32,v)              _BFSET_(r32, 9, 8,v)
    #define   GET16RF64VLCx_Format_Entropy(r16)                _BFGET_(r16, 9, 8)
    #define   SET16RF64VLCx_Format_Entropy(r16,v)              _BFSET_(r16, 9, 8,v)

    #define     w32RF64VLCx_Format                             {\
            UNSG32 uFormat_Standard                            :  8;\
            UNSG32 uFormat_Entropy                             :  2;\
            UNSG32 RSVDx18_b10                                 : 22;\
          }
    union { UNSG32 u32RF64VLCx_Format;
            struct w32RF64VLCx_Format;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32RF64VLCx_Timeout_tcount(r32)                _BFGET_(r32,15, 0)
    #define   SET32RF64VLCx_Timeout_tcount(r32,v)              _BFSET_(r32,15, 0,v)
    #define   GET16RF64VLCx_Timeout_tcount(r16)                _BFGET_(r16,15, 0)
    #define   SET16RF64VLCx_Timeout_tcount(r16,v)              _BFSET_(r16,15, 0,v)

    #define     w32RF64VLCx_Timeout                            {\
            UNSG32 uTimeout_tcount                             : 16;\
            UNSG32 RSVDx1C_b16                                 : 16;\
          }
    union { UNSG32 u32RF64VLCx_Timeout;
            struct w32RF64VLCx_Timeout;
          };
    ///////////////////////////////////////////////////////////
              SIE_VLC32b                                       ie_RDVD_H[120];
    ///////////////////////////////////////////////////////////
    } SIE_RF64VLCx;

    typedef union  T32RF64VLCx_Format
          { UNSG32 u32;
            struct w32RF64VLCx_Format;
                 } T32RF64VLCx_Format;
    typedef union  T32RF64VLCx_Timeout
          { UNSG32 u32;
            struct w32RF64VLCx_Timeout;
                 } T32RF64VLCx_Timeout;
    ///////////////////////////////////////////////////////////

    typedef union  TRF64VLCx_Format
          { UNSG32 u32[1];
            struct {
            struct w32RF64VLCx_Format;
                   };
                 } TRF64VLCx_Format;
    typedef union  TRF64VLCx_Timeout
          { UNSG32 u32[1];
            struct {
            struct w32RF64VLCx_Timeout;
                   };
                 } TRF64VLCx_Timeout;

    ///////////////////////////////////////////////////////////
     SIGN32 RF64VLCx_drvrd(SIE_RF64VLCx *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 RF64VLCx_drvwr(SIE_RF64VLCx *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void RF64VLCx_reset(SIE_RF64VLCx *p);
     SIGN32 RF64VLCx_cmp  (SIE_RF64VLCx *p, SIE_RF64VLCx *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define RF64VLCx_check(p,pie,pfx,hLOG) RF64VLCx_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define RF64VLCx_print(p,    pfx,hLOG) RF64VLCx_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: RF64VLCx
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CABAC_EncCmd            flat             (4,4)
///     ###
///     * Command format in command component for CABAC encoder Extension
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 9  cmdCtxIdxInit             
///                                    ###
///                                    * The unique ID for the context variables. Each context is associated with a state and a MPS(most probable symbol)
///                                    ###
///               %unsigned 2  cmd                       
///                                    : init                      0x0
///                                    : encode                    0x1
///                                    : init_ram                  0x2
///               %unsigned 3  resr                      
///               %unsigned 2  id                        
///                                    : cabacID                   0x1
///                                                 ###
///                                                 * id==2'b01 indicates cabac_EnCmd
///                                                 * id==2'b00 indicates vlc cmd
///                                                 ###
///               %unsigned 16 par0                      
///                                    ###
///                                    * When cmd == 0x2, it is the value used to initialize the content of context state RAM. The value for each entry is (valMPS<<6)| pStateIdx. Otherwise, it is the argument for the CABAC encoding.
///                                    ###
///               %unsigned 16 par1                      
///               %unsigned 16 par2                      
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CABAC_EncCmd
#define h_CABAC_EncCmd (){}

    #define     BA_CABAC_EncCmd_cmdCtxIdxInit                  0x0000
    #define     B16CABAC_EncCmd_cmdCtxIdxInit                  0x0000
    #define   LSb32CABAC_EncCmd_cmdCtxIdxInit                     0
    #define   LSb16CABAC_EncCmd_cmdCtxIdxInit                     0
    #define       bCABAC_EncCmd_cmdCtxIdxInit                  9
    #define   MSK32CABAC_EncCmd_cmdCtxIdxInit                     0x000001FF

    #define     BA_CABAC_EncCmd_cmd                            0x0001
    #define     B16CABAC_EncCmd_cmd                            0x0000
    #define   LSb32CABAC_EncCmd_cmd                               9
    #define   LSb16CABAC_EncCmd_cmd                               9
    #define       bCABAC_EncCmd_cmd                            2
    #define   MSK32CABAC_EncCmd_cmd                               0x00000600
    #define        CABAC_EncCmd_cmd_init                                    0x0
    #define        CABAC_EncCmd_cmd_encode                                  0x1
    #define        CABAC_EncCmd_cmd_init_ram                                0x2

    #define     BA_CABAC_EncCmd_resr                           0x0001
    #define     B16CABAC_EncCmd_resr                           0x0000
    #define   LSb32CABAC_EncCmd_resr                              11
    #define   LSb16CABAC_EncCmd_resr                              11
    #define       bCABAC_EncCmd_resr                           3
    #define   MSK32CABAC_EncCmd_resr                              0x00003800

    #define     BA_CABAC_EncCmd_id                             0x0001
    #define     B16CABAC_EncCmd_id                             0x0000
    #define   LSb32CABAC_EncCmd_id                                14
    #define   LSb16CABAC_EncCmd_id                                14
    #define       bCABAC_EncCmd_id                             2
    #define   MSK32CABAC_EncCmd_id                                0x0000C000
    #define        CABAC_EncCmd_id_cabacID                                  0x1

    #define     BA_CABAC_EncCmd_par0                           0x0002
    #define     B16CABAC_EncCmd_par0                           0x0002
    #define   LSb32CABAC_EncCmd_par0                              16
    #define   LSb16CABAC_EncCmd_par0                              0
    #define       bCABAC_EncCmd_par0                           16
    #define   MSK32CABAC_EncCmd_par0                              0xFFFF0000

    #define     BA_CABAC_EncCmd_par1                           0x0004
    #define     B16CABAC_EncCmd_par1                           0x0004
    #define   LSb32CABAC_EncCmd_par1                              0
    #define   LSb16CABAC_EncCmd_par1                              0
    #define       bCABAC_EncCmd_par1                           16
    #define   MSK32CABAC_EncCmd_par1                              0x0000FFFF

    #define     BA_CABAC_EncCmd_par2                           0x0006
    #define     B16CABAC_EncCmd_par2                           0x0006
    #define   LSb32CABAC_EncCmd_par2                              16
    #define   LSb16CABAC_EncCmd_par2                              0
    #define       bCABAC_EncCmd_par2                           16
    #define   MSK32CABAC_EncCmd_par2                              0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CABAC_EncCmd {
    ///////////////////////////////////////////////////////////
    #define   GET32CABAC_EncCmd_cmdCtxIdxInit(r32)             _BFGET_(r32, 8, 0)
    #define   SET32CABAC_EncCmd_cmdCtxIdxInit(r32,v)           _BFSET_(r32, 8, 0,v)
    #define   GET16CABAC_EncCmd_cmdCtxIdxInit(r16)             _BFGET_(r16, 8, 0)
    #define   SET16CABAC_EncCmd_cmdCtxIdxInit(r16,v)           _BFSET_(r16, 8, 0,v)

    #define   GET32CABAC_EncCmd_cmd(r32)                       _BFGET_(r32,10, 9)
    #define   SET32CABAC_EncCmd_cmd(r32,v)                     _BFSET_(r32,10, 9,v)
    #define   GET16CABAC_EncCmd_cmd(r16)                       _BFGET_(r16,10, 9)
    #define   SET16CABAC_EncCmd_cmd(r16,v)                     _BFSET_(r16,10, 9,v)

    #define   GET32CABAC_EncCmd_resr(r32)                      _BFGET_(r32,13,11)
    #define   SET32CABAC_EncCmd_resr(r32,v)                    _BFSET_(r32,13,11,v)
    #define   GET16CABAC_EncCmd_resr(r16)                      _BFGET_(r16,13,11)
    #define   SET16CABAC_EncCmd_resr(r16,v)                    _BFSET_(r16,13,11,v)

    #define   GET32CABAC_EncCmd_id(r32)                        _BFGET_(r32,15,14)
    #define   SET32CABAC_EncCmd_id(r32,v)                      _BFSET_(r32,15,14,v)
    #define   GET16CABAC_EncCmd_id(r16)                        _BFGET_(r16,15,14)
    #define   SET16CABAC_EncCmd_id(r16,v)                      _BFSET_(r16,15,14,v)

    #define   GET32CABAC_EncCmd_par0(r32)                      _BFGET_(r32,31,16)
    #define   SET32CABAC_EncCmd_par0(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16CABAC_EncCmd_par0(r16)                      _BFGET_(r16,15, 0)
    #define   SET16CABAC_EncCmd_par0(r16,v)                    _BFSET_(r16,15, 0,v)

            UNSG32 u_cmdCtxIdxInit                             :  9;
            UNSG32 u_cmd                                       :  2;
            UNSG32 u_resr                                      :  3;
            UNSG32 u_id                                        :  2;
            UNSG32 u_par0                                      : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32CABAC_EncCmd_par1(r32)                      _BFGET_(r32,15, 0)
    #define   SET32CABAC_EncCmd_par1(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16CABAC_EncCmd_par1(r16)                      _BFGET_(r16,15, 0)
    #define   SET16CABAC_EncCmd_par1(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32CABAC_EncCmd_par2(r32)                      _BFGET_(r32,31,16)
    #define   SET32CABAC_EncCmd_par2(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16CABAC_EncCmd_par2(r16)                      _BFGET_(r16,15, 0)
    #define   SET16CABAC_EncCmd_par2(r16,v)                    _BFSET_(r16,15, 0,v)

            UNSG32 u_par1                                      : 16;
            UNSG32 u_par2                                      : 16;
    ///////////////////////////////////////////////////////////
    } SIE_CABAC_EncCmd;

    ///////////////////////////////////////////////////////////
     SIGN32 CABAC_EncCmd_drvrd(SIE_CABAC_EncCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CABAC_EncCmd_drvwr(SIE_CABAC_EncCmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CABAC_EncCmd_reset(SIE_CABAC_EncCmd *p);
     SIGN32 CABAC_EncCmd_cmp  (SIE_CABAC_EncCmd *p, SIE_CABAC_EncCmd *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CABAC_EncCmd_check(p,pie,pfx,hLOG) CABAC_EncCmd_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CABAC_EncCmd_print(p,    pfx,hLOG) CABAC_EncCmd_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CABAC_EncCmd
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CabacECtx                                (4,4)
///     ###
///     * Format of the entries in the Cabac encoder Context RAM
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 state                (RW)
///               %unsigned 6  pStateIdx                 
///               %unsigned 1  valMPS                    
///               %%        25         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       7b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CabacECtx
#define h_CabacECtx (){}

    #define     RA_CabacECtx_state                             0x0000

    #define     BA_CabacECtx_state_pStateIdx                   0x0000
    #define     B16CabacECtx_state_pStateIdx                   0x0000
    #define   LSb32CabacECtx_state_pStateIdx                      0
    #define   LSb16CabacECtx_state_pStateIdx                      0
    #define       bCabacECtx_state_pStateIdx                   6
    #define   MSK32CabacECtx_state_pStateIdx                      0x0000003F

    #define     BA_CabacECtx_state_valMPS                      0x0000
    #define     B16CabacECtx_state_valMPS                      0x0000
    #define   LSb32CabacECtx_state_valMPS                         6
    #define   LSb16CabacECtx_state_valMPS                         6
    #define       bCabacECtx_state_valMPS                      1
    #define   MSK32CabacECtx_state_valMPS                         0x00000040
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CabacECtx {
    ///////////////////////////////////////////////////////////
    #define   GET32CabacECtx_state_pStateIdx(r32)              _BFGET_(r32, 5, 0)
    #define   SET32CabacECtx_state_pStateIdx(r32,v)            _BFSET_(r32, 5, 0,v)
    #define   GET16CabacECtx_state_pStateIdx(r16)              _BFGET_(r16, 5, 0)
    #define   SET16CabacECtx_state_pStateIdx(r16,v)            _BFSET_(r16, 5, 0,v)

    #define   GET32CabacECtx_state_valMPS(r32)                 _BFGET_(r32, 6, 6)
    #define   SET32CabacECtx_state_valMPS(r32,v)               _BFSET_(r32, 6, 6,v)
    #define   GET16CabacECtx_state_valMPS(r16)                 _BFGET_(r16, 6, 6)
    #define   SET16CabacECtx_state_valMPS(r16,v)               _BFSET_(r16, 6, 6,v)

    #define     w32CabacECtx_state                             {\
            UNSG32 ustate_pStateIdx                            :  6;\
            UNSG32 ustate_valMPS                               :  1;\
            UNSG32 RSVDx0_b7                                   : 25;\
          }
    union { UNSG32 u32CabacECtx_state;
            struct w32CabacECtx_state;
          };
    ///////////////////////////////////////////////////////////
    } SIE_CabacECtx;

    typedef union  T32CabacECtx_state
          { UNSG32 u32;
            struct w32CabacECtx_state;
                 } T32CabacECtx_state;
    ///////////////////////////////////////////////////////////

    typedef union  TCabacECtx_state
          { UNSG32 u32[1];
            struct {
            struct w32CabacECtx_state;
                   };
                 } TCabacECtx_state;

    ///////////////////////////////////////////////////////////
     SIGN32 CabacECtx_drvrd(SIE_CabacECtx *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CabacECtx_drvwr(SIE_CabacECtx *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CabacECtx_reset(SIE_CabacECtx *p);
     SIGN32 CabacECtx_cmp  (SIE_CabacECtx *p, SIE_CabacECtx *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CabacECtx_check(p,pie,pfx,hLOG) CabacECtx_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CabacECtx_print(p,    pfx,hLOG) CabacECtx_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CabacECtx
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CtxEncTable                              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 Ctx                  
///               $CabacECtx           Ctx               REG     [512]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    2048B, bits:    3584b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CtxEncTable
#define h_CtxEncTable (){}

    #define     RA_CtxEncTable_Ctx                             0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CtxEncTable {
    ///////////////////////////////////////////////////////////
              SIE_CabacECtx                                    ie_Ctx[512];
    ///////////////////////////////////////////////////////////
    } SIE_CtxEncTable;

    ///////////////////////////////////////////////////////////
     SIGN32 CtxEncTable_drvrd(SIE_CtxEncTable *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CtxEncTable_drvwr(SIE_CtxEncTable *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CtxEncTable_reset(SIE_CtxEncTable *p);
     SIGN32 CtxEncTable_cmp  (SIE_CtxEncTable *p, SIE_CtxEncTable *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CtxEncTable_check(p,pie,pfx,hLOG) CtxEncTable_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CtxEncTable_print(p,    pfx,hLOG) CtxEncTable_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CtxEncTable
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CABAC_RPPMsg                             (4,4)
///     ###
///     * CABAC renormalization post processing message
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 3  num_renorm                
///                                    ###
///                                    * The number of renormalization needed
///                                    ###
///               %unsigned 8  codILow_RPP               
///                                    ###
///                                    * The required truncated part of codILow for renormalization post processing.
///                                    ###
///               %%        21         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      11b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CABAC_RPPMsg
#define h_CABAC_RPPMsg (){}

    #define     BA_CABAC_RPPMsg_num_renorm                     0x0000
    #define     B16CABAC_RPPMsg_num_renorm                     0x0000
    #define   LSb32CABAC_RPPMsg_num_renorm                        0
    #define   LSb16CABAC_RPPMsg_num_renorm                        0
    #define       bCABAC_RPPMsg_num_renorm                     3
    #define   MSK32CABAC_RPPMsg_num_renorm                        0x00000007

    #define     BA_CABAC_RPPMsg_codILow_RPP                    0x0000
    #define     B16CABAC_RPPMsg_codILow_RPP                    0x0000
    #define   LSb32CABAC_RPPMsg_codILow_RPP                       3
    #define   LSb16CABAC_RPPMsg_codILow_RPP                       3
    #define       bCABAC_RPPMsg_codILow_RPP                    8
    #define   MSK32CABAC_RPPMsg_codILow_RPP                       0x000007F8
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CABAC_RPPMsg {
    ///////////////////////////////////////////////////////////
    #define   GET32CABAC_RPPMsg_num_renorm(r32)                _BFGET_(r32, 2, 0)
    #define   SET32CABAC_RPPMsg_num_renorm(r32,v)              _BFSET_(r32, 2, 0,v)
    #define   GET16CABAC_RPPMsg_num_renorm(r16)                _BFGET_(r16, 2, 0)
    #define   SET16CABAC_RPPMsg_num_renorm(r16,v)              _BFSET_(r16, 2, 0,v)

    #define   GET32CABAC_RPPMsg_codILow_RPP(r32)               _BFGET_(r32,10, 3)
    #define   SET32CABAC_RPPMsg_codILow_RPP(r32,v)             _BFSET_(r32,10, 3,v)
    #define   GET16CABAC_RPPMsg_codILow_RPP(r16)               _BFGET_(r16,10, 3)
    #define   SET16CABAC_RPPMsg_codILow_RPP(r16,v)             _BFSET_(r16,10, 3,v)

            UNSG32 u_num_renorm                                :  3;
            UNSG32 u_codILow_RPP                               :  8;
            UNSG32 RSVDx0_b11                                  : 21;
    ///////////////////////////////////////////////////////////
    } SIE_CABAC_RPPMsg;

    ///////////////////////////////////////////////////////////
     SIGN32 CABAC_RPPMsg_drvrd(SIE_CABAC_RPPMsg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CABAC_RPPMsg_drvwr(SIE_CABAC_RPPMsg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CABAC_RPPMsg_reset(SIE_CABAC_RPPMsg *p);
     SIGN32 CABAC_RPPMsg_cmp  (SIE_CABAC_RPPMsg *p, SIE_CABAC_RPPMsg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CABAC_RPPMsg_check(p,pie,pfx,hLOG) CABAC_RPPMsg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CABAC_RPPMsg_print(p,    pfx,hLOG) CABAC_RPPMsg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CABAC_RPPMsg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FOPDAT                  biu              (4,4)
///     ###
///     * FOP return data format
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 1  leftBsY                   
///                                    ###
///                                    * Left BS for Y component is nonzero
///                                    ###
///               %unsigned 1  leftBsC                   
///                                    ###
///                                    * Left BS for chroma (VC-1: Cb) component is nonzero
///                                    ###
///               %unsigned 1  topBsY                    
///                                    ###
///                                    * Top BS for Y component is nonzero
///                                    ###
///               %unsigned 1  topBsC                    
///                                    ###
///                                    * Top BS for chroma (VC-1: Cb) component is nonzero
///                                    ###
///               %unsigned 1  leftBsCr                  
///                                    ###
///                                    * Left BS for Cr component is nonzero, used by VC-1 only.
///                                    ###
///               %unsigned 1  topBsCr                   
///                                    ###
///                                    * Top BS for Cr component is nonzero, used by VC-1 only.
///                                    * End FOPDAT
///                                    ###
///               %%        26         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       6b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FOPDAT
#define h_FOPDAT (){}

    #define     BA_FOPDAT_leftBsY                              0x0000
    #define     B16FOPDAT_leftBsY                              0x0000
    #define   LSb32FOPDAT_leftBsY                                 0
    #define   LSb16FOPDAT_leftBsY                                 0
    #define       bFOPDAT_leftBsY                              1
    #define   MSK32FOPDAT_leftBsY                                 0x00000001

    #define     BA_FOPDAT_leftBsC                              0x0000
    #define     B16FOPDAT_leftBsC                              0x0000
    #define   LSb32FOPDAT_leftBsC                                 1
    #define   LSb16FOPDAT_leftBsC                                 1
    #define       bFOPDAT_leftBsC                              1
    #define   MSK32FOPDAT_leftBsC                                 0x00000002

    #define     BA_FOPDAT_topBsY                               0x0000
    #define     B16FOPDAT_topBsY                               0x0000
    #define   LSb32FOPDAT_topBsY                                  2
    #define   LSb16FOPDAT_topBsY                                  2
    #define       bFOPDAT_topBsY                               1
    #define   MSK32FOPDAT_topBsY                                  0x00000004

    #define     BA_FOPDAT_topBsC                               0x0000
    #define     B16FOPDAT_topBsC                               0x0000
    #define   LSb32FOPDAT_topBsC                                  3
    #define   LSb16FOPDAT_topBsC                                  3
    #define       bFOPDAT_topBsC                               1
    #define   MSK32FOPDAT_topBsC                                  0x00000008

    #define     BA_FOPDAT_leftBsCr                             0x0000
    #define     B16FOPDAT_leftBsCr                             0x0000
    #define   LSb32FOPDAT_leftBsCr                                4
    #define   LSb16FOPDAT_leftBsCr                                4
    #define       bFOPDAT_leftBsCr                             1
    #define   MSK32FOPDAT_leftBsCr                                0x00000010

    #define     BA_FOPDAT_topBsCr                              0x0000
    #define     B16FOPDAT_topBsCr                              0x0000
    #define   LSb32FOPDAT_topBsCr                                 5
    #define   LSb16FOPDAT_topBsCr                                 5
    #define       bFOPDAT_topBsCr                              1
    #define   MSK32FOPDAT_topBsCr                                 0x00000020
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FOPDAT {
    ///////////////////////////////////////////////////////////
    #define   GET32FOPDAT_leftBsY(r32)                         _BFGET_(r32, 0, 0)
    #define   SET32FOPDAT_leftBsY(r32,v)                       _BFSET_(r32, 0, 0,v)
    #define   GET16FOPDAT_leftBsY(r16)                         _BFGET_(r16, 0, 0)
    #define   SET16FOPDAT_leftBsY(r16,v)                       _BFSET_(r16, 0, 0,v)

    #define   GET32FOPDAT_leftBsC(r32)                         _BFGET_(r32, 1, 1)
    #define   SET32FOPDAT_leftBsC(r32,v)                       _BFSET_(r32, 1, 1,v)
    #define   GET16FOPDAT_leftBsC(r16)                         _BFGET_(r16, 1, 1)
    #define   SET16FOPDAT_leftBsC(r16,v)                       _BFSET_(r16, 1, 1,v)

    #define   GET32FOPDAT_topBsY(r32)                          _BFGET_(r32, 2, 2)
    #define   SET32FOPDAT_topBsY(r32,v)                        _BFSET_(r32, 2, 2,v)
    #define   GET16FOPDAT_topBsY(r16)                          _BFGET_(r16, 2, 2)
    #define   SET16FOPDAT_topBsY(r16,v)                        _BFSET_(r16, 2, 2,v)

    #define   GET32FOPDAT_topBsC(r32)                          _BFGET_(r32, 3, 3)
    #define   SET32FOPDAT_topBsC(r32,v)                        _BFSET_(r32, 3, 3,v)
    #define   GET16FOPDAT_topBsC(r16)                          _BFGET_(r16, 3, 3)
    #define   SET16FOPDAT_topBsC(r16,v)                        _BFSET_(r16, 3, 3,v)

    #define   GET32FOPDAT_leftBsCr(r32)                        _BFGET_(r32, 4, 4)
    #define   SET32FOPDAT_leftBsCr(r32,v)                      _BFSET_(r32, 4, 4,v)
    #define   GET16FOPDAT_leftBsCr(r16)                        _BFGET_(r16, 4, 4)
    #define   SET16FOPDAT_leftBsCr(r16,v)                      _BFSET_(r16, 4, 4,v)

    #define   GET32FOPDAT_topBsCr(r32)                         _BFGET_(r32, 5, 5)
    #define   SET32FOPDAT_topBsCr(r32,v)                       _BFSET_(r32, 5, 5,v)
    #define   GET16FOPDAT_topBsCr(r16)                         _BFGET_(r16, 5, 5)
    #define   SET16FOPDAT_topBsCr(r16,v)                       _BFSET_(r16, 5, 5,v)

            UNSG32 u_leftBsY                                   :  1;
            UNSG32 u_leftBsC                                   :  1;
            UNSG32 u_topBsY                                    :  1;
            UNSG32 u_topBsC                                    :  1;
            UNSG32 u_leftBsCr                                  :  1;
            UNSG32 u_topBsCr                                   :  1;
            UNSG32 RSVDx0_b6                                   : 26;
    ///////////////////////////////////////////////////////////
    } SIE_FOPDAT;

    ///////////////////////////////////////////////////////////
     SIGN32 FOPDAT_drvrd(SIE_FOPDAT *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FOPDAT_drvwr(SIE_FOPDAT *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FOPDAT_reset(SIE_FOPDAT *p);
     SIGN32 FOPDAT_cmp  (SIE_FOPDAT *p, SIE_FOPDAT *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FOPDAT_check(p,pie,pfx,hLOG) FOPDAT_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FOPDAT_print(p,    pfx,hLOG) FOPDAT_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FOPDAT
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE RVFOPDAT                biu              (4,4)
///     ###
///     * FOP return data format
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 2  BsY                       
///                                    ###
///                                    * Block strength of current luma block (0: NONE; 1: NORMAL; 2: STRONG). Note this is not FilterSet used in PCUBE DBLK extension.
///                                    ###
///               %unsigned 2  BsCb                      
///                                    ###
///                                    * Block strength of current Cb block.
///                                    ###
///               %unsigned 2  BsCr                      
///                                    ###
///                                    * Block strength of current Cr block.
///                                    * End RVFOPDAT
///                                    ###
///               %%        26         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       6b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_RVFOPDAT
#define h_RVFOPDAT (){}

    #define     BA_RVFOPDAT_BsY                                0x0000
    #define     B16RVFOPDAT_BsY                                0x0000
    #define   LSb32RVFOPDAT_BsY                                   0
    #define   LSb16RVFOPDAT_BsY                                   0
    #define       bRVFOPDAT_BsY                                2
    #define   MSK32RVFOPDAT_BsY                                   0x00000003

    #define     BA_RVFOPDAT_BsCb                               0x0000
    #define     B16RVFOPDAT_BsCb                               0x0000
    #define   LSb32RVFOPDAT_BsCb                                  2
    #define   LSb16RVFOPDAT_BsCb                                  2
    #define       bRVFOPDAT_BsCb                               2
    #define   MSK32RVFOPDAT_BsCb                                  0x0000000C

    #define     BA_RVFOPDAT_BsCr                               0x0000
    #define     B16RVFOPDAT_BsCr                               0x0000
    #define   LSb32RVFOPDAT_BsCr                                  4
    #define   LSb16RVFOPDAT_BsCr                                  4
    #define       bRVFOPDAT_BsCr                               2
    #define   MSK32RVFOPDAT_BsCr                                  0x00000030
    ///////////////////////////////////////////////////////////

    typedef struct SIE_RVFOPDAT {
    ///////////////////////////////////////////////////////////
    #define   GET32RVFOPDAT_BsY(r32)                           _BFGET_(r32, 1, 0)
    #define   SET32RVFOPDAT_BsY(r32,v)                         _BFSET_(r32, 1, 0,v)
    #define   GET16RVFOPDAT_BsY(r16)                           _BFGET_(r16, 1, 0)
    #define   SET16RVFOPDAT_BsY(r16,v)                         _BFSET_(r16, 1, 0,v)

    #define   GET32RVFOPDAT_BsCb(r32)                          _BFGET_(r32, 3, 2)
    #define   SET32RVFOPDAT_BsCb(r32,v)                        _BFSET_(r32, 3, 2,v)
    #define   GET16RVFOPDAT_BsCb(r16)                          _BFGET_(r16, 3, 2)
    #define   SET16RVFOPDAT_BsCb(r16,v)                        _BFSET_(r16, 3, 2,v)

    #define   GET32RVFOPDAT_BsCr(r32)                          _BFGET_(r32, 5, 4)
    #define   SET32RVFOPDAT_BsCr(r32,v)                        _BFSET_(r32, 5, 4,v)
    #define   GET16RVFOPDAT_BsCr(r16)                          _BFGET_(r16, 5, 4)
    #define   SET16RVFOPDAT_BsCr(r16,v)                        _BFSET_(r16, 5, 4,v)

            UNSG32 u_BsY                                       :  2;
            UNSG32 u_BsCb                                      :  2;
            UNSG32 u_BsCr                                      :  2;
            UNSG32 RSVDx0_b6                                   : 26;
    ///////////////////////////////////////////////////////////
    } SIE_RVFOPDAT;

    ///////////////////////////////////////////////////////////
     SIGN32 RVFOPDAT_drvrd(SIE_RVFOPDAT *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 RVFOPDAT_drvwr(SIE_RVFOPDAT *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void RVFOPDAT_reset(SIE_RVFOPDAT *p);
     SIGN32 RVFOPDAT_cmp  (SIE_RVFOPDAT *p, SIE_RVFOPDAT *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define RVFOPDAT_check(p,pie,pfx,hLOG) RVFOPDAT_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define RVFOPDAT_print(p,    pfx,hLOG) RVFOPDAT_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: RVFOPDAT
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE VP8_LF_DELTAS           biu              (4,4)
///     ###
///     * VP8 loop filter deltas
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %signed   8  ref_lf_deltas_0i          
///               %signed   8  ref_lf_deltas_1i          
///               %signed   8  ref_lf_deltas_2i          
///               %signed   8  ref_lf_deltas_3i          
///                                    ###
///                                    * ref_lf_deltas[0:3]
///                                    ###
///               %signed   8  mode_lf_deltas_0i         
///               %signed   8  mode_lf_deltas_1i         
///               %signed   8  mode_lf_deltas_2i         
///               %signed   8  mode_lf_deltas_3i         
///                                    ###
///                                    * mode_lf_deltas[0:3]
///                                    * End VP8_LF_DELTAS
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_VP8_LF_DELTAS
#define h_VP8_LF_DELTAS (){}

    #define     BA_VP8_LF_DELTAS_ref_lf_deltas_0i              0x0000
    #define     B16VP8_LF_DELTAS_ref_lf_deltas_0i              0x0000
    #define   LSb32VP8_LF_DELTAS_ref_lf_deltas_0i                 0
    #define   LSb16VP8_LF_DELTAS_ref_lf_deltas_0i                 0
    #define       bVP8_LF_DELTAS_ref_lf_deltas_0i              8
    #define   MSK32VP8_LF_DELTAS_ref_lf_deltas_0i                 0x000000FF

    #define     BA_VP8_LF_DELTAS_ref_lf_deltas_1i              0x0001
    #define     B16VP8_LF_DELTAS_ref_lf_deltas_1i              0x0000
    #define   LSb32VP8_LF_DELTAS_ref_lf_deltas_1i                 8
    #define   LSb16VP8_LF_DELTAS_ref_lf_deltas_1i                 8
    #define       bVP8_LF_DELTAS_ref_lf_deltas_1i              8
    #define   MSK32VP8_LF_DELTAS_ref_lf_deltas_1i                 0x0000FF00

    #define     BA_VP8_LF_DELTAS_ref_lf_deltas_2i              0x0002
    #define     B16VP8_LF_DELTAS_ref_lf_deltas_2i              0x0002
    #define   LSb32VP8_LF_DELTAS_ref_lf_deltas_2i                 16
    #define   LSb16VP8_LF_DELTAS_ref_lf_deltas_2i                 0
    #define       bVP8_LF_DELTAS_ref_lf_deltas_2i              8
    #define   MSK32VP8_LF_DELTAS_ref_lf_deltas_2i                 0x00FF0000

    #define     BA_VP8_LF_DELTAS_ref_lf_deltas_3i              0x0003
    #define     B16VP8_LF_DELTAS_ref_lf_deltas_3i              0x0002
    #define   LSb32VP8_LF_DELTAS_ref_lf_deltas_3i                 24
    #define   LSb16VP8_LF_DELTAS_ref_lf_deltas_3i                 8
    #define       bVP8_LF_DELTAS_ref_lf_deltas_3i              8
    #define   MSK32VP8_LF_DELTAS_ref_lf_deltas_3i                 0xFF000000

    #define     BA_VP8_LF_DELTAS_mode_lf_deltas_0i             0x0004
    #define     B16VP8_LF_DELTAS_mode_lf_deltas_0i             0x0004
    #define   LSb32VP8_LF_DELTAS_mode_lf_deltas_0i                0
    #define   LSb16VP8_LF_DELTAS_mode_lf_deltas_0i                0
    #define       bVP8_LF_DELTAS_mode_lf_deltas_0i             8
    #define   MSK32VP8_LF_DELTAS_mode_lf_deltas_0i                0x000000FF

    #define     BA_VP8_LF_DELTAS_mode_lf_deltas_1i             0x0005
    #define     B16VP8_LF_DELTAS_mode_lf_deltas_1i             0x0004
    #define   LSb32VP8_LF_DELTAS_mode_lf_deltas_1i                8
    #define   LSb16VP8_LF_DELTAS_mode_lf_deltas_1i                8
    #define       bVP8_LF_DELTAS_mode_lf_deltas_1i             8
    #define   MSK32VP8_LF_DELTAS_mode_lf_deltas_1i                0x0000FF00

    #define     BA_VP8_LF_DELTAS_mode_lf_deltas_2i             0x0006
    #define     B16VP8_LF_DELTAS_mode_lf_deltas_2i             0x0006
    #define   LSb32VP8_LF_DELTAS_mode_lf_deltas_2i                16
    #define   LSb16VP8_LF_DELTAS_mode_lf_deltas_2i                0
    #define       bVP8_LF_DELTAS_mode_lf_deltas_2i             8
    #define   MSK32VP8_LF_DELTAS_mode_lf_deltas_2i                0x00FF0000

    #define     BA_VP8_LF_DELTAS_mode_lf_deltas_3i             0x0007
    #define     B16VP8_LF_DELTAS_mode_lf_deltas_3i             0x0006
    #define   LSb32VP8_LF_DELTAS_mode_lf_deltas_3i                24
    #define   LSb16VP8_LF_DELTAS_mode_lf_deltas_3i                8
    #define       bVP8_LF_DELTAS_mode_lf_deltas_3i             8
    #define   MSK32VP8_LF_DELTAS_mode_lf_deltas_3i                0xFF000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_VP8_LF_DELTAS {
    ///////////////////////////////////////////////////////////
    #define   GET32VP8_LF_DELTAS_ref_lf_deltas_0i(r32)         _BFGET_(r32, 7, 0)
    #define   SET32VP8_LF_DELTAS_ref_lf_deltas_0i(r32,v)       _BFSET_(r32, 7, 0,v)
    #define   GET16VP8_LF_DELTAS_ref_lf_deltas_0i(r16)         _BFGET_(r16, 7, 0)
    #define   SET16VP8_LF_DELTAS_ref_lf_deltas_0i(r16,v)       _BFSET_(r16, 7, 0,v)

    #define   GET32VP8_LF_DELTAS_ref_lf_deltas_1i(r32)         _BFGET_(r32,15, 8)
    #define   SET32VP8_LF_DELTAS_ref_lf_deltas_1i(r32,v)       _BFSET_(r32,15, 8,v)
    #define   GET16VP8_LF_DELTAS_ref_lf_deltas_1i(r16)         _BFGET_(r16,15, 8)
    #define   SET16VP8_LF_DELTAS_ref_lf_deltas_1i(r16,v)       _BFSET_(r16,15, 8,v)

    #define   GET32VP8_LF_DELTAS_ref_lf_deltas_2i(r32)         _BFGET_(r32,23,16)
    #define   SET32VP8_LF_DELTAS_ref_lf_deltas_2i(r32,v)       _BFSET_(r32,23,16,v)
    #define   GET16VP8_LF_DELTAS_ref_lf_deltas_2i(r16)         _BFGET_(r16, 7, 0)
    #define   SET16VP8_LF_DELTAS_ref_lf_deltas_2i(r16,v)       _BFSET_(r16, 7, 0,v)

    #define   GET32VP8_LF_DELTAS_ref_lf_deltas_3i(r32)         _BFGET_(r32,31,24)
    #define   SET32VP8_LF_DELTAS_ref_lf_deltas_3i(r32,v)       _BFSET_(r32,31,24,v)
    #define   GET16VP8_LF_DELTAS_ref_lf_deltas_3i(r16)         _BFGET_(r16,15, 8)
    #define   SET16VP8_LF_DELTAS_ref_lf_deltas_3i(r16,v)       _BFSET_(r16,15, 8,v)

            UNSG32 s_ref_lf_deltas_0i                          :  8;
            UNSG32 s_ref_lf_deltas_1i                          :  8;
            UNSG32 s_ref_lf_deltas_2i                          :  8;
            UNSG32 s_ref_lf_deltas_3i                          :  8;
    ///////////////////////////////////////////////////////////

    #define   GET32VP8_LF_DELTAS_mode_lf_deltas_0i(r32)        _BFGET_(r32, 7, 0)
    #define   SET32VP8_LF_DELTAS_mode_lf_deltas_0i(r32,v)      _BFSET_(r32, 7, 0,v)
    #define   GET16VP8_LF_DELTAS_mode_lf_deltas_0i(r16)        _BFGET_(r16, 7, 0)
    #define   SET16VP8_LF_DELTAS_mode_lf_deltas_0i(r16,v)      _BFSET_(r16, 7, 0,v)

    #define   GET32VP8_LF_DELTAS_mode_lf_deltas_1i(r32)        _BFGET_(r32,15, 8)
    #define   SET32VP8_LF_DELTAS_mode_lf_deltas_1i(r32,v)      _BFSET_(r32,15, 8,v)
    #define   GET16VP8_LF_DELTAS_mode_lf_deltas_1i(r16)        _BFGET_(r16,15, 8)
    #define   SET16VP8_LF_DELTAS_mode_lf_deltas_1i(r16,v)      _BFSET_(r16,15, 8,v)

    #define   GET32VP8_LF_DELTAS_mode_lf_deltas_2i(r32)        _BFGET_(r32,23,16)
    #define   SET32VP8_LF_DELTAS_mode_lf_deltas_2i(r32,v)      _BFSET_(r32,23,16,v)
    #define   GET16VP8_LF_DELTAS_mode_lf_deltas_2i(r16)        _BFGET_(r16, 7, 0)
    #define   SET16VP8_LF_DELTAS_mode_lf_deltas_2i(r16,v)      _BFSET_(r16, 7, 0,v)

    #define   GET32VP8_LF_DELTAS_mode_lf_deltas_3i(r32)        _BFGET_(r32,31,24)
    #define   SET32VP8_LF_DELTAS_mode_lf_deltas_3i(r32,v)      _BFSET_(r32,31,24,v)
    #define   GET16VP8_LF_DELTAS_mode_lf_deltas_3i(r16)        _BFGET_(r16,15, 8)
    #define   SET16VP8_LF_DELTAS_mode_lf_deltas_3i(r16,v)      _BFSET_(r16,15, 8,v)

            UNSG32 s_mode_lf_deltas_0i                         :  8;
            UNSG32 s_mode_lf_deltas_1i                         :  8;
            UNSG32 s_mode_lf_deltas_2i                         :  8;
            UNSG32 s_mode_lf_deltas_3i                         :  8;
    ///////////////////////////////////////////////////////////
    } SIE_VP8_LF_DELTAS;

    ///////////////////////////////////////////////////////////
     SIGN32 VP8_LF_DELTAS_drvrd(SIE_VP8_LF_DELTAS *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 VP8_LF_DELTAS_drvwr(SIE_VP8_LF_DELTAS *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void VP8_LF_DELTAS_reset(SIE_VP8_LF_DELTAS *p);
     SIGN32 VP8_LF_DELTAS_cmp  (SIE_VP8_LF_DELTAS *p, SIE_VP8_LF_DELTAS *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define VP8_LF_DELTAS_check(p,pie,pfx,hLOG) VP8_LF_DELTAS_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define VP8_LF_DELTAS_print(p,    pfx,hLOG) VP8_LF_DELTAS_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: VP8_LF_DELTAS
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE VP8_cmd                 biu              (4,4)
///     ###
///     * VP8 FOP context data format
///     * [0:15]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 3  Sharpness                 
///                                    ###
///                                    * Sharpness level
///                                    ###
///               %unsigned 1  FilterType                
///                                    ###
///                                    * 0: simple, 1: normal
///                                    ###
///               %unsigned 1  lf_delta_enabled          
///                                    ###
///                                    * 0: disabled, 1: enabled
///                                    ###
///               %unsigned 6  baseFilterLevel           
///                                    ###
///                                    * baseline filter level.
///                                    ###
///               %unsigned 2  ref_frame                 
///                                    : intra                     0x0
///                                    : last                      0x1
///                                    : golden                    0x2
///                                    : altref                    0x3
///                                                 ###
///                                                 * Reference picture
///                                                 ###
///               %unsigned 2  pred_mode                 
///                                    : b_pred                    0x0
///                                    : other                     0x1
///                                    : zero_mv                   0x2
///                                    : split_mv                  0x3
///                                                 ###
///                                                 * prediction mode
///                                                 * End VP8_cmd
///                                                 ###
///               %%        17         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      15b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_VP8_cmd
#define h_VP8_cmd (){}

    #define     BA_VP8_cmd_Sharpness                           0x0000
    #define     B16VP8_cmd_Sharpness                           0x0000
    #define   LSb32VP8_cmd_Sharpness                              0
    #define   LSb16VP8_cmd_Sharpness                              0
    #define       bVP8_cmd_Sharpness                           3
    #define   MSK32VP8_cmd_Sharpness                              0x00000007

    #define     BA_VP8_cmd_FilterType                          0x0000
    #define     B16VP8_cmd_FilterType                          0x0000
    #define   LSb32VP8_cmd_FilterType                             3
    #define   LSb16VP8_cmd_FilterType                             3
    #define       bVP8_cmd_FilterType                          1
    #define   MSK32VP8_cmd_FilterType                             0x00000008

    #define     BA_VP8_cmd_lf_delta_enabled                    0x0000
    #define     B16VP8_cmd_lf_delta_enabled                    0x0000
    #define   LSb32VP8_cmd_lf_delta_enabled                       4
    #define   LSb16VP8_cmd_lf_delta_enabled                       4
    #define       bVP8_cmd_lf_delta_enabled                    1
    #define   MSK32VP8_cmd_lf_delta_enabled                       0x00000010

    #define     BA_VP8_cmd_baseFilterLevel                     0x0000
    #define     B16VP8_cmd_baseFilterLevel                     0x0000
    #define   LSb32VP8_cmd_baseFilterLevel                        5
    #define   LSb16VP8_cmd_baseFilterLevel                        5
    #define       bVP8_cmd_baseFilterLevel                     6
    #define   MSK32VP8_cmd_baseFilterLevel                        0x000007E0

    #define     BA_VP8_cmd_ref_frame                           0x0001
    #define     B16VP8_cmd_ref_frame                           0x0000
    #define   LSb32VP8_cmd_ref_frame                              11
    #define   LSb16VP8_cmd_ref_frame                              11
    #define       bVP8_cmd_ref_frame                           2
    #define   MSK32VP8_cmd_ref_frame                              0x00001800
    #define        VP8_cmd_ref_frame_intra                                  0x0
    #define        VP8_cmd_ref_frame_last                                   0x1
    #define        VP8_cmd_ref_frame_golden                                 0x2
    #define        VP8_cmd_ref_frame_altref                                 0x3

    #define     BA_VP8_cmd_pred_mode                           0x0001
    #define     B16VP8_cmd_pred_mode                           0x0000
    #define   LSb32VP8_cmd_pred_mode                              13
    #define   LSb16VP8_cmd_pred_mode                              13
    #define       bVP8_cmd_pred_mode                           2
    #define   MSK32VP8_cmd_pred_mode                              0x00006000
    #define        VP8_cmd_pred_mode_b_pred                                 0x0
    #define        VP8_cmd_pred_mode_other                                  0x1
    #define        VP8_cmd_pred_mode_zero_mv                                0x2
    #define        VP8_cmd_pred_mode_split_mv                               0x3
    ///////////////////////////////////////////////////////////

    typedef struct SIE_VP8_cmd {
    ///////////////////////////////////////////////////////////
    #define   GET32VP8_cmd_Sharpness(r32)                      _BFGET_(r32, 2, 0)
    #define   SET32VP8_cmd_Sharpness(r32,v)                    _BFSET_(r32, 2, 0,v)
    #define   GET16VP8_cmd_Sharpness(r16)                      _BFGET_(r16, 2, 0)
    #define   SET16VP8_cmd_Sharpness(r16,v)                    _BFSET_(r16, 2, 0,v)

    #define   GET32VP8_cmd_FilterType(r32)                     _BFGET_(r32, 3, 3)
    #define   SET32VP8_cmd_FilterType(r32,v)                   _BFSET_(r32, 3, 3,v)
    #define   GET16VP8_cmd_FilterType(r16)                     _BFGET_(r16, 3, 3)
    #define   SET16VP8_cmd_FilterType(r16,v)                   _BFSET_(r16, 3, 3,v)

    #define   GET32VP8_cmd_lf_delta_enabled(r32)               _BFGET_(r32, 4, 4)
    #define   SET32VP8_cmd_lf_delta_enabled(r32,v)             _BFSET_(r32, 4, 4,v)
    #define   GET16VP8_cmd_lf_delta_enabled(r16)               _BFGET_(r16, 4, 4)
    #define   SET16VP8_cmd_lf_delta_enabled(r16,v)             _BFSET_(r16, 4, 4,v)

    #define   GET32VP8_cmd_baseFilterLevel(r32)                _BFGET_(r32,10, 5)
    #define   SET32VP8_cmd_baseFilterLevel(r32,v)              _BFSET_(r32,10, 5,v)
    #define   GET16VP8_cmd_baseFilterLevel(r16)                _BFGET_(r16,10, 5)
    #define   SET16VP8_cmd_baseFilterLevel(r16,v)              _BFSET_(r16,10, 5,v)

    #define   GET32VP8_cmd_ref_frame(r32)                      _BFGET_(r32,12,11)
    #define   SET32VP8_cmd_ref_frame(r32,v)                    _BFSET_(r32,12,11,v)
    #define   GET16VP8_cmd_ref_frame(r16)                      _BFGET_(r16,12,11)
    #define   SET16VP8_cmd_ref_frame(r16,v)                    _BFSET_(r16,12,11,v)

    #define   GET32VP8_cmd_pred_mode(r32)                      _BFGET_(r32,14,13)
    #define   SET32VP8_cmd_pred_mode(r32,v)                    _BFSET_(r32,14,13,v)
    #define   GET16VP8_cmd_pred_mode(r16)                      _BFGET_(r16,14,13)
    #define   SET16VP8_cmd_pred_mode(r16,v)                    _BFSET_(r16,14,13,v)

            UNSG32 u_Sharpness                                 :  3;
            UNSG32 u_FilterType                                :  1;
            UNSG32 u_lf_delta_enabled                          :  1;
            UNSG32 u_baseFilterLevel                           :  6;
            UNSG32 u_ref_frame                                 :  2;
            UNSG32 u_pred_mode                                 :  2;
            UNSG32 RSVDx0_b15                                  : 17;
    ///////////////////////////////////////////////////////////
    } SIE_VP8_cmd;

    ///////////////////////////////////////////////////////////
     SIGN32 VP8_cmd_drvrd(SIE_VP8_cmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 VP8_cmd_drvwr(SIE_VP8_cmd *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void VP8_cmd_reset(SIE_VP8_cmd *p);
     SIGN32 VP8_cmd_cmp  (SIE_VP8_cmd *p, SIE_VP8_cmd *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define VP8_cmd_check(p,pie,pfx,hLOG) VP8_cmd_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define VP8_cmd_print(p,    pfx,hLOG) VP8_cmd_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: VP8_cmd
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE VP8_edge_param          biu              (4,4)
///     ###
///     * VP8 loop filter edge parameters
///     * [0:32]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 1  FilterType                
///                                    : simple                    0x0
///                                    : normal                    0x1
///                                                 ###
///                                                 * Filter type
///                                                 ###
///               %unsigned 1  MB_edge                   
///                                    ###
///                                    * 1 if the edge is at MB boundary; 0 otherwise
///                                    ###
///               %unsigned 2  hevThreshold              
///                                    ###
///                                    * hevThreshold, range 0~3
///                                    ###
///               %unsigned 7  edgeLimit                 
///                                    ###
///                                    * edgeLimit
///                                    ###
///               %unsigned 5  rsvd                      
///                                    ###
///                                    * reserved
///                                    ###
///               %unsigned 6  interiorLimit             
///                                    ###
///                                    * interiorLimit
///                                    * End VP8_edge_param
///                                    ###
///               %%        10         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      22b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_VP8_edge_param
#define h_VP8_edge_param (){}

    #define     BA_VP8_edge_param_FilterType                   0x0000
    #define     B16VP8_edge_param_FilterType                   0x0000
    #define   LSb32VP8_edge_param_FilterType                      0
    #define   LSb16VP8_edge_param_FilterType                      0
    #define       bVP8_edge_param_FilterType                   1
    #define   MSK32VP8_edge_param_FilterType                      0x00000001
    #define        VP8_edge_param_FilterType_simple                         0x0
    #define        VP8_edge_param_FilterType_normal                         0x1

    #define     BA_VP8_edge_param_MB_edge                      0x0000
    #define     B16VP8_edge_param_MB_edge                      0x0000
    #define   LSb32VP8_edge_param_MB_edge                         1
    #define   LSb16VP8_edge_param_MB_edge                         1
    #define       bVP8_edge_param_MB_edge                      1
    #define   MSK32VP8_edge_param_MB_edge                         0x00000002

    #define     BA_VP8_edge_param_hevThreshold                 0x0000
    #define     B16VP8_edge_param_hevThreshold                 0x0000
    #define   LSb32VP8_edge_param_hevThreshold                    2
    #define   LSb16VP8_edge_param_hevThreshold                    2
    #define       bVP8_edge_param_hevThreshold                 2
    #define   MSK32VP8_edge_param_hevThreshold                    0x0000000C

    #define     BA_VP8_edge_param_edgeLimit                    0x0000
    #define     B16VP8_edge_param_edgeLimit                    0x0000
    #define   LSb32VP8_edge_param_edgeLimit                       4
    #define   LSb16VP8_edge_param_edgeLimit                       4
    #define       bVP8_edge_param_edgeLimit                    7
    #define   MSK32VP8_edge_param_edgeLimit                       0x000007F0

    #define     BA_VP8_edge_param_rsvd                         0x0001
    #define     B16VP8_edge_param_rsvd                         0x0000
    #define   LSb32VP8_edge_param_rsvd                            11
    #define   LSb16VP8_edge_param_rsvd                            11
    #define       bVP8_edge_param_rsvd                         5
    #define   MSK32VP8_edge_param_rsvd                            0x0000F800

    #define     BA_VP8_edge_param_interiorLimit                0x0002
    #define     B16VP8_edge_param_interiorLimit                0x0002
    #define   LSb32VP8_edge_param_interiorLimit                   16
    #define   LSb16VP8_edge_param_interiorLimit                   0
    #define       bVP8_edge_param_interiorLimit                6
    #define   MSK32VP8_edge_param_interiorLimit                   0x003F0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_VP8_edge_param {
    ///////////////////////////////////////////////////////////
    #define   GET32VP8_edge_param_FilterType(r32)              _BFGET_(r32, 0, 0)
    #define   SET32VP8_edge_param_FilterType(r32,v)            _BFSET_(r32, 0, 0,v)
    #define   GET16VP8_edge_param_FilterType(r16)              _BFGET_(r16, 0, 0)
    #define   SET16VP8_edge_param_FilterType(r16,v)            _BFSET_(r16, 0, 0,v)

    #define   GET32VP8_edge_param_MB_edge(r32)                 _BFGET_(r32, 1, 1)
    #define   SET32VP8_edge_param_MB_edge(r32,v)               _BFSET_(r32, 1, 1,v)
    #define   GET16VP8_edge_param_MB_edge(r16)                 _BFGET_(r16, 1, 1)
    #define   SET16VP8_edge_param_MB_edge(r16,v)               _BFSET_(r16, 1, 1,v)

    #define   GET32VP8_edge_param_hevThreshold(r32)            _BFGET_(r32, 3, 2)
    #define   SET32VP8_edge_param_hevThreshold(r32,v)          _BFSET_(r32, 3, 2,v)
    #define   GET16VP8_edge_param_hevThreshold(r16)            _BFGET_(r16, 3, 2)
    #define   SET16VP8_edge_param_hevThreshold(r16,v)          _BFSET_(r16, 3, 2,v)

    #define   GET32VP8_edge_param_edgeLimit(r32)               _BFGET_(r32,10, 4)
    #define   SET32VP8_edge_param_edgeLimit(r32,v)             _BFSET_(r32,10, 4,v)
    #define   GET16VP8_edge_param_edgeLimit(r16)               _BFGET_(r16,10, 4)
    #define   SET16VP8_edge_param_edgeLimit(r16,v)             _BFSET_(r16,10, 4,v)

    #define   GET32VP8_edge_param_rsvd(r32)                    _BFGET_(r32,15,11)
    #define   SET32VP8_edge_param_rsvd(r32,v)                  _BFSET_(r32,15,11,v)
    #define   GET16VP8_edge_param_rsvd(r16)                    _BFGET_(r16,15,11)
    #define   SET16VP8_edge_param_rsvd(r16,v)                  _BFSET_(r16,15,11,v)

    #define   GET32VP8_edge_param_interiorLimit(r32)           _BFGET_(r32,21,16)
    #define   SET32VP8_edge_param_interiorLimit(r32,v)         _BFSET_(r32,21,16,v)
    #define   GET16VP8_edge_param_interiorLimit(r16)           _BFGET_(r16, 5, 0)
    #define   SET16VP8_edge_param_interiorLimit(r16,v)         _BFSET_(r16, 5, 0,v)

            UNSG32 u_FilterType                                :  1;
            UNSG32 u_MB_edge                                   :  1;
            UNSG32 u_hevThreshold                              :  2;
            UNSG32 u_edgeLimit                                 :  7;
            UNSG32 u_rsvd                                      :  5;
            UNSG32 u_interiorLimit                             :  6;
            UNSG32 RSVDx0_b22                                  : 10;
    ///////////////////////////////////////////////////////////
    } SIE_VP8_edge_param;

    ///////////////////////////////////////////////////////////
     SIGN32 VP8_edge_param_drvrd(SIE_VP8_edge_param *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 VP8_edge_param_drvwr(SIE_VP8_edge_param *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void VP8_edge_param_reset(SIE_VP8_edge_param *p);
     SIGN32 VP8_edge_param_cmp  (SIE_VP8_edge_param *p, SIE_VP8_edge_param *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define VP8_edge_param_check(p,pie,pfx,hLOG) VP8_edge_param_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define VP8_edge_param_print(p,    pfx,hLOG) VP8_edge_param_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: VP8_edge_param
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE nebAddr                 biu              (4,4)
///     ###
///     * Neighbor address output format
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 val                  (P)
///               %unsigned 3  dltBank                   
///               %unsigned 5  subAddr                   
///               %%        24         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       8b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_nebAddr
#define h_nebAddr (){}

    #define     RA_nebAddr_val                                 0x0000

    #define     BA_nebAddr_val_dltBank                         0x0000
    #define     B16nebAddr_val_dltBank                         0x0000
    #define   LSb32nebAddr_val_dltBank                            0
    #define   LSb16nebAddr_val_dltBank                            0
    #define       bnebAddr_val_dltBank                         3
    #define   MSK32nebAddr_val_dltBank                            0x00000007

    #define     BA_nebAddr_val_subAddr                         0x0000
    #define     B16nebAddr_val_subAddr                         0x0000
    #define   LSb32nebAddr_val_subAddr                            3
    #define   LSb16nebAddr_val_subAddr                            3
    #define       bnebAddr_val_subAddr                         5
    #define   MSK32nebAddr_val_subAddr                            0x000000F8
    ///////////////////////////////////////////////////////////

    typedef struct SIE_nebAddr {
    ///////////////////////////////////////////////////////////
    #define   GET32nebAddr_val_dltBank(r32)                    _BFGET_(r32, 2, 0)
    #define   SET32nebAddr_val_dltBank(r32,v)                  _BFSET_(r32, 2, 0,v)
    #define   GET16nebAddr_val_dltBank(r16)                    _BFGET_(r16, 2, 0)
    #define   SET16nebAddr_val_dltBank(r16,v)                  _BFSET_(r16, 2, 0,v)

    #define   GET32nebAddr_val_subAddr(r32)                    _BFGET_(r32, 7, 3)
    #define   SET32nebAddr_val_subAddr(r32,v)                  _BFSET_(r32, 7, 3,v)
    #define   GET16nebAddr_val_subAddr(r16)                    _BFGET_(r16, 7, 3)
    #define   SET16nebAddr_val_subAddr(r16,v)                  _BFSET_(r16, 7, 3,v)

    #define     w32nebAddr_val                                 {\
            UNSG32 uval_dltBank                                :  3;\
            UNSG32 uval_subAddr                                :  5;\
            UNSG32 RSVDx0_b8                                   : 24;\
          }
    union { UNSG32 u32nebAddr_val;
            struct w32nebAddr_val;
          };
    ///////////////////////////////////////////////////////////
    } SIE_nebAddr;

    typedef union  T32nebAddr_val
          { UNSG32 u32;
            struct w32nebAddr_val;
                 } T32nebAddr_val;
    ///////////////////////////////////////////////////////////

    typedef union  TnebAddr_val
          { UNSG32 u32[1];
            struct {
            struct w32nebAddr_val;
                   };
                 } TnebAddr_val;

    ///////////////////////////////////////////////////////////
     SIGN32 nebAddr_drvrd(SIE_nebAddr *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 nebAddr_drvwr(SIE_nebAddr *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void nebAddr_reset(SIE_nebAddr *p);
     SIGN32 nebAddr_cmp  (SIE_nebAddr *p, SIE_nebAddr *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define nebAddr_check(p,pie,pfx,hLOG) nebAddr_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define nebAddr_print(p,    pfx,hLOG) nebAddr_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: nebAddr
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE get4x4NeighborInput     biu              (4,4)
///     ###
///     * Structure for C model only; no use for hardware
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 In                   (P)
///               %unsigned 1  mbAvailA                  
///               %unsigned 1  mbAvailB                  
///               %unsigned 1  mbAvailC                  
///               %unsigned 1  mbAvailD                  
///               %unsigned 1  mbFieldA                  
///               %unsigned 1  mbFieldB                  
///               %unsigned 1  mbFieldC                  
///               %unsigned 1  mbFieldD                  
///               %unsigned 1  mbFieldX                  
///               %unsigned 1  isBotMb                   
///               %%        22         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      10b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_get4x4NeighborInput
#define h_get4x4NeighborInput (){}

    #define     RA_get4x4NeighborInput_In                      0x0000

    #define     BA_get4x4NeighborInput_In_mbAvailA             0x0000
    #define     B16get4x4NeighborInput_In_mbAvailA             0x0000
    #define   LSb32get4x4NeighborInput_In_mbAvailA                0
    #define   LSb16get4x4NeighborInput_In_mbAvailA                0
    #define       bget4x4NeighborInput_In_mbAvailA             1
    #define   MSK32get4x4NeighborInput_In_mbAvailA                0x00000001

    #define     BA_get4x4NeighborInput_In_mbAvailB             0x0000
    #define     B16get4x4NeighborInput_In_mbAvailB             0x0000
    #define   LSb32get4x4NeighborInput_In_mbAvailB                1
    #define   LSb16get4x4NeighborInput_In_mbAvailB                1
    #define       bget4x4NeighborInput_In_mbAvailB             1
    #define   MSK32get4x4NeighborInput_In_mbAvailB                0x00000002

    #define     BA_get4x4NeighborInput_In_mbAvailC             0x0000
    #define     B16get4x4NeighborInput_In_mbAvailC             0x0000
    #define   LSb32get4x4NeighborInput_In_mbAvailC                2
    #define   LSb16get4x4NeighborInput_In_mbAvailC                2
    #define       bget4x4NeighborInput_In_mbAvailC             1
    #define   MSK32get4x4NeighborInput_In_mbAvailC                0x00000004

    #define     BA_get4x4NeighborInput_In_mbAvailD             0x0000
    #define     B16get4x4NeighborInput_In_mbAvailD             0x0000
    #define   LSb32get4x4NeighborInput_In_mbAvailD                3
    #define   LSb16get4x4NeighborInput_In_mbAvailD                3
    #define       bget4x4NeighborInput_In_mbAvailD             1
    #define   MSK32get4x4NeighborInput_In_mbAvailD                0x00000008

    #define     BA_get4x4NeighborInput_In_mbFieldA             0x0000
    #define     B16get4x4NeighborInput_In_mbFieldA             0x0000
    #define   LSb32get4x4NeighborInput_In_mbFieldA                4
    #define   LSb16get4x4NeighborInput_In_mbFieldA                4
    #define       bget4x4NeighborInput_In_mbFieldA             1
    #define   MSK32get4x4NeighborInput_In_mbFieldA                0x00000010

    #define     BA_get4x4NeighborInput_In_mbFieldB             0x0000
    #define     B16get4x4NeighborInput_In_mbFieldB             0x0000
    #define   LSb32get4x4NeighborInput_In_mbFieldB                5
    #define   LSb16get4x4NeighborInput_In_mbFieldB                5
    #define       bget4x4NeighborInput_In_mbFieldB             1
    #define   MSK32get4x4NeighborInput_In_mbFieldB                0x00000020

    #define     BA_get4x4NeighborInput_In_mbFieldC             0x0000
    #define     B16get4x4NeighborInput_In_mbFieldC             0x0000
    #define   LSb32get4x4NeighborInput_In_mbFieldC                6
    #define   LSb16get4x4NeighborInput_In_mbFieldC                6
    #define       bget4x4NeighborInput_In_mbFieldC             1
    #define   MSK32get4x4NeighborInput_In_mbFieldC                0x00000040

    #define     BA_get4x4NeighborInput_In_mbFieldD             0x0000
    #define     B16get4x4NeighborInput_In_mbFieldD             0x0000
    #define   LSb32get4x4NeighborInput_In_mbFieldD                7
    #define   LSb16get4x4NeighborInput_In_mbFieldD                7
    #define       bget4x4NeighborInput_In_mbFieldD             1
    #define   MSK32get4x4NeighborInput_In_mbFieldD                0x00000080

    #define     BA_get4x4NeighborInput_In_mbFieldX             0x0001
    #define     B16get4x4NeighborInput_In_mbFieldX             0x0000
    #define   LSb32get4x4NeighborInput_In_mbFieldX                8
    #define   LSb16get4x4NeighborInput_In_mbFieldX                8
    #define       bget4x4NeighborInput_In_mbFieldX             1
    #define   MSK32get4x4NeighborInput_In_mbFieldX                0x00000100

    #define     BA_get4x4NeighborInput_In_isBotMb              0x0001
    #define     B16get4x4NeighborInput_In_isBotMb              0x0000
    #define   LSb32get4x4NeighborInput_In_isBotMb                 9
    #define   LSb16get4x4NeighborInput_In_isBotMb                 9
    #define       bget4x4NeighborInput_In_isBotMb              1
    #define   MSK32get4x4NeighborInput_In_isBotMb                 0x00000200
    ///////////////////////////////////////////////////////////

    typedef struct SIE_get4x4NeighborInput {
    ///////////////////////////////////////////////////////////
    #define   GET32get4x4NeighborInput_In_mbAvailA(r32)        _BFGET_(r32, 0, 0)
    #define   SET32get4x4NeighborInput_In_mbAvailA(r32,v)      _BFSET_(r32, 0, 0,v)
    #define   GET16get4x4NeighborInput_In_mbAvailA(r16)        _BFGET_(r16, 0, 0)
    #define   SET16get4x4NeighborInput_In_mbAvailA(r16,v)      _BFSET_(r16, 0, 0,v)

    #define   GET32get4x4NeighborInput_In_mbAvailB(r32)        _BFGET_(r32, 1, 1)
    #define   SET32get4x4NeighborInput_In_mbAvailB(r32,v)      _BFSET_(r32, 1, 1,v)
    #define   GET16get4x4NeighborInput_In_mbAvailB(r16)        _BFGET_(r16, 1, 1)
    #define   SET16get4x4NeighborInput_In_mbAvailB(r16,v)      _BFSET_(r16, 1, 1,v)

    #define   GET32get4x4NeighborInput_In_mbAvailC(r32)        _BFGET_(r32, 2, 2)
    #define   SET32get4x4NeighborInput_In_mbAvailC(r32,v)      _BFSET_(r32, 2, 2,v)
    #define   GET16get4x4NeighborInput_In_mbAvailC(r16)        _BFGET_(r16, 2, 2)
    #define   SET16get4x4NeighborInput_In_mbAvailC(r16,v)      _BFSET_(r16, 2, 2,v)

    #define   GET32get4x4NeighborInput_In_mbAvailD(r32)        _BFGET_(r32, 3, 3)
    #define   SET32get4x4NeighborInput_In_mbAvailD(r32,v)      _BFSET_(r32, 3, 3,v)
    #define   GET16get4x4NeighborInput_In_mbAvailD(r16)        _BFGET_(r16, 3, 3)
    #define   SET16get4x4NeighborInput_In_mbAvailD(r16,v)      _BFSET_(r16, 3, 3,v)

    #define   GET32get4x4NeighborInput_In_mbFieldA(r32)        _BFGET_(r32, 4, 4)
    #define   SET32get4x4NeighborInput_In_mbFieldA(r32,v)      _BFSET_(r32, 4, 4,v)
    #define   GET16get4x4NeighborInput_In_mbFieldA(r16)        _BFGET_(r16, 4, 4)
    #define   SET16get4x4NeighborInput_In_mbFieldA(r16,v)      _BFSET_(r16, 4, 4,v)

    #define   GET32get4x4NeighborInput_In_mbFieldB(r32)        _BFGET_(r32, 5, 5)
    #define   SET32get4x4NeighborInput_In_mbFieldB(r32,v)      _BFSET_(r32, 5, 5,v)
    #define   GET16get4x4NeighborInput_In_mbFieldB(r16)        _BFGET_(r16, 5, 5)
    #define   SET16get4x4NeighborInput_In_mbFieldB(r16,v)      _BFSET_(r16, 5, 5,v)

    #define   GET32get4x4NeighborInput_In_mbFieldC(r32)        _BFGET_(r32, 6, 6)
    #define   SET32get4x4NeighborInput_In_mbFieldC(r32,v)      _BFSET_(r32, 6, 6,v)
    #define   GET16get4x4NeighborInput_In_mbFieldC(r16)        _BFGET_(r16, 6, 6)
    #define   SET16get4x4NeighborInput_In_mbFieldC(r16,v)      _BFSET_(r16, 6, 6,v)

    #define   GET32get4x4NeighborInput_In_mbFieldD(r32)        _BFGET_(r32, 7, 7)
    #define   SET32get4x4NeighborInput_In_mbFieldD(r32,v)      _BFSET_(r32, 7, 7,v)
    #define   GET16get4x4NeighborInput_In_mbFieldD(r16)        _BFGET_(r16, 7, 7)
    #define   SET16get4x4NeighborInput_In_mbFieldD(r16,v)      _BFSET_(r16, 7, 7,v)

    #define   GET32get4x4NeighborInput_In_mbFieldX(r32)        _BFGET_(r32, 8, 8)
    #define   SET32get4x4NeighborInput_In_mbFieldX(r32,v)      _BFSET_(r32, 8, 8,v)
    #define   GET16get4x4NeighborInput_In_mbFieldX(r16)        _BFGET_(r16, 8, 8)
    #define   SET16get4x4NeighborInput_In_mbFieldX(r16,v)      _BFSET_(r16, 8, 8,v)

    #define   GET32get4x4NeighborInput_In_isBotMb(r32)         _BFGET_(r32, 9, 9)
    #define   SET32get4x4NeighborInput_In_isBotMb(r32,v)       _BFSET_(r32, 9, 9,v)
    #define   GET16get4x4NeighborInput_In_isBotMb(r16)         _BFGET_(r16, 9, 9)
    #define   SET16get4x4NeighborInput_In_isBotMb(r16,v)       _BFSET_(r16, 9, 9,v)

    #define     w32get4x4NeighborInput_In                      {\
            UNSG32 uIn_mbAvailA                                :  1;\
            UNSG32 uIn_mbAvailB                                :  1;\
            UNSG32 uIn_mbAvailC                                :  1;\
            UNSG32 uIn_mbAvailD                                :  1;\
            UNSG32 uIn_mbFieldA                                :  1;\
            UNSG32 uIn_mbFieldB                                :  1;\
            UNSG32 uIn_mbFieldC                                :  1;\
            UNSG32 uIn_mbFieldD                                :  1;\
            UNSG32 uIn_mbFieldX                                :  1;\
            UNSG32 uIn_isBotMb                                 :  1;\
            UNSG32 RSVDx0_b10                                  : 22;\
          }
    union { UNSG32 u32get4x4NeighborInput_In;
            struct w32get4x4NeighborInput_In;
          };
    ///////////////////////////////////////////////////////////
    } SIE_get4x4NeighborInput;

    typedef union  T32get4x4NeighborInput_In
          { UNSG32 u32;
            struct w32get4x4NeighborInput_In;
                 } T32get4x4NeighborInput_In;
    ///////////////////////////////////////////////////////////

    typedef union  Tget4x4NeighborInput_In
          { UNSG32 u32[1];
            struct {
            struct w32get4x4NeighborInput_In;
                   };
                 } Tget4x4NeighborInput_In;

    ///////////////////////////////////////////////////////////
     SIGN32 get4x4NeighborInput_drvrd(SIE_get4x4NeighborInput *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 get4x4NeighborInput_drvwr(SIE_get4x4NeighborInput *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void get4x4NeighborInput_reset(SIE_get4x4NeighborInput *p);
     SIGN32 get4x4NeighborInput_cmp  (SIE_get4x4NeighborInput *p, SIE_get4x4NeighborInput *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define get4x4NeighborInput_check(p,pie,pfx,hLOG) get4x4NeighborInput_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define get4x4NeighborInput_print(p,    pfx,hLOG) get4x4NeighborInput_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: get4x4NeighborInput
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE catBLK2blkId            biu              (4,4)
///     ###
///     * Input / output bit field definition for CatBLK2blkIdTbl
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 In                   (P)
///               %unsigned 4  BLK                       
///                                    ###
///                                    * input block index from NLoc.BLK; legal range = 0~15
///                                    ###
///               %unsigned 4  category                  
///                                    ###
///                                    * input category from NLoc.category; Legal range = 0~8
///                                    ###
///                                    : max                       0x8
///                                                 ###
///                                                 * maximum value of category
///                                                 ###
///               %%        24         # Stuffing bits...
///     @ 0x00004 Out                  (P)
///               %unsigned 6  blkId                     
///                                    ###
///                                    * legal range = 0~37
///                                    ###
///               %%        26         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      14b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_catBLK2blkId
#define h_catBLK2blkId (){}

    #define     RA_catBLK2blkId_In                             0x0000

    #define     BA_catBLK2blkId_In_BLK                         0x0000
    #define     B16catBLK2blkId_In_BLK                         0x0000
    #define   LSb32catBLK2blkId_In_BLK                            0
    #define   LSb16catBLK2blkId_In_BLK                            0
    #define       bcatBLK2blkId_In_BLK                         4
    #define   MSK32catBLK2blkId_In_BLK                            0x0000000F

    #define     BA_catBLK2blkId_In_category                    0x0000
    #define     B16catBLK2blkId_In_category                    0x0000
    #define   LSb32catBLK2blkId_In_category                       4
    #define   LSb16catBLK2blkId_In_category                       4
    #define       bcatBLK2blkId_In_category                    4
    #define   MSK32catBLK2blkId_In_category                       0x000000F0
    #define        catBLK2blkId_In_category_max                             0x8
    ///////////////////////////////////////////////////////////
    #define     RA_catBLK2blkId_Out                            0x0004

    #define     BA_catBLK2blkId_Out_blkId                      0x0004
    #define     B16catBLK2blkId_Out_blkId                      0x0004
    #define   LSb32catBLK2blkId_Out_blkId                         0
    #define   LSb16catBLK2blkId_Out_blkId                         0
    #define       bcatBLK2blkId_Out_blkId                      6
    #define   MSK32catBLK2blkId_Out_blkId                         0x0000003F
    ///////////////////////////////////////////////////////////

    typedef struct SIE_catBLK2blkId {
    ///////////////////////////////////////////////////////////
    #define   GET32catBLK2blkId_In_BLK(r32)                    _BFGET_(r32, 3, 0)
    #define   SET32catBLK2blkId_In_BLK(r32,v)                  _BFSET_(r32, 3, 0,v)
    #define   GET16catBLK2blkId_In_BLK(r16)                    _BFGET_(r16, 3, 0)
    #define   SET16catBLK2blkId_In_BLK(r16,v)                  _BFSET_(r16, 3, 0,v)

    #define   GET32catBLK2blkId_In_category(r32)               _BFGET_(r32, 7, 4)
    #define   SET32catBLK2blkId_In_category(r32,v)             _BFSET_(r32, 7, 4,v)
    #define   GET16catBLK2blkId_In_category(r16)               _BFGET_(r16, 7, 4)
    #define   SET16catBLK2blkId_In_category(r16,v)             _BFSET_(r16, 7, 4,v)

    #define     w32catBLK2blkId_In                             {\
            UNSG32 uIn_BLK                                     :  4;\
            UNSG32 uIn_category                                :  4;\
            UNSG32 RSVDx0_b8                                   : 24;\
          }
    union { UNSG32 u32catBLK2blkId_In;
            struct w32catBLK2blkId_In;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32catBLK2blkId_Out_blkId(r32)                 _BFGET_(r32, 5, 0)
    #define   SET32catBLK2blkId_Out_blkId(r32,v)               _BFSET_(r32, 5, 0,v)
    #define   GET16catBLK2blkId_Out_blkId(r16)                 _BFGET_(r16, 5, 0)
    #define   SET16catBLK2blkId_Out_blkId(r16,v)               _BFSET_(r16, 5, 0,v)

    #define     w32catBLK2blkId_Out                            {\
            UNSG32 uOut_blkId                                  :  6;\
            UNSG32 RSVDx4_b6                                   : 26;\
          }
    union { UNSG32 u32catBLK2blkId_Out;
            struct w32catBLK2blkId_Out;
          };
    ///////////////////////////////////////////////////////////
    } SIE_catBLK2blkId;

    typedef union  T32catBLK2blkId_In
          { UNSG32 u32;
            struct w32catBLK2blkId_In;
                 } T32catBLK2blkId_In;
    typedef union  T32catBLK2blkId_Out
          { UNSG32 u32;
            struct w32catBLK2blkId_Out;
                 } T32catBLK2blkId_Out;
    ///////////////////////////////////////////////////////////

    typedef union  TcatBLK2blkId_In
          { UNSG32 u32[1];
            struct {
            struct w32catBLK2blkId_In;
                   };
                 } TcatBLK2blkId_In;
    typedef union  TcatBLK2blkId_Out
          { UNSG32 u32[1];
            struct {
            struct w32catBLK2blkId_Out;
                   };
                 } TcatBLK2blkId_Out;

    ///////////////////////////////////////////////////////////
     SIGN32 catBLK2blkId_drvrd(SIE_catBLK2blkId *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 catBLK2blkId_drvwr(SIE_catBLK2blkId *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void catBLK2blkId_reset(SIE_catBLK2blkId *p);
     SIGN32 catBLK2blkId_cmp  (SIE_catBLK2blkId *p, SIE_catBLK2blkId *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define catBLK2blkId_check(p,pie,pfx,hLOG) catBLK2blkId_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define catBLK2blkId_print(p,    pfx,hLOG) catBLK2blkId_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: catBLK2blkId
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CtxAddr                 biu              (4,4)
///     ###
///     * Input / output bit field definitions for NonMbaff context address lookups
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 X_In                 (P)
///               %unsigned 6  blkId                     
///                                    ###
///                                    * block ID from catBLK2blkId.blkId; legal range = 0~37
///                                    ###
///                                    : max                      0x25
///                                                 ###
///                                                 * maximum legal value of blkId
///                                                 ###
///               %%        26         # Stuffing bits...
///     @ 0x00004 X_Out                (P)
///               %unsigned 3  dltBank                   0x5
///                                    ###
///                                    * context address for current block
///                                    ###
///               %%        29         # Stuffing bits...
///     @ 0x00008 A_In                 (P)
///               %unsigned 6  blkId                     
///                                    ###
///                                    * legal range = 0~37
///                                    ###
///                                    : max                      0x25
///                                                 ###
///                                                 * maximum legal value of blkId
///                                                 ###
///               %%        26         # Stuffing bits...
///     @ 0x0000C A_Out                (P)
///               %unsigned 3  dltBank                   
///               %unsigned 5  subAddr                   
///                                    ###
///                                    * context address for neighbor A
///                                    ###
///               %%        24         # Stuffing bits...
///     @ 0x00010 B_In                 (P)
///               %unsigned 6  blkId                     
///                                    ###
///                                    * legal range = 0~37
///                                    ###
///                                    : max                      0x25
///                                                 ###
///                                                 * maximum legal value of blkId
///                                                 ###
///               %%        26         # Stuffing bits...
///     @ 0x00014 B_Out                (P)
///               %unsigned 3  dltBank                   
///               %unsigned 5  subAddr                   
///                                    ###
///                                    * context address for neighbor B
///                                    ###
///               %%        24         # Stuffing bits...
///     @ 0x00018 C_In                 (P)
///               %unsigned 6  blkId                     
///                                    ###
///                                    * legal range = 0~37
///                                    ###
///                                    : max                      0x25
///                                                 ###
///                                                 * maximum legal value of blkId
///                                                 ###
///               %%        26         # Stuffing bits...
///     @ 0x0001C C_Out                (P)
///               %unsigned 3  dltBank                   
///               %unsigned 5  subAddr                   
///                                    ###
///                                    * context address for neighbor C
///                                    ###
///               %%        24         # Stuffing bits...
///     @ 0x00020 D_In                 (P)
///               %unsigned 6  blkId                     
///                                    ###
///                                    * legal range = 0~37
///                                    ###
///                                    : max                      0x25
///                                                 ###
///                                                 * maximum legal value of blkId
///                                                 ###
///               %%        26         # Stuffing bits...
///     @ 0x00024 D_Out                (P)
///               %unsigned 3  dltBank                   
///               %unsigned 5  subAddr                   
///                                    ###
///                                    * context address for neighbor D
///                                    ###
///               %%        24         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      40B, bits:      65b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CtxAddr
#define h_CtxAddr (){}

    #define     RA_CtxAddr_X_In                                0x0000

    #define     BA_CtxAddr_X_In_blkId                          0x0000
    #define     B16CtxAddr_X_In_blkId                          0x0000
    #define   LSb32CtxAddr_X_In_blkId                             0
    #define   LSb16CtxAddr_X_In_blkId                             0
    #define       bCtxAddr_X_In_blkId                          6
    #define   MSK32CtxAddr_X_In_blkId                             0x0000003F
    #define        CtxAddr_X_In_blkId_max                                   0x25
    ///////////////////////////////////////////////////////////
    #define     RA_CtxAddr_X_Out                               0x0004

    #define     BA_CtxAddr_X_Out_dltBank                       0x0004
    #define     B16CtxAddr_X_Out_dltBank                       0x0004
    #define   LSb32CtxAddr_X_Out_dltBank                          0
    #define   LSb16CtxAddr_X_Out_dltBank                          0
    #define       bCtxAddr_X_Out_dltBank                       3
    #define   MSK32CtxAddr_X_Out_dltBank                          0x00000007
    ///////////////////////////////////////////////////////////
    #define     RA_CtxAddr_A_In                                0x0008

    #define     BA_CtxAddr_A_In_blkId                          0x0008
    #define     B16CtxAddr_A_In_blkId                          0x0008
    #define   LSb32CtxAddr_A_In_blkId                             0
    #define   LSb16CtxAddr_A_In_blkId                             0
    #define       bCtxAddr_A_In_blkId                          6
    #define   MSK32CtxAddr_A_In_blkId                             0x0000003F
    #define        CtxAddr_A_In_blkId_max                                   0x25
    ///////////////////////////////////////////////////////////
    #define     RA_CtxAddr_A_Out                               0x000C

    #define     BA_CtxAddr_A_Out_dltBank                       0x000C
    #define     B16CtxAddr_A_Out_dltBank                       0x000C
    #define   LSb32CtxAddr_A_Out_dltBank                          0
    #define   LSb16CtxAddr_A_Out_dltBank                          0
    #define       bCtxAddr_A_Out_dltBank                       3
    #define   MSK32CtxAddr_A_Out_dltBank                          0x00000007

    #define     BA_CtxAddr_A_Out_subAddr                       0x000C
    #define     B16CtxAddr_A_Out_subAddr                       0x000C
    #define   LSb32CtxAddr_A_Out_subAddr                          3
    #define   LSb16CtxAddr_A_Out_subAddr                          3
    #define       bCtxAddr_A_Out_subAddr                       5
    #define   MSK32CtxAddr_A_Out_subAddr                          0x000000F8
    ///////////////////////////////////////////////////////////
    #define     RA_CtxAddr_B_In                                0x0010

    #define     BA_CtxAddr_B_In_blkId                          0x0010
    #define     B16CtxAddr_B_In_blkId                          0x0010
    #define   LSb32CtxAddr_B_In_blkId                             0
    #define   LSb16CtxAddr_B_In_blkId                             0
    #define       bCtxAddr_B_In_blkId                          6
    #define   MSK32CtxAddr_B_In_blkId                             0x0000003F
    #define        CtxAddr_B_In_blkId_max                                   0x25
    ///////////////////////////////////////////////////////////
    #define     RA_CtxAddr_B_Out                               0x0014

    #define     BA_CtxAddr_B_Out_dltBank                       0x0014
    #define     B16CtxAddr_B_Out_dltBank                       0x0014
    #define   LSb32CtxAddr_B_Out_dltBank                          0
    #define   LSb16CtxAddr_B_Out_dltBank                          0
    #define       bCtxAddr_B_Out_dltBank                       3
    #define   MSK32CtxAddr_B_Out_dltBank                          0x00000007

    #define     BA_CtxAddr_B_Out_subAddr                       0x0014
    #define     B16CtxAddr_B_Out_subAddr                       0x0014
    #define   LSb32CtxAddr_B_Out_subAddr                          3
    #define   LSb16CtxAddr_B_Out_subAddr                          3
    #define       bCtxAddr_B_Out_subAddr                       5
    #define   MSK32CtxAddr_B_Out_subAddr                          0x000000F8
    ///////////////////////////////////////////////////////////
    #define     RA_CtxAddr_C_In                                0x0018

    #define     BA_CtxAddr_C_In_blkId                          0x0018
    #define     B16CtxAddr_C_In_blkId                          0x0018
    #define   LSb32CtxAddr_C_In_blkId                             0
    #define   LSb16CtxAddr_C_In_blkId                             0
    #define       bCtxAddr_C_In_blkId                          6
    #define   MSK32CtxAddr_C_In_blkId                             0x0000003F
    #define        CtxAddr_C_In_blkId_max                                   0x25
    ///////////////////////////////////////////////////////////
    #define     RA_CtxAddr_C_Out                               0x001C

    #define     BA_CtxAddr_C_Out_dltBank                       0x001C
    #define     B16CtxAddr_C_Out_dltBank                       0x001C
    #define   LSb32CtxAddr_C_Out_dltBank                          0
    #define   LSb16CtxAddr_C_Out_dltBank                          0
    #define       bCtxAddr_C_Out_dltBank                       3
    #define   MSK32CtxAddr_C_Out_dltBank                          0x00000007

    #define     BA_CtxAddr_C_Out_subAddr                       0x001C
    #define     B16CtxAddr_C_Out_subAddr                       0x001C
    #define   LSb32CtxAddr_C_Out_subAddr                          3
    #define   LSb16CtxAddr_C_Out_subAddr                          3
    #define       bCtxAddr_C_Out_subAddr                       5
    #define   MSK32CtxAddr_C_Out_subAddr                          0x000000F8
    ///////////////////////////////////////////////////////////
    #define     RA_CtxAddr_D_In                                0x0020

    #define     BA_CtxAddr_D_In_blkId                          0x0020
    #define     B16CtxAddr_D_In_blkId                          0x0020
    #define   LSb32CtxAddr_D_In_blkId                             0
    #define   LSb16CtxAddr_D_In_blkId                             0
    #define       bCtxAddr_D_In_blkId                          6
    #define   MSK32CtxAddr_D_In_blkId                             0x0000003F
    #define        CtxAddr_D_In_blkId_max                                   0x25
    ///////////////////////////////////////////////////////////
    #define     RA_CtxAddr_D_Out                               0x0024

    #define     BA_CtxAddr_D_Out_dltBank                       0x0024
    #define     B16CtxAddr_D_Out_dltBank                       0x0024
    #define   LSb32CtxAddr_D_Out_dltBank                          0
    #define   LSb16CtxAddr_D_Out_dltBank                          0
    #define       bCtxAddr_D_Out_dltBank                       3
    #define   MSK32CtxAddr_D_Out_dltBank                          0x00000007

    #define     BA_CtxAddr_D_Out_subAddr                       0x0024
    #define     B16CtxAddr_D_Out_subAddr                       0x0024
    #define   LSb32CtxAddr_D_Out_subAddr                          3
    #define   LSb16CtxAddr_D_Out_subAddr                          3
    #define       bCtxAddr_D_Out_subAddr                       5
    #define   MSK32CtxAddr_D_Out_subAddr                          0x000000F8
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CtxAddr {
    ///////////////////////////////////////////////////////////
    #define   GET32CtxAddr_X_In_blkId(r32)                     _BFGET_(r32, 5, 0)
    #define   SET32CtxAddr_X_In_blkId(r32,v)                   _BFSET_(r32, 5, 0,v)
    #define   GET16CtxAddr_X_In_blkId(r16)                     _BFGET_(r16, 5, 0)
    #define   SET16CtxAddr_X_In_blkId(r16,v)                   _BFSET_(r16, 5, 0,v)

    #define     w32CtxAddr_X_In                                {\
            UNSG32 uX_In_blkId                                 :  6;\
            UNSG32 RSVDx0_b6                                   : 26;\
          }
    union { UNSG32 u32CtxAddr_X_In;
            struct w32CtxAddr_X_In;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxAddr_X_Out_dltBank(r32)                  _BFGET_(r32, 2, 0)
    #define   SET32CtxAddr_X_Out_dltBank(r32,v)                _BFSET_(r32, 2, 0,v)
    #define   GET16CtxAddr_X_Out_dltBank(r16)                  _BFGET_(r16, 2, 0)
    #define   SET16CtxAddr_X_Out_dltBank(r16,v)                _BFSET_(r16, 2, 0,v)

    #define     w32CtxAddr_X_Out                               {\
            UNSG32 uX_Out_dltBank                              :  3;\
            UNSG32 RSVDx4_b3                                   : 29;\
          }
    union { UNSG32 u32CtxAddr_X_Out;
            struct w32CtxAddr_X_Out;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxAddr_A_In_blkId(r32)                     _BFGET_(r32, 5, 0)
    #define   SET32CtxAddr_A_In_blkId(r32,v)                   _BFSET_(r32, 5, 0,v)
    #define   GET16CtxAddr_A_In_blkId(r16)                     _BFGET_(r16, 5, 0)
    #define   SET16CtxAddr_A_In_blkId(r16,v)                   _BFSET_(r16, 5, 0,v)

    #define     w32CtxAddr_A_In                                {\
            UNSG32 uA_In_blkId                                 :  6;\
            UNSG32 RSVDx8_b6                                   : 26;\
          }
    union { UNSG32 u32CtxAddr_A_In;
            struct w32CtxAddr_A_In;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxAddr_A_Out_dltBank(r32)                  _BFGET_(r32, 2, 0)
    #define   SET32CtxAddr_A_Out_dltBank(r32,v)                _BFSET_(r32, 2, 0,v)
    #define   GET16CtxAddr_A_Out_dltBank(r16)                  _BFGET_(r16, 2, 0)
    #define   SET16CtxAddr_A_Out_dltBank(r16,v)                _BFSET_(r16, 2, 0,v)

    #define   GET32CtxAddr_A_Out_subAddr(r32)                  _BFGET_(r32, 7, 3)
    #define   SET32CtxAddr_A_Out_subAddr(r32,v)                _BFSET_(r32, 7, 3,v)
    #define   GET16CtxAddr_A_Out_subAddr(r16)                  _BFGET_(r16, 7, 3)
    #define   SET16CtxAddr_A_Out_subAddr(r16,v)                _BFSET_(r16, 7, 3,v)

    #define     w32CtxAddr_A_Out                               {\
            UNSG32 uA_Out_dltBank                              :  3;\
            UNSG32 uA_Out_subAddr                              :  5;\
            UNSG32 RSVDxC_b8                                   : 24;\
          }
    union { UNSG32 u32CtxAddr_A_Out;
            struct w32CtxAddr_A_Out;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxAddr_B_In_blkId(r32)                     _BFGET_(r32, 5, 0)
    #define   SET32CtxAddr_B_In_blkId(r32,v)                   _BFSET_(r32, 5, 0,v)
    #define   GET16CtxAddr_B_In_blkId(r16)                     _BFGET_(r16, 5, 0)
    #define   SET16CtxAddr_B_In_blkId(r16,v)                   _BFSET_(r16, 5, 0,v)

    #define     w32CtxAddr_B_In                                {\
            UNSG32 uB_In_blkId                                 :  6;\
            UNSG32 RSVDx10_b6                                  : 26;\
          }
    union { UNSG32 u32CtxAddr_B_In;
            struct w32CtxAddr_B_In;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxAddr_B_Out_dltBank(r32)                  _BFGET_(r32, 2, 0)
    #define   SET32CtxAddr_B_Out_dltBank(r32,v)                _BFSET_(r32, 2, 0,v)
    #define   GET16CtxAddr_B_Out_dltBank(r16)                  _BFGET_(r16, 2, 0)
    #define   SET16CtxAddr_B_Out_dltBank(r16,v)                _BFSET_(r16, 2, 0,v)

    #define   GET32CtxAddr_B_Out_subAddr(r32)                  _BFGET_(r32, 7, 3)
    #define   SET32CtxAddr_B_Out_subAddr(r32,v)                _BFSET_(r32, 7, 3,v)
    #define   GET16CtxAddr_B_Out_subAddr(r16)                  _BFGET_(r16, 7, 3)
    #define   SET16CtxAddr_B_Out_subAddr(r16,v)                _BFSET_(r16, 7, 3,v)

    #define     w32CtxAddr_B_Out                               {\
            UNSG32 uB_Out_dltBank                              :  3;\
            UNSG32 uB_Out_subAddr                              :  5;\
            UNSG32 RSVDx14_b8                                  : 24;\
          }
    union { UNSG32 u32CtxAddr_B_Out;
            struct w32CtxAddr_B_Out;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxAddr_C_In_blkId(r32)                     _BFGET_(r32, 5, 0)
    #define   SET32CtxAddr_C_In_blkId(r32,v)                   _BFSET_(r32, 5, 0,v)
    #define   GET16CtxAddr_C_In_blkId(r16)                     _BFGET_(r16, 5, 0)
    #define   SET16CtxAddr_C_In_blkId(r16,v)                   _BFSET_(r16, 5, 0,v)

    #define     w32CtxAddr_C_In                                {\
            UNSG32 uC_In_blkId                                 :  6;\
            UNSG32 RSVDx18_b6                                  : 26;\
          }
    union { UNSG32 u32CtxAddr_C_In;
            struct w32CtxAddr_C_In;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxAddr_C_Out_dltBank(r32)                  _BFGET_(r32, 2, 0)
    #define   SET32CtxAddr_C_Out_dltBank(r32,v)                _BFSET_(r32, 2, 0,v)
    #define   GET16CtxAddr_C_Out_dltBank(r16)                  _BFGET_(r16, 2, 0)
    #define   SET16CtxAddr_C_Out_dltBank(r16,v)                _BFSET_(r16, 2, 0,v)

    #define   GET32CtxAddr_C_Out_subAddr(r32)                  _BFGET_(r32, 7, 3)
    #define   SET32CtxAddr_C_Out_subAddr(r32,v)                _BFSET_(r32, 7, 3,v)
    #define   GET16CtxAddr_C_Out_subAddr(r16)                  _BFGET_(r16, 7, 3)
    #define   SET16CtxAddr_C_Out_subAddr(r16,v)                _BFSET_(r16, 7, 3,v)

    #define     w32CtxAddr_C_Out                               {\
            UNSG32 uC_Out_dltBank                              :  3;\
            UNSG32 uC_Out_subAddr                              :  5;\
            UNSG32 RSVDx1C_b8                                  : 24;\
          }
    union { UNSG32 u32CtxAddr_C_Out;
            struct w32CtxAddr_C_Out;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxAddr_D_In_blkId(r32)                     _BFGET_(r32, 5, 0)
    #define   SET32CtxAddr_D_In_blkId(r32,v)                   _BFSET_(r32, 5, 0,v)
    #define   GET16CtxAddr_D_In_blkId(r16)                     _BFGET_(r16, 5, 0)
    #define   SET16CtxAddr_D_In_blkId(r16,v)                   _BFSET_(r16, 5, 0,v)

    #define     w32CtxAddr_D_In                                {\
            UNSG32 uD_In_blkId                                 :  6;\
            UNSG32 RSVDx20_b6                                  : 26;\
          }
    union { UNSG32 u32CtxAddr_D_In;
            struct w32CtxAddr_D_In;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxAddr_D_Out_dltBank(r32)                  _BFGET_(r32, 2, 0)
    #define   SET32CtxAddr_D_Out_dltBank(r32,v)                _BFSET_(r32, 2, 0,v)
    #define   GET16CtxAddr_D_Out_dltBank(r16)                  _BFGET_(r16, 2, 0)
    #define   SET16CtxAddr_D_Out_dltBank(r16,v)                _BFSET_(r16, 2, 0,v)

    #define   GET32CtxAddr_D_Out_subAddr(r32)                  _BFGET_(r32, 7, 3)
    #define   SET32CtxAddr_D_Out_subAddr(r32,v)                _BFSET_(r32, 7, 3,v)
    #define   GET16CtxAddr_D_Out_subAddr(r16)                  _BFGET_(r16, 7, 3)
    #define   SET16CtxAddr_D_Out_subAddr(r16,v)                _BFSET_(r16, 7, 3,v)

    #define     w32CtxAddr_D_Out                               {\
            UNSG32 uD_Out_dltBank                              :  3;\
            UNSG32 uD_Out_subAddr                              :  5;\
            UNSG32 RSVDx24_b8                                  : 24;\
          }
    union { UNSG32 u32CtxAddr_D_Out;
            struct w32CtxAddr_D_Out;
          };
    ///////////////////////////////////////////////////////////
    } SIE_CtxAddr;

    typedef union  T32CtxAddr_X_In
          { UNSG32 u32;
            struct w32CtxAddr_X_In;
                 } T32CtxAddr_X_In;
    typedef union  T32CtxAddr_X_Out
          { UNSG32 u32;
            struct w32CtxAddr_X_Out;
                 } T32CtxAddr_X_Out;
    typedef union  T32CtxAddr_A_In
          { UNSG32 u32;
            struct w32CtxAddr_A_In;
                 } T32CtxAddr_A_In;
    typedef union  T32CtxAddr_A_Out
          { UNSG32 u32;
            struct w32CtxAddr_A_Out;
                 } T32CtxAddr_A_Out;
    typedef union  T32CtxAddr_B_In
          { UNSG32 u32;
            struct w32CtxAddr_B_In;
                 } T32CtxAddr_B_In;
    typedef union  T32CtxAddr_B_Out
          { UNSG32 u32;
            struct w32CtxAddr_B_Out;
                 } T32CtxAddr_B_Out;
    typedef union  T32CtxAddr_C_In
          { UNSG32 u32;
            struct w32CtxAddr_C_In;
                 } T32CtxAddr_C_In;
    typedef union  T32CtxAddr_C_Out
          { UNSG32 u32;
            struct w32CtxAddr_C_Out;
                 } T32CtxAddr_C_Out;
    typedef union  T32CtxAddr_D_In
          { UNSG32 u32;
            struct w32CtxAddr_D_In;
                 } T32CtxAddr_D_In;
    typedef union  T32CtxAddr_D_Out
          { UNSG32 u32;
            struct w32CtxAddr_D_Out;
                 } T32CtxAddr_D_Out;
    ///////////////////////////////////////////////////////////

    typedef union  TCtxAddr_X_In
          { UNSG32 u32[1];
            struct {
            struct w32CtxAddr_X_In;
                   };
                 } TCtxAddr_X_In;
    typedef union  TCtxAddr_X_Out
          { UNSG32 u32[1];
            struct {
            struct w32CtxAddr_X_Out;
                   };
                 } TCtxAddr_X_Out;
    typedef union  TCtxAddr_A_In
          { UNSG32 u32[1];
            struct {
            struct w32CtxAddr_A_In;
                   };
                 } TCtxAddr_A_In;
    typedef union  TCtxAddr_A_Out
          { UNSG32 u32[1];
            struct {
            struct w32CtxAddr_A_Out;
                   };
                 } TCtxAddr_A_Out;
    typedef union  TCtxAddr_B_In
          { UNSG32 u32[1];
            struct {
            struct w32CtxAddr_B_In;
                   };
                 } TCtxAddr_B_In;
    typedef union  TCtxAddr_B_Out
          { UNSG32 u32[1];
            struct {
            struct w32CtxAddr_B_Out;
                   };
                 } TCtxAddr_B_Out;
    typedef union  TCtxAddr_C_In
          { UNSG32 u32[1];
            struct {
            struct w32CtxAddr_C_In;
                   };
                 } TCtxAddr_C_In;
    typedef union  TCtxAddr_C_Out
          { UNSG32 u32[1];
            struct {
            struct w32CtxAddr_C_Out;
                   };
                 } TCtxAddr_C_Out;
    typedef union  TCtxAddr_D_In
          { UNSG32 u32[1];
            struct {
            struct w32CtxAddr_D_In;
                   };
                 } TCtxAddr_D_In;
    typedef union  TCtxAddr_D_Out
          { UNSG32 u32[1];
            struct {
            struct w32CtxAddr_D_Out;
                   };
                 } TCtxAddr_D_Out;

    ///////////////////////////////////////////////////////////
     SIGN32 CtxAddr_drvrd(SIE_CtxAddr *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CtxAddr_drvwr(SIE_CtxAddr *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CtxAddr_reset(SIE_CtxAddr *p);
     SIGN32 CtxAddr_cmp  (SIE_CtxAddr *p, SIE_CtxAddr *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CtxAddr_check(p,pie,pfx,hLOG) CtxAddr_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CtxAddr_print(p,    pfx,hLOG) CtxAddr_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CtxAddr
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CtxAddr_Mbaff           biu              (4,4)
///     ###
///     * Input / output bit field definitions for Mbaff context address lookups
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 A_In                 (P)
///               %unsigned 1  mbFieldA                  
///                                    ###
///                                    * neighbor MB A is field coded or not
///                                    ###
///               %unsigned 1  mbFieldX                  
///                                    ###
///                                    * current MB is field coded or not
///                                    ###
///               %unsigned 1  isBotMb                   
///                                    ###
///                                    * current MB is bottom in the MB pair or not
///                                    ###
///               %unsigned 6  blkId                     
///                                    ###
///                                    * block ID from catBLK2blkId.blkId; legal range = 0~37
///                                    ###
///                                    : max                      0x25
///                                                 ###
///                                                 * maximum value of blkId
///                                                 ###
///               %%        23         # Stuffing bits...
///     @ 0x00004 A_Out                (P)
///               %unsigned 3  dltBank                   
///               %unsigned 5  subAddr                   
///                                    ###
///                                    * context address for neighbor A
///                                    ###
///               %%        24         # Stuffing bits...
///     @ 0x00008 B_In                 (P)
///               %unsigned 1  mbFieldB                  
///                                    ###
///                                    * Neighbor MB B is field coded or not
///                                    ###
///               %unsigned 1  mbFieldX                  
///                                    ###
///                                    * current MB is field coded or not
///                                    ###
///               %unsigned 1  isBotMb                   
///                                    ###
///                                    * current MB is bottom in the MB pair or not
///                                    ###
///               %unsigned 6  blkId                     
///                                    ###
///                                    * legal range = 0~37
///                                    ###
///                                    : max                      0x25
///                                                 ###
///                                                 * maximum value of blkId
///                                                 ###
///               %%        23         # Stuffing bits...
///     @ 0x0000C B_Out                (P)
///               %unsigned 3  dltBank                   
///               %unsigned 5  subAddr                   
///                                    ###
///                                    * context address for neighbor B
///                                    ###
///               %%        24         # Stuffing bits...
///     @ 0x00010 C_In                 (P)
///               %unsigned 1  mbFieldB                  
///                                    ###
///                                    * neighbor MB B is field coded or not
///                                    ###
///               %unsigned 1  mbFieldC                  
///                                    ###
///                                    * neighbor MB C is field coded or not
///                                    ###
///               %unsigned 1  mbFieldX                  
///                                    ###
///                                    * current MB is field coded or not
///                                    ###
///               %unsigned 1  isBotMb                   
///                                    ###
///                                    * current MB is bottom in the MB pair or not
///                                    ###
///               %unsigned 6  blkId                     
///                                    ###
///                                    * legal range = 0~37
///                                    ###
///                                    : max                      0x25
///                                                 ###
///                                                 * maximum value of blkId
///                                                 ###
///               %%        22         # Stuffing bits...
///     @ 0x00014 C_Out                (P)
///               %unsigned 3  dltBank                   
///               %unsigned 5  subAddr                   
///                                    ###
///                                    * context address for neighbor C
///                                    ###
///               %%        24         # Stuffing bits...
///     @ 0x00018 D_In                 (P)
///               %unsigned 1  mbFieldA                  
///                                    ###
///                                    * neighbor MB A is field coded or not
///                                    ###
///               %unsigned 1  mbFieldB                  
///                                    ###
///                                    * neighbor MB B is field coded or not
///                                    ###
///               %unsigned 1  mbFieldD                  
///                                    ###
///                                    * neighbor D is field coded or not
///                                    ###
///               %unsigned 1  mbFieldX                  
///                                    ###
///                                    * current MB is field coded or not
///                                    ###
///               %unsigned 1  isBotMb                   
///                                    ###
///                                    * currenet MB is bottom in the MB pair or not
///                                    ###
///               %unsigned 6  blkId                     
///                                    ###
///                                    * legal range = 0~37
///                                    ###
///                                    : max                      0x25
///                                                 ###
///                                                 * maximum value of blkId
///                                                 ###
///               %%        21         # Stuffing bits...
///     @ 0x0001C D_Out                (P)
///               %unsigned 3  dltBank                   
///               %unsigned 5  subAddr                   
///                                    ###
///                                    * context address for neighbor D
///                                    ###
///               %%        24         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      32B, bits:      71b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CtxAddr_Mbaff
#define h_CtxAddr_Mbaff (){}

    #define     RA_CtxAddr_Mbaff_A_In                          0x0000

    #define     BA_CtxAddr_Mbaff_A_In_mbFieldA                 0x0000
    #define     B16CtxAddr_Mbaff_A_In_mbFieldA                 0x0000
    #define   LSb32CtxAddr_Mbaff_A_In_mbFieldA                    0
    #define   LSb16CtxAddr_Mbaff_A_In_mbFieldA                    0
    #define       bCtxAddr_Mbaff_A_In_mbFieldA                 1
    #define   MSK32CtxAddr_Mbaff_A_In_mbFieldA                    0x00000001

    #define     BA_CtxAddr_Mbaff_A_In_mbFieldX                 0x0000
    #define     B16CtxAddr_Mbaff_A_In_mbFieldX                 0x0000
    #define   LSb32CtxAddr_Mbaff_A_In_mbFieldX                    1
    #define   LSb16CtxAddr_Mbaff_A_In_mbFieldX                    1
    #define       bCtxAddr_Mbaff_A_In_mbFieldX                 1
    #define   MSK32CtxAddr_Mbaff_A_In_mbFieldX                    0x00000002

    #define     BA_CtxAddr_Mbaff_A_In_isBotMb                  0x0000
    #define     B16CtxAddr_Mbaff_A_In_isBotMb                  0x0000
    #define   LSb32CtxAddr_Mbaff_A_In_isBotMb                     2
    #define   LSb16CtxAddr_Mbaff_A_In_isBotMb                     2
    #define       bCtxAddr_Mbaff_A_In_isBotMb                  1
    #define   MSK32CtxAddr_Mbaff_A_In_isBotMb                     0x00000004

    #define     BA_CtxAddr_Mbaff_A_In_blkId                    0x0000
    #define     B16CtxAddr_Mbaff_A_In_blkId                    0x0000
    #define   LSb32CtxAddr_Mbaff_A_In_blkId                       3
    #define   LSb16CtxAddr_Mbaff_A_In_blkId                       3
    #define       bCtxAddr_Mbaff_A_In_blkId                    6
    #define   MSK32CtxAddr_Mbaff_A_In_blkId                       0x000001F8
    #define        CtxAddr_Mbaff_A_In_blkId_max                             0x25
    ///////////////////////////////////////////////////////////
    #define     RA_CtxAddr_Mbaff_A_Out                         0x0004

    #define     BA_CtxAddr_Mbaff_A_Out_dltBank                 0x0004
    #define     B16CtxAddr_Mbaff_A_Out_dltBank                 0x0004
    #define   LSb32CtxAddr_Mbaff_A_Out_dltBank                    0
    #define   LSb16CtxAddr_Mbaff_A_Out_dltBank                    0
    #define       bCtxAddr_Mbaff_A_Out_dltBank                 3
    #define   MSK32CtxAddr_Mbaff_A_Out_dltBank                    0x00000007

    #define     BA_CtxAddr_Mbaff_A_Out_subAddr                 0x0004
    #define     B16CtxAddr_Mbaff_A_Out_subAddr                 0x0004
    #define   LSb32CtxAddr_Mbaff_A_Out_subAddr                    3
    #define   LSb16CtxAddr_Mbaff_A_Out_subAddr                    3
    #define       bCtxAddr_Mbaff_A_Out_subAddr                 5
    #define   MSK32CtxAddr_Mbaff_A_Out_subAddr                    0x000000F8
    ///////////////////////////////////////////////////////////
    #define     RA_CtxAddr_Mbaff_B_In                          0x0008

    #define     BA_CtxAddr_Mbaff_B_In_mbFieldB                 0x0008
    #define     B16CtxAddr_Mbaff_B_In_mbFieldB                 0x0008
    #define   LSb32CtxAddr_Mbaff_B_In_mbFieldB                    0
    #define   LSb16CtxAddr_Mbaff_B_In_mbFieldB                    0
    #define       bCtxAddr_Mbaff_B_In_mbFieldB                 1
    #define   MSK32CtxAddr_Mbaff_B_In_mbFieldB                    0x00000001

    #define     BA_CtxAddr_Mbaff_B_In_mbFieldX                 0x0008
    #define     B16CtxAddr_Mbaff_B_In_mbFieldX                 0x0008
    #define   LSb32CtxAddr_Mbaff_B_In_mbFieldX                    1
    #define   LSb16CtxAddr_Mbaff_B_In_mbFieldX                    1
    #define       bCtxAddr_Mbaff_B_In_mbFieldX                 1
    #define   MSK32CtxAddr_Mbaff_B_In_mbFieldX                    0x00000002

    #define     BA_CtxAddr_Mbaff_B_In_isBotMb                  0x0008
    #define     B16CtxAddr_Mbaff_B_In_isBotMb                  0x0008
    #define   LSb32CtxAddr_Mbaff_B_In_isBotMb                     2
    #define   LSb16CtxAddr_Mbaff_B_In_isBotMb                     2
    #define       bCtxAddr_Mbaff_B_In_isBotMb                  1
    #define   MSK32CtxAddr_Mbaff_B_In_isBotMb                     0x00000004

    #define     BA_CtxAddr_Mbaff_B_In_blkId                    0x0008
    #define     B16CtxAddr_Mbaff_B_In_blkId                    0x0008
    #define   LSb32CtxAddr_Mbaff_B_In_blkId                       3
    #define   LSb16CtxAddr_Mbaff_B_In_blkId                       3
    #define       bCtxAddr_Mbaff_B_In_blkId                    6
    #define   MSK32CtxAddr_Mbaff_B_In_blkId                       0x000001F8
    #define        CtxAddr_Mbaff_B_In_blkId_max                             0x25
    ///////////////////////////////////////////////////////////
    #define     RA_CtxAddr_Mbaff_B_Out                         0x000C

    #define     BA_CtxAddr_Mbaff_B_Out_dltBank                 0x000C
    #define     B16CtxAddr_Mbaff_B_Out_dltBank                 0x000C
    #define   LSb32CtxAddr_Mbaff_B_Out_dltBank                    0
    #define   LSb16CtxAddr_Mbaff_B_Out_dltBank                    0
    #define       bCtxAddr_Mbaff_B_Out_dltBank                 3
    #define   MSK32CtxAddr_Mbaff_B_Out_dltBank                    0x00000007

    #define     BA_CtxAddr_Mbaff_B_Out_subAddr                 0x000C
    #define     B16CtxAddr_Mbaff_B_Out_subAddr                 0x000C
    #define   LSb32CtxAddr_Mbaff_B_Out_subAddr                    3
    #define   LSb16CtxAddr_Mbaff_B_Out_subAddr                    3
    #define       bCtxAddr_Mbaff_B_Out_subAddr                 5
    #define   MSK32CtxAddr_Mbaff_B_Out_subAddr                    0x000000F8
    ///////////////////////////////////////////////////////////
    #define     RA_CtxAddr_Mbaff_C_In                          0x0010

    #define     BA_CtxAddr_Mbaff_C_In_mbFieldB                 0x0010
    #define     B16CtxAddr_Mbaff_C_In_mbFieldB                 0x0010
    #define   LSb32CtxAddr_Mbaff_C_In_mbFieldB                    0
    #define   LSb16CtxAddr_Mbaff_C_In_mbFieldB                    0
    #define       bCtxAddr_Mbaff_C_In_mbFieldB                 1
    #define   MSK32CtxAddr_Mbaff_C_In_mbFieldB                    0x00000001

    #define     BA_CtxAddr_Mbaff_C_In_mbFieldC                 0x0010
    #define     B16CtxAddr_Mbaff_C_In_mbFieldC                 0x0010
    #define   LSb32CtxAddr_Mbaff_C_In_mbFieldC                    1
    #define   LSb16CtxAddr_Mbaff_C_In_mbFieldC                    1
    #define       bCtxAddr_Mbaff_C_In_mbFieldC                 1
    #define   MSK32CtxAddr_Mbaff_C_In_mbFieldC                    0x00000002

    #define     BA_CtxAddr_Mbaff_C_In_mbFieldX                 0x0010
    #define     B16CtxAddr_Mbaff_C_In_mbFieldX                 0x0010
    #define   LSb32CtxAddr_Mbaff_C_In_mbFieldX                    2
    #define   LSb16CtxAddr_Mbaff_C_In_mbFieldX                    2
    #define       bCtxAddr_Mbaff_C_In_mbFieldX                 1
    #define   MSK32CtxAddr_Mbaff_C_In_mbFieldX                    0x00000004

    #define     BA_CtxAddr_Mbaff_C_In_isBotMb                  0x0010
    #define     B16CtxAddr_Mbaff_C_In_isBotMb                  0x0010
    #define   LSb32CtxAddr_Mbaff_C_In_isBotMb                     3
    #define   LSb16CtxAddr_Mbaff_C_In_isBotMb                     3
    #define       bCtxAddr_Mbaff_C_In_isBotMb                  1
    #define   MSK32CtxAddr_Mbaff_C_In_isBotMb                     0x00000008

    #define     BA_CtxAddr_Mbaff_C_In_blkId                    0x0010
    #define     B16CtxAddr_Mbaff_C_In_blkId                    0x0010
    #define   LSb32CtxAddr_Mbaff_C_In_blkId                       4
    #define   LSb16CtxAddr_Mbaff_C_In_blkId                       4
    #define       bCtxAddr_Mbaff_C_In_blkId                    6
    #define   MSK32CtxAddr_Mbaff_C_In_blkId                       0x000003F0
    #define        CtxAddr_Mbaff_C_In_blkId_max                             0x25
    ///////////////////////////////////////////////////////////
    #define     RA_CtxAddr_Mbaff_C_Out                         0x0014

    #define     BA_CtxAddr_Mbaff_C_Out_dltBank                 0x0014
    #define     B16CtxAddr_Mbaff_C_Out_dltBank                 0x0014
    #define   LSb32CtxAddr_Mbaff_C_Out_dltBank                    0
    #define   LSb16CtxAddr_Mbaff_C_Out_dltBank                    0
    #define       bCtxAddr_Mbaff_C_Out_dltBank                 3
    #define   MSK32CtxAddr_Mbaff_C_Out_dltBank                    0x00000007

    #define     BA_CtxAddr_Mbaff_C_Out_subAddr                 0x0014
    #define     B16CtxAddr_Mbaff_C_Out_subAddr                 0x0014
    #define   LSb32CtxAddr_Mbaff_C_Out_subAddr                    3
    #define   LSb16CtxAddr_Mbaff_C_Out_subAddr                    3
    #define       bCtxAddr_Mbaff_C_Out_subAddr                 5
    #define   MSK32CtxAddr_Mbaff_C_Out_subAddr                    0x000000F8
    ///////////////////////////////////////////////////////////
    #define     RA_CtxAddr_Mbaff_D_In                          0x0018

    #define     BA_CtxAddr_Mbaff_D_In_mbFieldA                 0x0018
    #define     B16CtxAddr_Mbaff_D_In_mbFieldA                 0x0018
    #define   LSb32CtxAddr_Mbaff_D_In_mbFieldA                    0
    #define   LSb16CtxAddr_Mbaff_D_In_mbFieldA                    0
    #define       bCtxAddr_Mbaff_D_In_mbFieldA                 1
    #define   MSK32CtxAddr_Mbaff_D_In_mbFieldA                    0x00000001

    #define     BA_CtxAddr_Mbaff_D_In_mbFieldB                 0x0018
    #define     B16CtxAddr_Mbaff_D_In_mbFieldB                 0x0018
    #define   LSb32CtxAddr_Mbaff_D_In_mbFieldB                    1
    #define   LSb16CtxAddr_Mbaff_D_In_mbFieldB                    1
    #define       bCtxAddr_Mbaff_D_In_mbFieldB                 1
    #define   MSK32CtxAddr_Mbaff_D_In_mbFieldB                    0x00000002

    #define     BA_CtxAddr_Mbaff_D_In_mbFieldD                 0x0018
    #define     B16CtxAddr_Mbaff_D_In_mbFieldD                 0x0018
    #define   LSb32CtxAddr_Mbaff_D_In_mbFieldD                    2
    #define   LSb16CtxAddr_Mbaff_D_In_mbFieldD                    2
    #define       bCtxAddr_Mbaff_D_In_mbFieldD                 1
    #define   MSK32CtxAddr_Mbaff_D_In_mbFieldD                    0x00000004

    #define     BA_CtxAddr_Mbaff_D_In_mbFieldX                 0x0018
    #define     B16CtxAddr_Mbaff_D_In_mbFieldX                 0x0018
    #define   LSb32CtxAddr_Mbaff_D_In_mbFieldX                    3
    #define   LSb16CtxAddr_Mbaff_D_In_mbFieldX                    3
    #define       bCtxAddr_Mbaff_D_In_mbFieldX                 1
    #define   MSK32CtxAddr_Mbaff_D_In_mbFieldX                    0x00000008

    #define     BA_CtxAddr_Mbaff_D_In_isBotMb                  0x0018
    #define     B16CtxAddr_Mbaff_D_In_isBotMb                  0x0018
    #define   LSb32CtxAddr_Mbaff_D_In_isBotMb                     4
    #define   LSb16CtxAddr_Mbaff_D_In_isBotMb                     4
    #define       bCtxAddr_Mbaff_D_In_isBotMb                  1
    #define   MSK32CtxAddr_Mbaff_D_In_isBotMb                     0x00000010

    #define     BA_CtxAddr_Mbaff_D_In_blkId                    0x0018
    #define     B16CtxAddr_Mbaff_D_In_blkId                    0x0018
    #define   LSb32CtxAddr_Mbaff_D_In_blkId                       5
    #define   LSb16CtxAddr_Mbaff_D_In_blkId                       5
    #define       bCtxAddr_Mbaff_D_In_blkId                    6
    #define   MSK32CtxAddr_Mbaff_D_In_blkId                       0x000007E0
    #define        CtxAddr_Mbaff_D_In_blkId_max                             0x25
    ///////////////////////////////////////////////////////////
    #define     RA_CtxAddr_Mbaff_D_Out                         0x001C

    #define     BA_CtxAddr_Mbaff_D_Out_dltBank                 0x001C
    #define     B16CtxAddr_Mbaff_D_Out_dltBank                 0x001C
    #define   LSb32CtxAddr_Mbaff_D_Out_dltBank                    0
    #define   LSb16CtxAddr_Mbaff_D_Out_dltBank                    0
    #define       bCtxAddr_Mbaff_D_Out_dltBank                 3
    #define   MSK32CtxAddr_Mbaff_D_Out_dltBank                    0x00000007

    #define     BA_CtxAddr_Mbaff_D_Out_subAddr                 0x001C
    #define     B16CtxAddr_Mbaff_D_Out_subAddr                 0x001C
    #define   LSb32CtxAddr_Mbaff_D_Out_subAddr                    3
    #define   LSb16CtxAddr_Mbaff_D_Out_subAddr                    3
    #define       bCtxAddr_Mbaff_D_Out_subAddr                 5
    #define   MSK32CtxAddr_Mbaff_D_Out_subAddr                    0x000000F8
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CtxAddr_Mbaff {
    ///////////////////////////////////////////////////////////
    #define   GET32CtxAddr_Mbaff_A_In_mbFieldA(r32)            _BFGET_(r32, 0, 0)
    #define   SET32CtxAddr_Mbaff_A_In_mbFieldA(r32,v)          _BFSET_(r32, 0, 0,v)
    #define   GET16CtxAddr_Mbaff_A_In_mbFieldA(r16)            _BFGET_(r16, 0, 0)
    #define   SET16CtxAddr_Mbaff_A_In_mbFieldA(r16,v)          _BFSET_(r16, 0, 0,v)

    #define   GET32CtxAddr_Mbaff_A_In_mbFieldX(r32)            _BFGET_(r32, 1, 1)
    #define   SET32CtxAddr_Mbaff_A_In_mbFieldX(r32,v)          _BFSET_(r32, 1, 1,v)
    #define   GET16CtxAddr_Mbaff_A_In_mbFieldX(r16)            _BFGET_(r16, 1, 1)
    #define   SET16CtxAddr_Mbaff_A_In_mbFieldX(r16,v)          _BFSET_(r16, 1, 1,v)

    #define   GET32CtxAddr_Mbaff_A_In_isBotMb(r32)             _BFGET_(r32, 2, 2)
    #define   SET32CtxAddr_Mbaff_A_In_isBotMb(r32,v)           _BFSET_(r32, 2, 2,v)
    #define   GET16CtxAddr_Mbaff_A_In_isBotMb(r16)             _BFGET_(r16, 2, 2)
    #define   SET16CtxAddr_Mbaff_A_In_isBotMb(r16,v)           _BFSET_(r16, 2, 2,v)

    #define   GET32CtxAddr_Mbaff_A_In_blkId(r32)               _BFGET_(r32, 8, 3)
    #define   SET32CtxAddr_Mbaff_A_In_blkId(r32,v)             _BFSET_(r32, 8, 3,v)
    #define   GET16CtxAddr_Mbaff_A_In_blkId(r16)               _BFGET_(r16, 8, 3)
    #define   SET16CtxAddr_Mbaff_A_In_blkId(r16,v)             _BFSET_(r16, 8, 3,v)

    #define     w32CtxAddr_Mbaff_A_In                          {\
            UNSG32 uA_In_mbFieldA                              :  1;\
            UNSG32 uA_In_mbFieldX                              :  1;\
            UNSG32 uA_In_isBotMb                               :  1;\
            UNSG32 uA_In_blkId                                 :  6;\
            UNSG32 RSVDx0_b9                                   : 23;\
          }
    union { UNSG32 u32CtxAddr_Mbaff_A_In;
            struct w32CtxAddr_Mbaff_A_In;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxAddr_Mbaff_A_Out_dltBank(r32)            _BFGET_(r32, 2, 0)
    #define   SET32CtxAddr_Mbaff_A_Out_dltBank(r32,v)          _BFSET_(r32, 2, 0,v)
    #define   GET16CtxAddr_Mbaff_A_Out_dltBank(r16)            _BFGET_(r16, 2, 0)
    #define   SET16CtxAddr_Mbaff_A_Out_dltBank(r16,v)          _BFSET_(r16, 2, 0,v)

    #define   GET32CtxAddr_Mbaff_A_Out_subAddr(r32)            _BFGET_(r32, 7, 3)
    #define   SET32CtxAddr_Mbaff_A_Out_subAddr(r32,v)          _BFSET_(r32, 7, 3,v)
    #define   GET16CtxAddr_Mbaff_A_Out_subAddr(r16)            _BFGET_(r16, 7, 3)
    #define   SET16CtxAddr_Mbaff_A_Out_subAddr(r16,v)          _BFSET_(r16, 7, 3,v)

    #define     w32CtxAddr_Mbaff_A_Out                         {\
            UNSG32 uA_Out_dltBank                              :  3;\
            UNSG32 uA_Out_subAddr                              :  5;\
            UNSG32 RSVDx4_b8                                   : 24;\
          }
    union { UNSG32 u32CtxAddr_Mbaff_A_Out;
            struct w32CtxAddr_Mbaff_A_Out;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxAddr_Mbaff_B_In_mbFieldB(r32)            _BFGET_(r32, 0, 0)
    #define   SET32CtxAddr_Mbaff_B_In_mbFieldB(r32,v)          _BFSET_(r32, 0, 0,v)
    #define   GET16CtxAddr_Mbaff_B_In_mbFieldB(r16)            _BFGET_(r16, 0, 0)
    #define   SET16CtxAddr_Mbaff_B_In_mbFieldB(r16,v)          _BFSET_(r16, 0, 0,v)

    #define   GET32CtxAddr_Mbaff_B_In_mbFieldX(r32)            _BFGET_(r32, 1, 1)
    #define   SET32CtxAddr_Mbaff_B_In_mbFieldX(r32,v)          _BFSET_(r32, 1, 1,v)
    #define   GET16CtxAddr_Mbaff_B_In_mbFieldX(r16)            _BFGET_(r16, 1, 1)
    #define   SET16CtxAddr_Mbaff_B_In_mbFieldX(r16,v)          _BFSET_(r16, 1, 1,v)

    #define   GET32CtxAddr_Mbaff_B_In_isBotMb(r32)             _BFGET_(r32, 2, 2)
    #define   SET32CtxAddr_Mbaff_B_In_isBotMb(r32,v)           _BFSET_(r32, 2, 2,v)
    #define   GET16CtxAddr_Mbaff_B_In_isBotMb(r16)             _BFGET_(r16, 2, 2)
    #define   SET16CtxAddr_Mbaff_B_In_isBotMb(r16,v)           _BFSET_(r16, 2, 2,v)

    #define   GET32CtxAddr_Mbaff_B_In_blkId(r32)               _BFGET_(r32, 8, 3)
    #define   SET32CtxAddr_Mbaff_B_In_blkId(r32,v)             _BFSET_(r32, 8, 3,v)
    #define   GET16CtxAddr_Mbaff_B_In_blkId(r16)               _BFGET_(r16, 8, 3)
    #define   SET16CtxAddr_Mbaff_B_In_blkId(r16,v)             _BFSET_(r16, 8, 3,v)

    #define     w32CtxAddr_Mbaff_B_In                          {\
            UNSG32 uB_In_mbFieldB                              :  1;\
            UNSG32 uB_In_mbFieldX                              :  1;\
            UNSG32 uB_In_isBotMb                               :  1;\
            UNSG32 uB_In_blkId                                 :  6;\
            UNSG32 RSVDx8_b9                                   : 23;\
          }
    union { UNSG32 u32CtxAddr_Mbaff_B_In;
            struct w32CtxAddr_Mbaff_B_In;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxAddr_Mbaff_B_Out_dltBank(r32)            _BFGET_(r32, 2, 0)
    #define   SET32CtxAddr_Mbaff_B_Out_dltBank(r32,v)          _BFSET_(r32, 2, 0,v)
    #define   GET16CtxAddr_Mbaff_B_Out_dltBank(r16)            _BFGET_(r16, 2, 0)
    #define   SET16CtxAddr_Mbaff_B_Out_dltBank(r16,v)          _BFSET_(r16, 2, 0,v)

    #define   GET32CtxAddr_Mbaff_B_Out_subAddr(r32)            _BFGET_(r32, 7, 3)
    #define   SET32CtxAddr_Mbaff_B_Out_subAddr(r32,v)          _BFSET_(r32, 7, 3,v)
    #define   GET16CtxAddr_Mbaff_B_Out_subAddr(r16)            _BFGET_(r16, 7, 3)
    #define   SET16CtxAddr_Mbaff_B_Out_subAddr(r16,v)          _BFSET_(r16, 7, 3,v)

    #define     w32CtxAddr_Mbaff_B_Out                         {\
            UNSG32 uB_Out_dltBank                              :  3;\
            UNSG32 uB_Out_subAddr                              :  5;\
            UNSG32 RSVDxC_b8                                   : 24;\
          }
    union { UNSG32 u32CtxAddr_Mbaff_B_Out;
            struct w32CtxAddr_Mbaff_B_Out;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxAddr_Mbaff_C_In_mbFieldB(r32)            _BFGET_(r32, 0, 0)
    #define   SET32CtxAddr_Mbaff_C_In_mbFieldB(r32,v)          _BFSET_(r32, 0, 0,v)
    #define   GET16CtxAddr_Mbaff_C_In_mbFieldB(r16)            _BFGET_(r16, 0, 0)
    #define   SET16CtxAddr_Mbaff_C_In_mbFieldB(r16,v)          _BFSET_(r16, 0, 0,v)

    #define   GET32CtxAddr_Mbaff_C_In_mbFieldC(r32)            _BFGET_(r32, 1, 1)
    #define   SET32CtxAddr_Mbaff_C_In_mbFieldC(r32,v)          _BFSET_(r32, 1, 1,v)
    #define   GET16CtxAddr_Mbaff_C_In_mbFieldC(r16)            _BFGET_(r16, 1, 1)
    #define   SET16CtxAddr_Mbaff_C_In_mbFieldC(r16,v)          _BFSET_(r16, 1, 1,v)

    #define   GET32CtxAddr_Mbaff_C_In_mbFieldX(r32)            _BFGET_(r32, 2, 2)
    #define   SET32CtxAddr_Mbaff_C_In_mbFieldX(r32,v)          _BFSET_(r32, 2, 2,v)
    #define   GET16CtxAddr_Mbaff_C_In_mbFieldX(r16)            _BFGET_(r16, 2, 2)
    #define   SET16CtxAddr_Mbaff_C_In_mbFieldX(r16,v)          _BFSET_(r16, 2, 2,v)

    #define   GET32CtxAddr_Mbaff_C_In_isBotMb(r32)             _BFGET_(r32, 3, 3)
    #define   SET32CtxAddr_Mbaff_C_In_isBotMb(r32,v)           _BFSET_(r32, 3, 3,v)
    #define   GET16CtxAddr_Mbaff_C_In_isBotMb(r16)             _BFGET_(r16, 3, 3)
    #define   SET16CtxAddr_Mbaff_C_In_isBotMb(r16,v)           _BFSET_(r16, 3, 3,v)

    #define   GET32CtxAddr_Mbaff_C_In_blkId(r32)               _BFGET_(r32, 9, 4)
    #define   SET32CtxAddr_Mbaff_C_In_blkId(r32,v)             _BFSET_(r32, 9, 4,v)
    #define   GET16CtxAddr_Mbaff_C_In_blkId(r16)               _BFGET_(r16, 9, 4)
    #define   SET16CtxAddr_Mbaff_C_In_blkId(r16,v)             _BFSET_(r16, 9, 4,v)

    #define     w32CtxAddr_Mbaff_C_In                          {\
            UNSG32 uC_In_mbFieldB                              :  1;\
            UNSG32 uC_In_mbFieldC                              :  1;\
            UNSG32 uC_In_mbFieldX                              :  1;\
            UNSG32 uC_In_isBotMb                               :  1;\
            UNSG32 uC_In_blkId                                 :  6;\
            UNSG32 RSVDx10_b10                                 : 22;\
          }
    union { UNSG32 u32CtxAddr_Mbaff_C_In;
            struct w32CtxAddr_Mbaff_C_In;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxAddr_Mbaff_C_Out_dltBank(r32)            _BFGET_(r32, 2, 0)
    #define   SET32CtxAddr_Mbaff_C_Out_dltBank(r32,v)          _BFSET_(r32, 2, 0,v)
    #define   GET16CtxAddr_Mbaff_C_Out_dltBank(r16)            _BFGET_(r16, 2, 0)
    #define   SET16CtxAddr_Mbaff_C_Out_dltBank(r16,v)          _BFSET_(r16, 2, 0,v)

    #define   GET32CtxAddr_Mbaff_C_Out_subAddr(r32)            _BFGET_(r32, 7, 3)
    #define   SET32CtxAddr_Mbaff_C_Out_subAddr(r32,v)          _BFSET_(r32, 7, 3,v)
    #define   GET16CtxAddr_Mbaff_C_Out_subAddr(r16)            _BFGET_(r16, 7, 3)
    #define   SET16CtxAddr_Mbaff_C_Out_subAddr(r16,v)          _BFSET_(r16, 7, 3,v)

    #define     w32CtxAddr_Mbaff_C_Out                         {\
            UNSG32 uC_Out_dltBank                              :  3;\
            UNSG32 uC_Out_subAddr                              :  5;\
            UNSG32 RSVDx14_b8                                  : 24;\
          }
    union { UNSG32 u32CtxAddr_Mbaff_C_Out;
            struct w32CtxAddr_Mbaff_C_Out;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxAddr_Mbaff_D_In_mbFieldA(r32)            _BFGET_(r32, 0, 0)
    #define   SET32CtxAddr_Mbaff_D_In_mbFieldA(r32,v)          _BFSET_(r32, 0, 0,v)
    #define   GET16CtxAddr_Mbaff_D_In_mbFieldA(r16)            _BFGET_(r16, 0, 0)
    #define   SET16CtxAddr_Mbaff_D_In_mbFieldA(r16,v)          _BFSET_(r16, 0, 0,v)

    #define   GET32CtxAddr_Mbaff_D_In_mbFieldB(r32)            _BFGET_(r32, 1, 1)
    #define   SET32CtxAddr_Mbaff_D_In_mbFieldB(r32,v)          _BFSET_(r32, 1, 1,v)
    #define   GET16CtxAddr_Mbaff_D_In_mbFieldB(r16)            _BFGET_(r16, 1, 1)
    #define   SET16CtxAddr_Mbaff_D_In_mbFieldB(r16,v)          _BFSET_(r16, 1, 1,v)

    #define   GET32CtxAddr_Mbaff_D_In_mbFieldD(r32)            _BFGET_(r32, 2, 2)
    #define   SET32CtxAddr_Mbaff_D_In_mbFieldD(r32,v)          _BFSET_(r32, 2, 2,v)
    #define   GET16CtxAddr_Mbaff_D_In_mbFieldD(r16)            _BFGET_(r16, 2, 2)
    #define   SET16CtxAddr_Mbaff_D_In_mbFieldD(r16,v)          _BFSET_(r16, 2, 2,v)

    #define   GET32CtxAddr_Mbaff_D_In_mbFieldX(r32)            _BFGET_(r32, 3, 3)
    #define   SET32CtxAddr_Mbaff_D_In_mbFieldX(r32,v)          _BFSET_(r32, 3, 3,v)
    #define   GET16CtxAddr_Mbaff_D_In_mbFieldX(r16)            _BFGET_(r16, 3, 3)
    #define   SET16CtxAddr_Mbaff_D_In_mbFieldX(r16,v)          _BFSET_(r16, 3, 3,v)

    #define   GET32CtxAddr_Mbaff_D_In_isBotMb(r32)             _BFGET_(r32, 4, 4)
    #define   SET32CtxAddr_Mbaff_D_In_isBotMb(r32,v)           _BFSET_(r32, 4, 4,v)
    #define   GET16CtxAddr_Mbaff_D_In_isBotMb(r16)             _BFGET_(r16, 4, 4)
    #define   SET16CtxAddr_Mbaff_D_In_isBotMb(r16,v)           _BFSET_(r16, 4, 4,v)

    #define   GET32CtxAddr_Mbaff_D_In_blkId(r32)               _BFGET_(r32,10, 5)
    #define   SET32CtxAddr_Mbaff_D_In_blkId(r32,v)             _BFSET_(r32,10, 5,v)
    #define   GET16CtxAddr_Mbaff_D_In_blkId(r16)               _BFGET_(r16,10, 5)
    #define   SET16CtxAddr_Mbaff_D_In_blkId(r16,v)             _BFSET_(r16,10, 5,v)

    #define     w32CtxAddr_Mbaff_D_In                          {\
            UNSG32 uD_In_mbFieldA                              :  1;\
            UNSG32 uD_In_mbFieldB                              :  1;\
            UNSG32 uD_In_mbFieldD                              :  1;\
            UNSG32 uD_In_mbFieldX                              :  1;\
            UNSG32 uD_In_isBotMb                               :  1;\
            UNSG32 uD_In_blkId                                 :  6;\
            UNSG32 RSVDx18_b11                                 : 21;\
          }
    union { UNSG32 u32CtxAddr_Mbaff_D_In;
            struct w32CtxAddr_Mbaff_D_In;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxAddr_Mbaff_D_Out_dltBank(r32)            _BFGET_(r32, 2, 0)
    #define   SET32CtxAddr_Mbaff_D_Out_dltBank(r32,v)          _BFSET_(r32, 2, 0,v)
    #define   GET16CtxAddr_Mbaff_D_Out_dltBank(r16)            _BFGET_(r16, 2, 0)
    #define   SET16CtxAddr_Mbaff_D_Out_dltBank(r16,v)          _BFSET_(r16, 2, 0,v)

    #define   GET32CtxAddr_Mbaff_D_Out_subAddr(r32)            _BFGET_(r32, 7, 3)
    #define   SET32CtxAddr_Mbaff_D_Out_subAddr(r32,v)          _BFSET_(r32, 7, 3,v)
    #define   GET16CtxAddr_Mbaff_D_Out_subAddr(r16)            _BFGET_(r16, 7, 3)
    #define   SET16CtxAddr_Mbaff_D_Out_subAddr(r16,v)          _BFSET_(r16, 7, 3,v)

    #define     w32CtxAddr_Mbaff_D_Out                         {\
            UNSG32 uD_Out_dltBank                              :  3;\
            UNSG32 uD_Out_subAddr                              :  5;\
            UNSG32 RSVDx1C_b8                                  : 24;\
          }
    union { UNSG32 u32CtxAddr_Mbaff_D_Out;
            struct w32CtxAddr_Mbaff_D_Out;
          };
    ///////////////////////////////////////////////////////////
    } SIE_CtxAddr_Mbaff;

    typedef union  T32CtxAddr_Mbaff_A_In
          { UNSG32 u32;
            struct w32CtxAddr_Mbaff_A_In;
                 } T32CtxAddr_Mbaff_A_In;
    typedef union  T32CtxAddr_Mbaff_A_Out
          { UNSG32 u32;
            struct w32CtxAddr_Mbaff_A_Out;
                 } T32CtxAddr_Mbaff_A_Out;
    typedef union  T32CtxAddr_Mbaff_B_In
          { UNSG32 u32;
            struct w32CtxAddr_Mbaff_B_In;
                 } T32CtxAddr_Mbaff_B_In;
    typedef union  T32CtxAddr_Mbaff_B_Out
          { UNSG32 u32;
            struct w32CtxAddr_Mbaff_B_Out;
                 } T32CtxAddr_Mbaff_B_Out;
    typedef union  T32CtxAddr_Mbaff_C_In
          { UNSG32 u32;
            struct w32CtxAddr_Mbaff_C_In;
                 } T32CtxAddr_Mbaff_C_In;
    typedef union  T32CtxAddr_Mbaff_C_Out
          { UNSG32 u32;
            struct w32CtxAddr_Mbaff_C_Out;
                 } T32CtxAddr_Mbaff_C_Out;
    typedef union  T32CtxAddr_Mbaff_D_In
          { UNSG32 u32;
            struct w32CtxAddr_Mbaff_D_In;
                 } T32CtxAddr_Mbaff_D_In;
    typedef union  T32CtxAddr_Mbaff_D_Out
          { UNSG32 u32;
            struct w32CtxAddr_Mbaff_D_Out;
                 } T32CtxAddr_Mbaff_D_Out;
    ///////////////////////////////////////////////////////////

    typedef union  TCtxAddr_Mbaff_A_In
          { UNSG32 u32[1];
            struct {
            struct w32CtxAddr_Mbaff_A_In;
                   };
                 } TCtxAddr_Mbaff_A_In;
    typedef union  TCtxAddr_Mbaff_A_Out
          { UNSG32 u32[1];
            struct {
            struct w32CtxAddr_Mbaff_A_Out;
                   };
                 } TCtxAddr_Mbaff_A_Out;
    typedef union  TCtxAddr_Mbaff_B_In
          { UNSG32 u32[1];
            struct {
            struct w32CtxAddr_Mbaff_B_In;
                   };
                 } TCtxAddr_Mbaff_B_In;
    typedef union  TCtxAddr_Mbaff_B_Out
          { UNSG32 u32[1];
            struct {
            struct w32CtxAddr_Mbaff_B_Out;
                   };
                 } TCtxAddr_Mbaff_B_Out;
    typedef union  TCtxAddr_Mbaff_C_In
          { UNSG32 u32[1];
            struct {
            struct w32CtxAddr_Mbaff_C_In;
                   };
                 } TCtxAddr_Mbaff_C_In;
    typedef union  TCtxAddr_Mbaff_C_Out
          { UNSG32 u32[1];
            struct {
            struct w32CtxAddr_Mbaff_C_Out;
                   };
                 } TCtxAddr_Mbaff_C_Out;
    typedef union  TCtxAddr_Mbaff_D_In
          { UNSG32 u32[1];
            struct {
            struct w32CtxAddr_Mbaff_D_In;
                   };
                 } TCtxAddr_Mbaff_D_In;
    typedef union  TCtxAddr_Mbaff_D_Out
          { UNSG32 u32[1];
            struct {
            struct w32CtxAddr_Mbaff_D_Out;
                   };
                 } TCtxAddr_Mbaff_D_Out;

    ///////////////////////////////////////////////////////////
     SIGN32 CtxAddr_Mbaff_drvrd(SIE_CtxAddr_Mbaff *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CtxAddr_Mbaff_drvwr(SIE_CtxAddr_Mbaff *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CtxAddr_Mbaff_reset(SIE_CtxAddr_Mbaff *p);
     SIGN32 CtxAddr_Mbaff_cmp  (SIE_CtxAddr_Mbaff *p, SIE_CtxAddr_Mbaff *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CtxAddr_Mbaff_check(p,pie,pfx,hLOG) CtxAddr_Mbaff_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CtxAddr_Mbaff_print(p,    pfx,hLOG) CtxAddr_Mbaff_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CtxAddr_Mbaff
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE AvailTbl                biu              (4,4)
///     ###
///     * Input / output bit field definitions for availTbl_NonMbaff availability lookups
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 A_In                 (P)
///               %unsigned 1  mbAvailA                  
///                                    ###
///                                    * neighbor MB A is available or not
///                                    ###
///               %unsigned 6  blkId                     
///                                    ###
///                                    * legal range = 0~37
///                                    ###
///                                    : max                      0x25
///                                                 ###
///                                                 * maximum value of blkId
///                                                 ###
///               %%        25         # Stuffing bits...
///     @ 0x00004 A_Out                (P)
///               %unsigned 1  isAvail                   
///                                    ###
///                                    * neighbor A is available or not
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00008 B_In                 (P)
///               %unsigned 1  mbAvailB                  
///                                    ###
///                                    * neighbor MB B is available or not
///                                    ###
///               %unsigned 6  blkId                     
///                                    ###
///                                    * legal range = 0~37
///                                    ###
///                                    : max                      0x25
///                                                 ###
///                                                 * maximum value of blkId
///                                                 ###
///               %%        25         # Stuffing bits...
///     @ 0x0000C B_Out                (P)
///               %unsigned 1  isAvail                   
///                                    ###
///                                    * neighbor B is available or not
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00010 C_In                 (P)
///               %unsigned 1  mbAvailB                  
///                                    ###
///                                    * neighbor MB B is available or not
///                                    ###
///               %unsigned 1  mbAvailC                  
///                                    ###
///                                    * neighbor MB C is available or not
///                                    ###
///               %unsigned 6  blkId                     
///                                    ###
///                                    * legal range = 0~37
///                                    ###
///                                    : max                      0x25
///                                                 ###
///                                                 * maximum value of blkId
///                                                 ###
///               %%        24         # Stuffing bits...
///     @ 0x00014 C_Out                (P)
///               %unsigned 1  isAvail                   
///                                    ###
///                                    * neighbor C is available or not
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00018 D_In                 (P)
///               %unsigned 1  mbAvailA                  
///                                    ###
///                                    * neighbor MB A is available or not
///                                    ###
///               %unsigned 1  mbAvailB                  
///                                    ###
///                                    * neighbor MB B is available or not
///                                    ###
///               %unsigned 1  mbAvailD                  
///                                    ###
///                                    * neighbor MB D is available or not
///                                    ###
///               %unsigned 6  blkId                     
///                                    ###
///                                    * legal range = 0~37
///                                    ###
///                                    : max                      0x25
///                                                 ###
///                                                 * maximum value of blkId
///                                                 ###
///               %%        23         # Stuffing bits...
///     @ 0x0001C D_Out                (P)
///               %unsigned 1  isAvail                   
///                                    ###
///                                    * context address for neighbor D
///                                    ###
///               %%        31         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      32B, bits:      35b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_AvailTbl
#define h_AvailTbl (){}

    #define     RA_AvailTbl_A_In                               0x0000

    #define     BA_AvailTbl_A_In_mbAvailA                      0x0000
    #define     B16AvailTbl_A_In_mbAvailA                      0x0000
    #define   LSb32AvailTbl_A_In_mbAvailA                         0
    #define   LSb16AvailTbl_A_In_mbAvailA                         0
    #define       bAvailTbl_A_In_mbAvailA                      1
    #define   MSK32AvailTbl_A_In_mbAvailA                         0x00000001

    #define     BA_AvailTbl_A_In_blkId                         0x0000
    #define     B16AvailTbl_A_In_blkId                         0x0000
    #define   LSb32AvailTbl_A_In_blkId                            1
    #define   LSb16AvailTbl_A_In_blkId                            1
    #define       bAvailTbl_A_In_blkId                         6
    #define   MSK32AvailTbl_A_In_blkId                            0x0000007E
    #define        AvailTbl_A_In_blkId_max                                  0x25
    ///////////////////////////////////////////////////////////
    #define     RA_AvailTbl_A_Out                              0x0004

    #define     BA_AvailTbl_A_Out_isAvail                      0x0004
    #define     B16AvailTbl_A_Out_isAvail                      0x0004
    #define   LSb32AvailTbl_A_Out_isAvail                         0
    #define   LSb16AvailTbl_A_Out_isAvail                         0
    #define       bAvailTbl_A_Out_isAvail                      1
    #define   MSK32AvailTbl_A_Out_isAvail                         0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_AvailTbl_B_In                               0x0008

    #define     BA_AvailTbl_B_In_mbAvailB                      0x0008
    #define     B16AvailTbl_B_In_mbAvailB                      0x0008
    #define   LSb32AvailTbl_B_In_mbAvailB                         0
    #define   LSb16AvailTbl_B_In_mbAvailB                         0
    #define       bAvailTbl_B_In_mbAvailB                      1
    #define   MSK32AvailTbl_B_In_mbAvailB                         0x00000001

    #define     BA_AvailTbl_B_In_blkId                         0x0008
    #define     B16AvailTbl_B_In_blkId                         0x0008
    #define   LSb32AvailTbl_B_In_blkId                            1
    #define   LSb16AvailTbl_B_In_blkId                            1
    #define       bAvailTbl_B_In_blkId                         6
    #define   MSK32AvailTbl_B_In_blkId                            0x0000007E
    #define        AvailTbl_B_In_blkId_max                                  0x25
    ///////////////////////////////////////////////////////////
    #define     RA_AvailTbl_B_Out                              0x000C

    #define     BA_AvailTbl_B_Out_isAvail                      0x000C
    #define     B16AvailTbl_B_Out_isAvail                      0x000C
    #define   LSb32AvailTbl_B_Out_isAvail                         0
    #define   LSb16AvailTbl_B_Out_isAvail                         0
    #define       bAvailTbl_B_Out_isAvail                      1
    #define   MSK32AvailTbl_B_Out_isAvail                         0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_AvailTbl_C_In                               0x0010

    #define     BA_AvailTbl_C_In_mbAvailB                      0x0010
    #define     B16AvailTbl_C_In_mbAvailB                      0x0010
    #define   LSb32AvailTbl_C_In_mbAvailB                         0
    #define   LSb16AvailTbl_C_In_mbAvailB                         0
    #define       bAvailTbl_C_In_mbAvailB                      1
    #define   MSK32AvailTbl_C_In_mbAvailB                         0x00000001

    #define     BA_AvailTbl_C_In_mbAvailC                      0x0010
    #define     B16AvailTbl_C_In_mbAvailC                      0x0010
    #define   LSb32AvailTbl_C_In_mbAvailC                         1
    #define   LSb16AvailTbl_C_In_mbAvailC                         1
    #define       bAvailTbl_C_In_mbAvailC                      1
    #define   MSK32AvailTbl_C_In_mbAvailC                         0x00000002

    #define     BA_AvailTbl_C_In_blkId                         0x0010
    #define     B16AvailTbl_C_In_blkId                         0x0010
    #define   LSb32AvailTbl_C_In_blkId                            2
    #define   LSb16AvailTbl_C_In_blkId                            2
    #define       bAvailTbl_C_In_blkId                         6
    #define   MSK32AvailTbl_C_In_blkId                            0x000000FC
    #define        AvailTbl_C_In_blkId_max                                  0x25
    ///////////////////////////////////////////////////////////
    #define     RA_AvailTbl_C_Out                              0x0014

    #define     BA_AvailTbl_C_Out_isAvail                      0x0014
    #define     B16AvailTbl_C_Out_isAvail                      0x0014
    #define   LSb32AvailTbl_C_Out_isAvail                         0
    #define   LSb16AvailTbl_C_Out_isAvail                         0
    #define       bAvailTbl_C_Out_isAvail                      1
    #define   MSK32AvailTbl_C_Out_isAvail                         0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_AvailTbl_D_In                               0x0018

    #define     BA_AvailTbl_D_In_mbAvailA                      0x0018
    #define     B16AvailTbl_D_In_mbAvailA                      0x0018
    #define   LSb32AvailTbl_D_In_mbAvailA                         0
    #define   LSb16AvailTbl_D_In_mbAvailA                         0
    #define       bAvailTbl_D_In_mbAvailA                      1
    #define   MSK32AvailTbl_D_In_mbAvailA                         0x00000001

    #define     BA_AvailTbl_D_In_mbAvailB                      0x0018
    #define     B16AvailTbl_D_In_mbAvailB                      0x0018
    #define   LSb32AvailTbl_D_In_mbAvailB                         1
    #define   LSb16AvailTbl_D_In_mbAvailB                         1
    #define       bAvailTbl_D_In_mbAvailB                      1
    #define   MSK32AvailTbl_D_In_mbAvailB                         0x00000002

    #define     BA_AvailTbl_D_In_mbAvailD                      0x0018
    #define     B16AvailTbl_D_In_mbAvailD                      0x0018
    #define   LSb32AvailTbl_D_In_mbAvailD                         2
    #define   LSb16AvailTbl_D_In_mbAvailD                         2
    #define       bAvailTbl_D_In_mbAvailD                      1
    #define   MSK32AvailTbl_D_In_mbAvailD                         0x00000004

    #define     BA_AvailTbl_D_In_blkId                         0x0018
    #define     B16AvailTbl_D_In_blkId                         0x0018
    #define   LSb32AvailTbl_D_In_blkId                            3
    #define   LSb16AvailTbl_D_In_blkId                            3
    #define       bAvailTbl_D_In_blkId                         6
    #define   MSK32AvailTbl_D_In_blkId                            0x000001F8
    #define        AvailTbl_D_In_blkId_max                                  0x25
    ///////////////////////////////////////////////////////////
    #define     RA_AvailTbl_D_Out                              0x001C

    #define     BA_AvailTbl_D_Out_isAvail                      0x001C
    #define     B16AvailTbl_D_Out_isAvail                      0x001C
    #define   LSb32AvailTbl_D_Out_isAvail                         0
    #define   LSb16AvailTbl_D_Out_isAvail                         0
    #define       bAvailTbl_D_Out_isAvail                      1
    #define   MSK32AvailTbl_D_Out_isAvail                         0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_AvailTbl {
    ///////////////////////////////////////////////////////////
    #define   GET32AvailTbl_A_In_mbAvailA(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32AvailTbl_A_In_mbAvailA(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16AvailTbl_A_In_mbAvailA(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16AvailTbl_A_In_mbAvailA(r16,v)               _BFSET_(r16, 0, 0,v)

    #define   GET32AvailTbl_A_In_blkId(r32)                    _BFGET_(r32, 6, 1)
    #define   SET32AvailTbl_A_In_blkId(r32,v)                  _BFSET_(r32, 6, 1,v)
    #define   GET16AvailTbl_A_In_blkId(r16)                    _BFGET_(r16, 6, 1)
    #define   SET16AvailTbl_A_In_blkId(r16,v)                  _BFSET_(r16, 6, 1,v)

    #define     w32AvailTbl_A_In                               {\
            UNSG32 uA_In_mbAvailA                              :  1;\
            UNSG32 uA_In_blkId                                 :  6;\
            UNSG32 RSVDx0_b7                                   : 25;\
          }
    union { UNSG32 u32AvailTbl_A_In;
            struct w32AvailTbl_A_In;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AvailTbl_A_Out_isAvail(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32AvailTbl_A_Out_isAvail(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16AvailTbl_A_Out_isAvail(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16AvailTbl_A_Out_isAvail(r16,v)               _BFSET_(r16, 0, 0,v)

    #define     w32AvailTbl_A_Out                              {\
            UNSG32 uA_Out_isAvail                              :  1;\
            UNSG32 RSVDx4_b1                                   : 31;\
          }
    union { UNSG32 u32AvailTbl_A_Out;
            struct w32AvailTbl_A_Out;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AvailTbl_B_In_mbAvailB(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32AvailTbl_B_In_mbAvailB(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16AvailTbl_B_In_mbAvailB(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16AvailTbl_B_In_mbAvailB(r16,v)               _BFSET_(r16, 0, 0,v)

    #define   GET32AvailTbl_B_In_blkId(r32)                    _BFGET_(r32, 6, 1)
    #define   SET32AvailTbl_B_In_blkId(r32,v)                  _BFSET_(r32, 6, 1,v)
    #define   GET16AvailTbl_B_In_blkId(r16)                    _BFGET_(r16, 6, 1)
    #define   SET16AvailTbl_B_In_blkId(r16,v)                  _BFSET_(r16, 6, 1,v)

    #define     w32AvailTbl_B_In                               {\
            UNSG32 uB_In_mbAvailB                              :  1;\
            UNSG32 uB_In_blkId                                 :  6;\
            UNSG32 RSVDx8_b7                                   : 25;\
          }
    union { UNSG32 u32AvailTbl_B_In;
            struct w32AvailTbl_B_In;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AvailTbl_B_Out_isAvail(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32AvailTbl_B_Out_isAvail(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16AvailTbl_B_Out_isAvail(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16AvailTbl_B_Out_isAvail(r16,v)               _BFSET_(r16, 0, 0,v)

    #define     w32AvailTbl_B_Out                              {\
            UNSG32 uB_Out_isAvail                              :  1;\
            UNSG32 RSVDxC_b1                                   : 31;\
          }
    union { UNSG32 u32AvailTbl_B_Out;
            struct w32AvailTbl_B_Out;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AvailTbl_C_In_mbAvailB(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32AvailTbl_C_In_mbAvailB(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16AvailTbl_C_In_mbAvailB(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16AvailTbl_C_In_mbAvailB(r16,v)               _BFSET_(r16, 0, 0,v)

    #define   GET32AvailTbl_C_In_mbAvailC(r32)                 _BFGET_(r32, 1, 1)
    #define   SET32AvailTbl_C_In_mbAvailC(r32,v)               _BFSET_(r32, 1, 1,v)
    #define   GET16AvailTbl_C_In_mbAvailC(r16)                 _BFGET_(r16, 1, 1)
    #define   SET16AvailTbl_C_In_mbAvailC(r16,v)               _BFSET_(r16, 1, 1,v)

    #define   GET32AvailTbl_C_In_blkId(r32)                    _BFGET_(r32, 7, 2)
    #define   SET32AvailTbl_C_In_blkId(r32,v)                  _BFSET_(r32, 7, 2,v)
    #define   GET16AvailTbl_C_In_blkId(r16)                    _BFGET_(r16, 7, 2)
    #define   SET16AvailTbl_C_In_blkId(r16,v)                  _BFSET_(r16, 7, 2,v)

    #define     w32AvailTbl_C_In                               {\
            UNSG32 uC_In_mbAvailB                              :  1;\
            UNSG32 uC_In_mbAvailC                              :  1;\
            UNSG32 uC_In_blkId                                 :  6;\
            UNSG32 RSVDx10_b8                                  : 24;\
          }
    union { UNSG32 u32AvailTbl_C_In;
            struct w32AvailTbl_C_In;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AvailTbl_C_Out_isAvail(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32AvailTbl_C_Out_isAvail(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16AvailTbl_C_Out_isAvail(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16AvailTbl_C_Out_isAvail(r16,v)               _BFSET_(r16, 0, 0,v)

    #define     w32AvailTbl_C_Out                              {\
            UNSG32 uC_Out_isAvail                              :  1;\
            UNSG32 RSVDx14_b1                                  : 31;\
          }
    union { UNSG32 u32AvailTbl_C_Out;
            struct w32AvailTbl_C_Out;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AvailTbl_D_In_mbAvailA(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32AvailTbl_D_In_mbAvailA(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16AvailTbl_D_In_mbAvailA(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16AvailTbl_D_In_mbAvailA(r16,v)               _BFSET_(r16, 0, 0,v)

    #define   GET32AvailTbl_D_In_mbAvailB(r32)                 _BFGET_(r32, 1, 1)
    #define   SET32AvailTbl_D_In_mbAvailB(r32,v)               _BFSET_(r32, 1, 1,v)
    #define   GET16AvailTbl_D_In_mbAvailB(r16)                 _BFGET_(r16, 1, 1)
    #define   SET16AvailTbl_D_In_mbAvailB(r16,v)               _BFSET_(r16, 1, 1,v)

    #define   GET32AvailTbl_D_In_mbAvailD(r32)                 _BFGET_(r32, 2, 2)
    #define   SET32AvailTbl_D_In_mbAvailD(r32,v)               _BFSET_(r32, 2, 2,v)
    #define   GET16AvailTbl_D_In_mbAvailD(r16)                 _BFGET_(r16, 2, 2)
    #define   SET16AvailTbl_D_In_mbAvailD(r16,v)               _BFSET_(r16, 2, 2,v)

    #define   GET32AvailTbl_D_In_blkId(r32)                    _BFGET_(r32, 8, 3)
    #define   SET32AvailTbl_D_In_blkId(r32,v)                  _BFSET_(r32, 8, 3,v)
    #define   GET16AvailTbl_D_In_blkId(r16)                    _BFGET_(r16, 8, 3)
    #define   SET16AvailTbl_D_In_blkId(r16,v)                  _BFSET_(r16, 8, 3,v)

    #define     w32AvailTbl_D_In                               {\
            UNSG32 uD_In_mbAvailA                              :  1;\
            UNSG32 uD_In_mbAvailB                              :  1;\
            UNSG32 uD_In_mbAvailD                              :  1;\
            UNSG32 uD_In_blkId                                 :  6;\
            UNSG32 RSVDx18_b9                                  : 23;\
          }
    union { UNSG32 u32AvailTbl_D_In;
            struct w32AvailTbl_D_In;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AvailTbl_D_Out_isAvail(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32AvailTbl_D_Out_isAvail(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16AvailTbl_D_Out_isAvail(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16AvailTbl_D_Out_isAvail(r16,v)               _BFSET_(r16, 0, 0,v)

    #define     w32AvailTbl_D_Out                              {\
            UNSG32 uD_Out_isAvail                              :  1;\
            UNSG32 RSVDx1C_b1                                  : 31;\
          }
    union { UNSG32 u32AvailTbl_D_Out;
            struct w32AvailTbl_D_Out;
          };
    ///////////////////////////////////////////////////////////
    } SIE_AvailTbl;

    typedef union  T32AvailTbl_A_In
          { UNSG32 u32;
            struct w32AvailTbl_A_In;
                 } T32AvailTbl_A_In;
    typedef union  T32AvailTbl_A_Out
          { UNSG32 u32;
            struct w32AvailTbl_A_Out;
                 } T32AvailTbl_A_Out;
    typedef union  T32AvailTbl_B_In
          { UNSG32 u32;
            struct w32AvailTbl_B_In;
                 } T32AvailTbl_B_In;
    typedef union  T32AvailTbl_B_Out
          { UNSG32 u32;
            struct w32AvailTbl_B_Out;
                 } T32AvailTbl_B_Out;
    typedef union  T32AvailTbl_C_In
          { UNSG32 u32;
            struct w32AvailTbl_C_In;
                 } T32AvailTbl_C_In;
    typedef union  T32AvailTbl_C_Out
          { UNSG32 u32;
            struct w32AvailTbl_C_Out;
                 } T32AvailTbl_C_Out;
    typedef union  T32AvailTbl_D_In
          { UNSG32 u32;
            struct w32AvailTbl_D_In;
                 } T32AvailTbl_D_In;
    typedef union  T32AvailTbl_D_Out
          { UNSG32 u32;
            struct w32AvailTbl_D_Out;
                 } T32AvailTbl_D_Out;
    ///////////////////////////////////////////////////////////

    typedef union  TAvailTbl_A_In
          { UNSG32 u32[1];
            struct {
            struct w32AvailTbl_A_In;
                   };
                 } TAvailTbl_A_In;
    typedef union  TAvailTbl_A_Out
          { UNSG32 u32[1];
            struct {
            struct w32AvailTbl_A_Out;
                   };
                 } TAvailTbl_A_Out;
    typedef union  TAvailTbl_B_In
          { UNSG32 u32[1];
            struct {
            struct w32AvailTbl_B_In;
                   };
                 } TAvailTbl_B_In;
    typedef union  TAvailTbl_B_Out
          { UNSG32 u32[1];
            struct {
            struct w32AvailTbl_B_Out;
                   };
                 } TAvailTbl_B_Out;
    typedef union  TAvailTbl_C_In
          { UNSG32 u32[1];
            struct {
            struct w32AvailTbl_C_In;
                   };
                 } TAvailTbl_C_In;
    typedef union  TAvailTbl_C_Out
          { UNSG32 u32[1];
            struct {
            struct w32AvailTbl_C_Out;
                   };
                 } TAvailTbl_C_Out;
    typedef union  TAvailTbl_D_In
          { UNSG32 u32[1];
            struct {
            struct w32AvailTbl_D_In;
                   };
                 } TAvailTbl_D_In;
    typedef union  TAvailTbl_D_Out
          { UNSG32 u32[1];
            struct {
            struct w32AvailTbl_D_Out;
                   };
                 } TAvailTbl_D_Out;

    ///////////////////////////////////////////////////////////
     SIGN32 AvailTbl_drvrd(SIE_AvailTbl *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 AvailTbl_drvwr(SIE_AvailTbl *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void AvailTbl_reset(SIE_AvailTbl *p);
     SIGN32 AvailTbl_cmp  (SIE_AvailTbl *p, SIE_AvailTbl *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define AvailTbl_check(p,pie,pfx,hLOG) AvailTbl_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define AvailTbl_print(p,    pfx,hLOG) AvailTbl_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: AvailTbl
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE AvailTbl_Mbaff          biu              (4,4)
///     ###
///     * Input / output bit field definitions for availTbl_Mbaff availability lookups
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 A_In                 (P)
///               %unsigned 1  mbAvailA                  
///                                    ###
///                                    * neighbor MB A is available or not
///                                    ###
///               %unsigned 1  mbFieldX                  
///                                    ###
///                                    * current MB is field coded or not
///                                    ###
///               %unsigned 1  isBotMb                   
///                                    ###
///                                    * current MB is bottom in the MB pair or not
///                                    ###
///               %unsigned 6  blkId                     
///                                    ###
///                                    * legal range = 0~37
///                                    ###
///                                    : max                      0x25
///                                                 ###
///                                                 * maximum value of blkId
///                                                 ###
///               %%        23         # Stuffing bits...
///     @ 0x00004 A_Out                (P)
///               %unsigned 1  isAvail                   
///                                    ###
///                                    * neighbor A is available or not
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00008 B_In                 (P)
///               %unsigned 1  mbAvailB                  
///                                    ###
///                                    * neighbor MB B is available or not
///                                    ###
///               %unsigned 1  mbFieldX                  
///                                    ###
///                                    * current MB is field coded or not
///                                    ###
///               %unsigned 1  isBotMb                   
///                                    ###
///                                    * current MB is bottom in the MB pair or not
///                                    ###
///               %unsigned 6  blkId                     
///                                    ###
///                                    * legal range = 0~37
///                                    ###
///                                    : max                      0x25
///                                                 ###
///                                                 * maximum value of blkId
///                                                 ###
///               %%        23         # Stuffing bits...
///     @ 0x0000C B_Out                (P)
///               %unsigned 1  isAvail                   
///                                    ###
///                                    * neighbor B is available or not
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00010 C_In                 (P)
///               %unsigned 1  mbAvailB                  
///                                    ###
///                                    * neighbor MB B is available or not
///                                    ###
///               %unsigned 1  mbAvailC                  
///                                    ###
///                                    * neighbor MB C is available or not
///                                    ###
///               %unsigned 1  mbFieldX                  
///                                    ###
///                                    * current MB is field coded or not
///                                    ###
///               %unsigned 1  isBotMb                   
///                                    ###
///                                    * current MB is bottom in the MB pair or not
///                                    ###
///               %unsigned 6  blkId                     
///                                    ###
///                                    * legal range = 0~37
///                                    ###
///                                    : max                      0x25
///                                                 ###
///                                                 * maximum value of blkId
///                                                 ###
///               %%        22         # Stuffing bits...
///     @ 0x00014 C_Out                (P)
///               %unsigned 1  isAvail                   
///                                    ###
///                                    * neighbor C is available or not
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00018 D_In                 (P)
///               %unsigned 1  mbAvailA                  
///                                    ###
///                                    * neighbor MB A is available or not
///                                    ###
///               %unsigned 1  mbAvailB                  
///                                    ###
///                                    * neighbor MB B is available or not
///                                    ###
///               %unsigned 1  mbAvailD                  
///                                    ###
///                                    * neighbor MB D is available or not
///                                    ###
///               %unsigned 1  mbFieldX                  
///                                    ###
///                                    * current MB is field coded or not
///                                    ###
///               %unsigned 1  isBotMb                   
///                                    ###
///                                    * current MB is bottom in the MB pair or not
///                                    ###
///               %unsigned 6  blkId                     
///                                    ###
///                                    * legal range = 0~37
///                                    ###
///                                    : max                      0x25
///                                                 ###
///                                                 * maximum value of blkId
///                                                 ###
///               %%        21         # Stuffing bits...
///     @ 0x0001C D_Out                (P)
///               %unsigned 1  isAvail                   
///                                    ###
///                                    * context address for neighbor D
///                                    ###
///               %%        31         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      32B, bits:      43b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_AvailTbl_Mbaff
#define h_AvailTbl_Mbaff (){}

    #define     RA_AvailTbl_Mbaff_A_In                         0x0000

    #define     BA_AvailTbl_Mbaff_A_In_mbAvailA                0x0000
    #define     B16AvailTbl_Mbaff_A_In_mbAvailA                0x0000
    #define   LSb32AvailTbl_Mbaff_A_In_mbAvailA                   0
    #define   LSb16AvailTbl_Mbaff_A_In_mbAvailA                   0
    #define       bAvailTbl_Mbaff_A_In_mbAvailA                1
    #define   MSK32AvailTbl_Mbaff_A_In_mbAvailA                   0x00000001

    #define     BA_AvailTbl_Mbaff_A_In_mbFieldX                0x0000
    #define     B16AvailTbl_Mbaff_A_In_mbFieldX                0x0000
    #define   LSb32AvailTbl_Mbaff_A_In_mbFieldX                   1
    #define   LSb16AvailTbl_Mbaff_A_In_mbFieldX                   1
    #define       bAvailTbl_Mbaff_A_In_mbFieldX                1
    #define   MSK32AvailTbl_Mbaff_A_In_mbFieldX                   0x00000002

    #define     BA_AvailTbl_Mbaff_A_In_isBotMb                 0x0000
    #define     B16AvailTbl_Mbaff_A_In_isBotMb                 0x0000
    #define   LSb32AvailTbl_Mbaff_A_In_isBotMb                    2
    #define   LSb16AvailTbl_Mbaff_A_In_isBotMb                    2
    #define       bAvailTbl_Mbaff_A_In_isBotMb                 1
    #define   MSK32AvailTbl_Mbaff_A_In_isBotMb                    0x00000004

    #define     BA_AvailTbl_Mbaff_A_In_blkId                   0x0000
    #define     B16AvailTbl_Mbaff_A_In_blkId                   0x0000
    #define   LSb32AvailTbl_Mbaff_A_In_blkId                      3
    #define   LSb16AvailTbl_Mbaff_A_In_blkId                      3
    #define       bAvailTbl_Mbaff_A_In_blkId                   6
    #define   MSK32AvailTbl_Mbaff_A_In_blkId                      0x000001F8
    #define        AvailTbl_Mbaff_A_In_blkId_max                            0x25
    ///////////////////////////////////////////////////////////
    #define     RA_AvailTbl_Mbaff_A_Out                        0x0004

    #define     BA_AvailTbl_Mbaff_A_Out_isAvail                0x0004
    #define     B16AvailTbl_Mbaff_A_Out_isAvail                0x0004
    #define   LSb32AvailTbl_Mbaff_A_Out_isAvail                   0
    #define   LSb16AvailTbl_Mbaff_A_Out_isAvail                   0
    #define       bAvailTbl_Mbaff_A_Out_isAvail                1
    #define   MSK32AvailTbl_Mbaff_A_Out_isAvail                   0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_AvailTbl_Mbaff_B_In                         0x0008

    #define     BA_AvailTbl_Mbaff_B_In_mbAvailB                0x0008
    #define     B16AvailTbl_Mbaff_B_In_mbAvailB                0x0008
    #define   LSb32AvailTbl_Mbaff_B_In_mbAvailB                   0
    #define   LSb16AvailTbl_Mbaff_B_In_mbAvailB                   0
    #define       bAvailTbl_Mbaff_B_In_mbAvailB                1
    #define   MSK32AvailTbl_Mbaff_B_In_mbAvailB                   0x00000001

    #define     BA_AvailTbl_Mbaff_B_In_mbFieldX                0x0008
    #define     B16AvailTbl_Mbaff_B_In_mbFieldX                0x0008
    #define   LSb32AvailTbl_Mbaff_B_In_mbFieldX                   1
    #define   LSb16AvailTbl_Mbaff_B_In_mbFieldX                   1
    #define       bAvailTbl_Mbaff_B_In_mbFieldX                1
    #define   MSK32AvailTbl_Mbaff_B_In_mbFieldX                   0x00000002

    #define     BA_AvailTbl_Mbaff_B_In_isBotMb                 0x0008
    #define     B16AvailTbl_Mbaff_B_In_isBotMb                 0x0008
    #define   LSb32AvailTbl_Mbaff_B_In_isBotMb                    2
    #define   LSb16AvailTbl_Mbaff_B_In_isBotMb                    2
    #define       bAvailTbl_Mbaff_B_In_isBotMb                 1
    #define   MSK32AvailTbl_Mbaff_B_In_isBotMb                    0x00000004

    #define     BA_AvailTbl_Mbaff_B_In_blkId                   0x0008
    #define     B16AvailTbl_Mbaff_B_In_blkId                   0x0008
    #define   LSb32AvailTbl_Mbaff_B_In_blkId                      3
    #define   LSb16AvailTbl_Mbaff_B_In_blkId                      3
    #define       bAvailTbl_Mbaff_B_In_blkId                   6
    #define   MSK32AvailTbl_Mbaff_B_In_blkId                      0x000001F8
    #define        AvailTbl_Mbaff_B_In_blkId_max                            0x25
    ///////////////////////////////////////////////////////////
    #define     RA_AvailTbl_Mbaff_B_Out                        0x000C

    #define     BA_AvailTbl_Mbaff_B_Out_isAvail                0x000C
    #define     B16AvailTbl_Mbaff_B_Out_isAvail                0x000C
    #define   LSb32AvailTbl_Mbaff_B_Out_isAvail                   0
    #define   LSb16AvailTbl_Mbaff_B_Out_isAvail                   0
    #define       bAvailTbl_Mbaff_B_Out_isAvail                1
    #define   MSK32AvailTbl_Mbaff_B_Out_isAvail                   0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_AvailTbl_Mbaff_C_In                         0x0010

    #define     BA_AvailTbl_Mbaff_C_In_mbAvailB                0x0010
    #define     B16AvailTbl_Mbaff_C_In_mbAvailB                0x0010
    #define   LSb32AvailTbl_Mbaff_C_In_mbAvailB                   0
    #define   LSb16AvailTbl_Mbaff_C_In_mbAvailB                   0
    #define       bAvailTbl_Mbaff_C_In_mbAvailB                1
    #define   MSK32AvailTbl_Mbaff_C_In_mbAvailB                   0x00000001

    #define     BA_AvailTbl_Mbaff_C_In_mbAvailC                0x0010
    #define     B16AvailTbl_Mbaff_C_In_mbAvailC                0x0010
    #define   LSb32AvailTbl_Mbaff_C_In_mbAvailC                   1
    #define   LSb16AvailTbl_Mbaff_C_In_mbAvailC                   1
    #define       bAvailTbl_Mbaff_C_In_mbAvailC                1
    #define   MSK32AvailTbl_Mbaff_C_In_mbAvailC                   0x00000002

    #define     BA_AvailTbl_Mbaff_C_In_mbFieldX                0x0010
    #define     B16AvailTbl_Mbaff_C_In_mbFieldX                0x0010
    #define   LSb32AvailTbl_Mbaff_C_In_mbFieldX                   2
    #define   LSb16AvailTbl_Mbaff_C_In_mbFieldX                   2
    #define       bAvailTbl_Mbaff_C_In_mbFieldX                1
    #define   MSK32AvailTbl_Mbaff_C_In_mbFieldX                   0x00000004

    #define     BA_AvailTbl_Mbaff_C_In_isBotMb                 0x0010
    #define     B16AvailTbl_Mbaff_C_In_isBotMb                 0x0010
    #define   LSb32AvailTbl_Mbaff_C_In_isBotMb                    3
    #define   LSb16AvailTbl_Mbaff_C_In_isBotMb                    3
    #define       bAvailTbl_Mbaff_C_In_isBotMb                 1
    #define   MSK32AvailTbl_Mbaff_C_In_isBotMb                    0x00000008

    #define     BA_AvailTbl_Mbaff_C_In_blkId                   0x0010
    #define     B16AvailTbl_Mbaff_C_In_blkId                   0x0010
    #define   LSb32AvailTbl_Mbaff_C_In_blkId                      4
    #define   LSb16AvailTbl_Mbaff_C_In_blkId                      4
    #define       bAvailTbl_Mbaff_C_In_blkId                   6
    #define   MSK32AvailTbl_Mbaff_C_In_blkId                      0x000003F0
    #define        AvailTbl_Mbaff_C_In_blkId_max                            0x25
    ///////////////////////////////////////////////////////////
    #define     RA_AvailTbl_Mbaff_C_Out                        0x0014

    #define     BA_AvailTbl_Mbaff_C_Out_isAvail                0x0014
    #define     B16AvailTbl_Mbaff_C_Out_isAvail                0x0014
    #define   LSb32AvailTbl_Mbaff_C_Out_isAvail                   0
    #define   LSb16AvailTbl_Mbaff_C_Out_isAvail                   0
    #define       bAvailTbl_Mbaff_C_Out_isAvail                1
    #define   MSK32AvailTbl_Mbaff_C_Out_isAvail                   0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_AvailTbl_Mbaff_D_In                         0x0018

    #define     BA_AvailTbl_Mbaff_D_In_mbAvailA                0x0018
    #define     B16AvailTbl_Mbaff_D_In_mbAvailA                0x0018
    #define   LSb32AvailTbl_Mbaff_D_In_mbAvailA                   0
    #define   LSb16AvailTbl_Mbaff_D_In_mbAvailA                   0
    #define       bAvailTbl_Mbaff_D_In_mbAvailA                1
    #define   MSK32AvailTbl_Mbaff_D_In_mbAvailA                   0x00000001

    #define     BA_AvailTbl_Mbaff_D_In_mbAvailB                0x0018
    #define     B16AvailTbl_Mbaff_D_In_mbAvailB                0x0018
    #define   LSb32AvailTbl_Mbaff_D_In_mbAvailB                   1
    #define   LSb16AvailTbl_Mbaff_D_In_mbAvailB                   1
    #define       bAvailTbl_Mbaff_D_In_mbAvailB                1
    #define   MSK32AvailTbl_Mbaff_D_In_mbAvailB                   0x00000002

    #define     BA_AvailTbl_Mbaff_D_In_mbAvailD                0x0018
    #define     B16AvailTbl_Mbaff_D_In_mbAvailD                0x0018
    #define   LSb32AvailTbl_Mbaff_D_In_mbAvailD                   2
    #define   LSb16AvailTbl_Mbaff_D_In_mbAvailD                   2
    #define       bAvailTbl_Mbaff_D_In_mbAvailD                1
    #define   MSK32AvailTbl_Mbaff_D_In_mbAvailD                   0x00000004

    #define     BA_AvailTbl_Mbaff_D_In_mbFieldX                0x0018
    #define     B16AvailTbl_Mbaff_D_In_mbFieldX                0x0018
    #define   LSb32AvailTbl_Mbaff_D_In_mbFieldX                   3
    #define   LSb16AvailTbl_Mbaff_D_In_mbFieldX                   3
    #define       bAvailTbl_Mbaff_D_In_mbFieldX                1
    #define   MSK32AvailTbl_Mbaff_D_In_mbFieldX                   0x00000008

    #define     BA_AvailTbl_Mbaff_D_In_isBotMb                 0x0018
    #define     B16AvailTbl_Mbaff_D_In_isBotMb                 0x0018
    #define   LSb32AvailTbl_Mbaff_D_In_isBotMb                    4
    #define   LSb16AvailTbl_Mbaff_D_In_isBotMb                    4
    #define       bAvailTbl_Mbaff_D_In_isBotMb                 1
    #define   MSK32AvailTbl_Mbaff_D_In_isBotMb                    0x00000010

    #define     BA_AvailTbl_Mbaff_D_In_blkId                   0x0018
    #define     B16AvailTbl_Mbaff_D_In_blkId                   0x0018
    #define   LSb32AvailTbl_Mbaff_D_In_blkId                      5
    #define   LSb16AvailTbl_Mbaff_D_In_blkId                      5
    #define       bAvailTbl_Mbaff_D_In_blkId                   6
    #define   MSK32AvailTbl_Mbaff_D_In_blkId                      0x000007E0
    #define        AvailTbl_Mbaff_D_In_blkId_max                            0x25
    ///////////////////////////////////////////////////////////
    #define     RA_AvailTbl_Mbaff_D_Out                        0x001C

    #define     BA_AvailTbl_Mbaff_D_Out_isAvail                0x001C
    #define     B16AvailTbl_Mbaff_D_Out_isAvail                0x001C
    #define   LSb32AvailTbl_Mbaff_D_Out_isAvail                   0
    #define   LSb16AvailTbl_Mbaff_D_Out_isAvail                   0
    #define       bAvailTbl_Mbaff_D_Out_isAvail                1
    #define   MSK32AvailTbl_Mbaff_D_Out_isAvail                   0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_AvailTbl_Mbaff {
    ///////////////////////////////////////////////////////////
    #define   GET32AvailTbl_Mbaff_A_In_mbAvailA(r32)           _BFGET_(r32, 0, 0)
    #define   SET32AvailTbl_Mbaff_A_In_mbAvailA(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16AvailTbl_Mbaff_A_In_mbAvailA(r16)           _BFGET_(r16, 0, 0)
    #define   SET16AvailTbl_Mbaff_A_In_mbAvailA(r16,v)         _BFSET_(r16, 0, 0,v)

    #define   GET32AvailTbl_Mbaff_A_In_mbFieldX(r32)           _BFGET_(r32, 1, 1)
    #define   SET32AvailTbl_Mbaff_A_In_mbFieldX(r32,v)         _BFSET_(r32, 1, 1,v)
    #define   GET16AvailTbl_Mbaff_A_In_mbFieldX(r16)           _BFGET_(r16, 1, 1)
    #define   SET16AvailTbl_Mbaff_A_In_mbFieldX(r16,v)         _BFSET_(r16, 1, 1,v)

    #define   GET32AvailTbl_Mbaff_A_In_isBotMb(r32)            _BFGET_(r32, 2, 2)
    #define   SET32AvailTbl_Mbaff_A_In_isBotMb(r32,v)          _BFSET_(r32, 2, 2,v)
    #define   GET16AvailTbl_Mbaff_A_In_isBotMb(r16)            _BFGET_(r16, 2, 2)
    #define   SET16AvailTbl_Mbaff_A_In_isBotMb(r16,v)          _BFSET_(r16, 2, 2,v)

    #define   GET32AvailTbl_Mbaff_A_In_blkId(r32)              _BFGET_(r32, 8, 3)
    #define   SET32AvailTbl_Mbaff_A_In_blkId(r32,v)            _BFSET_(r32, 8, 3,v)
    #define   GET16AvailTbl_Mbaff_A_In_blkId(r16)              _BFGET_(r16, 8, 3)
    #define   SET16AvailTbl_Mbaff_A_In_blkId(r16,v)            _BFSET_(r16, 8, 3,v)

    #define     w32AvailTbl_Mbaff_A_In                         {\
            UNSG32 uA_In_mbAvailA                              :  1;\
            UNSG32 uA_In_mbFieldX                              :  1;\
            UNSG32 uA_In_isBotMb                               :  1;\
            UNSG32 uA_In_blkId                                 :  6;\
            UNSG32 RSVDx0_b9                                   : 23;\
          }
    union { UNSG32 u32AvailTbl_Mbaff_A_In;
            struct w32AvailTbl_Mbaff_A_In;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AvailTbl_Mbaff_A_Out_isAvail(r32)           _BFGET_(r32, 0, 0)
    #define   SET32AvailTbl_Mbaff_A_Out_isAvail(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16AvailTbl_Mbaff_A_Out_isAvail(r16)           _BFGET_(r16, 0, 0)
    #define   SET16AvailTbl_Mbaff_A_Out_isAvail(r16,v)         _BFSET_(r16, 0, 0,v)

    #define     w32AvailTbl_Mbaff_A_Out                        {\
            UNSG32 uA_Out_isAvail                              :  1;\
            UNSG32 RSVDx4_b1                                   : 31;\
          }
    union { UNSG32 u32AvailTbl_Mbaff_A_Out;
            struct w32AvailTbl_Mbaff_A_Out;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AvailTbl_Mbaff_B_In_mbAvailB(r32)           _BFGET_(r32, 0, 0)
    #define   SET32AvailTbl_Mbaff_B_In_mbAvailB(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16AvailTbl_Mbaff_B_In_mbAvailB(r16)           _BFGET_(r16, 0, 0)
    #define   SET16AvailTbl_Mbaff_B_In_mbAvailB(r16,v)         _BFSET_(r16, 0, 0,v)

    #define   GET32AvailTbl_Mbaff_B_In_mbFieldX(r32)           _BFGET_(r32, 1, 1)
    #define   SET32AvailTbl_Mbaff_B_In_mbFieldX(r32,v)         _BFSET_(r32, 1, 1,v)
    #define   GET16AvailTbl_Mbaff_B_In_mbFieldX(r16)           _BFGET_(r16, 1, 1)
    #define   SET16AvailTbl_Mbaff_B_In_mbFieldX(r16,v)         _BFSET_(r16, 1, 1,v)

    #define   GET32AvailTbl_Mbaff_B_In_isBotMb(r32)            _BFGET_(r32, 2, 2)
    #define   SET32AvailTbl_Mbaff_B_In_isBotMb(r32,v)          _BFSET_(r32, 2, 2,v)
    #define   GET16AvailTbl_Mbaff_B_In_isBotMb(r16)            _BFGET_(r16, 2, 2)
    #define   SET16AvailTbl_Mbaff_B_In_isBotMb(r16,v)          _BFSET_(r16, 2, 2,v)

    #define   GET32AvailTbl_Mbaff_B_In_blkId(r32)              _BFGET_(r32, 8, 3)
    #define   SET32AvailTbl_Mbaff_B_In_blkId(r32,v)            _BFSET_(r32, 8, 3,v)
    #define   GET16AvailTbl_Mbaff_B_In_blkId(r16)              _BFGET_(r16, 8, 3)
    #define   SET16AvailTbl_Mbaff_B_In_blkId(r16,v)            _BFSET_(r16, 8, 3,v)

    #define     w32AvailTbl_Mbaff_B_In                         {\
            UNSG32 uB_In_mbAvailB                              :  1;\
            UNSG32 uB_In_mbFieldX                              :  1;\
            UNSG32 uB_In_isBotMb                               :  1;\
            UNSG32 uB_In_blkId                                 :  6;\
            UNSG32 RSVDx8_b9                                   : 23;\
          }
    union { UNSG32 u32AvailTbl_Mbaff_B_In;
            struct w32AvailTbl_Mbaff_B_In;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AvailTbl_Mbaff_B_Out_isAvail(r32)           _BFGET_(r32, 0, 0)
    #define   SET32AvailTbl_Mbaff_B_Out_isAvail(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16AvailTbl_Mbaff_B_Out_isAvail(r16)           _BFGET_(r16, 0, 0)
    #define   SET16AvailTbl_Mbaff_B_Out_isAvail(r16,v)         _BFSET_(r16, 0, 0,v)

    #define     w32AvailTbl_Mbaff_B_Out                        {\
            UNSG32 uB_Out_isAvail                              :  1;\
            UNSG32 RSVDxC_b1                                   : 31;\
          }
    union { UNSG32 u32AvailTbl_Mbaff_B_Out;
            struct w32AvailTbl_Mbaff_B_Out;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AvailTbl_Mbaff_C_In_mbAvailB(r32)           _BFGET_(r32, 0, 0)
    #define   SET32AvailTbl_Mbaff_C_In_mbAvailB(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16AvailTbl_Mbaff_C_In_mbAvailB(r16)           _BFGET_(r16, 0, 0)
    #define   SET16AvailTbl_Mbaff_C_In_mbAvailB(r16,v)         _BFSET_(r16, 0, 0,v)

    #define   GET32AvailTbl_Mbaff_C_In_mbAvailC(r32)           _BFGET_(r32, 1, 1)
    #define   SET32AvailTbl_Mbaff_C_In_mbAvailC(r32,v)         _BFSET_(r32, 1, 1,v)
    #define   GET16AvailTbl_Mbaff_C_In_mbAvailC(r16)           _BFGET_(r16, 1, 1)
    #define   SET16AvailTbl_Mbaff_C_In_mbAvailC(r16,v)         _BFSET_(r16, 1, 1,v)

    #define   GET32AvailTbl_Mbaff_C_In_mbFieldX(r32)           _BFGET_(r32, 2, 2)
    #define   SET32AvailTbl_Mbaff_C_In_mbFieldX(r32,v)         _BFSET_(r32, 2, 2,v)
    #define   GET16AvailTbl_Mbaff_C_In_mbFieldX(r16)           _BFGET_(r16, 2, 2)
    #define   SET16AvailTbl_Mbaff_C_In_mbFieldX(r16,v)         _BFSET_(r16, 2, 2,v)

    #define   GET32AvailTbl_Mbaff_C_In_isBotMb(r32)            _BFGET_(r32, 3, 3)
    #define   SET32AvailTbl_Mbaff_C_In_isBotMb(r32,v)          _BFSET_(r32, 3, 3,v)
    #define   GET16AvailTbl_Mbaff_C_In_isBotMb(r16)            _BFGET_(r16, 3, 3)
    #define   SET16AvailTbl_Mbaff_C_In_isBotMb(r16,v)          _BFSET_(r16, 3, 3,v)

    #define   GET32AvailTbl_Mbaff_C_In_blkId(r32)              _BFGET_(r32, 9, 4)
    #define   SET32AvailTbl_Mbaff_C_In_blkId(r32,v)            _BFSET_(r32, 9, 4,v)
    #define   GET16AvailTbl_Mbaff_C_In_blkId(r16)              _BFGET_(r16, 9, 4)
    #define   SET16AvailTbl_Mbaff_C_In_blkId(r16,v)            _BFSET_(r16, 9, 4,v)

    #define     w32AvailTbl_Mbaff_C_In                         {\
            UNSG32 uC_In_mbAvailB                              :  1;\
            UNSG32 uC_In_mbAvailC                              :  1;\
            UNSG32 uC_In_mbFieldX                              :  1;\
            UNSG32 uC_In_isBotMb                               :  1;\
            UNSG32 uC_In_blkId                                 :  6;\
            UNSG32 RSVDx10_b10                                 : 22;\
          }
    union { UNSG32 u32AvailTbl_Mbaff_C_In;
            struct w32AvailTbl_Mbaff_C_In;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AvailTbl_Mbaff_C_Out_isAvail(r32)           _BFGET_(r32, 0, 0)
    #define   SET32AvailTbl_Mbaff_C_Out_isAvail(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16AvailTbl_Mbaff_C_Out_isAvail(r16)           _BFGET_(r16, 0, 0)
    #define   SET16AvailTbl_Mbaff_C_Out_isAvail(r16,v)         _BFSET_(r16, 0, 0,v)

    #define     w32AvailTbl_Mbaff_C_Out                        {\
            UNSG32 uC_Out_isAvail                              :  1;\
            UNSG32 RSVDx14_b1                                  : 31;\
          }
    union { UNSG32 u32AvailTbl_Mbaff_C_Out;
            struct w32AvailTbl_Mbaff_C_Out;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AvailTbl_Mbaff_D_In_mbAvailA(r32)           _BFGET_(r32, 0, 0)
    #define   SET32AvailTbl_Mbaff_D_In_mbAvailA(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16AvailTbl_Mbaff_D_In_mbAvailA(r16)           _BFGET_(r16, 0, 0)
    #define   SET16AvailTbl_Mbaff_D_In_mbAvailA(r16,v)         _BFSET_(r16, 0, 0,v)

    #define   GET32AvailTbl_Mbaff_D_In_mbAvailB(r32)           _BFGET_(r32, 1, 1)
    #define   SET32AvailTbl_Mbaff_D_In_mbAvailB(r32,v)         _BFSET_(r32, 1, 1,v)
    #define   GET16AvailTbl_Mbaff_D_In_mbAvailB(r16)           _BFGET_(r16, 1, 1)
    #define   SET16AvailTbl_Mbaff_D_In_mbAvailB(r16,v)         _BFSET_(r16, 1, 1,v)

    #define   GET32AvailTbl_Mbaff_D_In_mbAvailD(r32)           _BFGET_(r32, 2, 2)
    #define   SET32AvailTbl_Mbaff_D_In_mbAvailD(r32,v)         _BFSET_(r32, 2, 2,v)
    #define   GET16AvailTbl_Mbaff_D_In_mbAvailD(r16)           _BFGET_(r16, 2, 2)
    #define   SET16AvailTbl_Mbaff_D_In_mbAvailD(r16,v)         _BFSET_(r16, 2, 2,v)

    #define   GET32AvailTbl_Mbaff_D_In_mbFieldX(r32)           _BFGET_(r32, 3, 3)
    #define   SET32AvailTbl_Mbaff_D_In_mbFieldX(r32,v)         _BFSET_(r32, 3, 3,v)
    #define   GET16AvailTbl_Mbaff_D_In_mbFieldX(r16)           _BFGET_(r16, 3, 3)
    #define   SET16AvailTbl_Mbaff_D_In_mbFieldX(r16,v)         _BFSET_(r16, 3, 3,v)

    #define   GET32AvailTbl_Mbaff_D_In_isBotMb(r32)            _BFGET_(r32, 4, 4)
    #define   SET32AvailTbl_Mbaff_D_In_isBotMb(r32,v)          _BFSET_(r32, 4, 4,v)
    #define   GET16AvailTbl_Mbaff_D_In_isBotMb(r16)            _BFGET_(r16, 4, 4)
    #define   SET16AvailTbl_Mbaff_D_In_isBotMb(r16,v)          _BFSET_(r16, 4, 4,v)

    #define   GET32AvailTbl_Mbaff_D_In_blkId(r32)              _BFGET_(r32,10, 5)
    #define   SET32AvailTbl_Mbaff_D_In_blkId(r32,v)            _BFSET_(r32,10, 5,v)
    #define   GET16AvailTbl_Mbaff_D_In_blkId(r16)              _BFGET_(r16,10, 5)
    #define   SET16AvailTbl_Mbaff_D_In_blkId(r16,v)            _BFSET_(r16,10, 5,v)

    #define     w32AvailTbl_Mbaff_D_In                         {\
            UNSG32 uD_In_mbAvailA                              :  1;\
            UNSG32 uD_In_mbAvailB                              :  1;\
            UNSG32 uD_In_mbAvailD                              :  1;\
            UNSG32 uD_In_mbFieldX                              :  1;\
            UNSG32 uD_In_isBotMb                               :  1;\
            UNSG32 uD_In_blkId                                 :  6;\
            UNSG32 RSVDx18_b11                                 : 21;\
          }
    union { UNSG32 u32AvailTbl_Mbaff_D_In;
            struct w32AvailTbl_Mbaff_D_In;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AvailTbl_Mbaff_D_Out_isAvail(r32)           _BFGET_(r32, 0, 0)
    #define   SET32AvailTbl_Mbaff_D_Out_isAvail(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16AvailTbl_Mbaff_D_Out_isAvail(r16)           _BFGET_(r16, 0, 0)
    #define   SET16AvailTbl_Mbaff_D_Out_isAvail(r16,v)         _BFSET_(r16, 0, 0,v)

    #define     w32AvailTbl_Mbaff_D_Out                        {\
            UNSG32 uD_Out_isAvail                              :  1;\
            UNSG32 RSVDx1C_b1                                  : 31;\
          }
    union { UNSG32 u32AvailTbl_Mbaff_D_Out;
            struct w32AvailTbl_Mbaff_D_Out;
          };
    ///////////////////////////////////////////////////////////
    } SIE_AvailTbl_Mbaff;

    typedef union  T32AvailTbl_Mbaff_A_In
          { UNSG32 u32;
            struct w32AvailTbl_Mbaff_A_In;
                 } T32AvailTbl_Mbaff_A_In;
    typedef union  T32AvailTbl_Mbaff_A_Out
          { UNSG32 u32;
            struct w32AvailTbl_Mbaff_A_Out;
                 } T32AvailTbl_Mbaff_A_Out;
    typedef union  T32AvailTbl_Mbaff_B_In
          { UNSG32 u32;
            struct w32AvailTbl_Mbaff_B_In;
                 } T32AvailTbl_Mbaff_B_In;
    typedef union  T32AvailTbl_Mbaff_B_Out
          { UNSG32 u32;
            struct w32AvailTbl_Mbaff_B_Out;
                 } T32AvailTbl_Mbaff_B_Out;
    typedef union  T32AvailTbl_Mbaff_C_In
          { UNSG32 u32;
            struct w32AvailTbl_Mbaff_C_In;
                 } T32AvailTbl_Mbaff_C_In;
    typedef union  T32AvailTbl_Mbaff_C_Out
          { UNSG32 u32;
            struct w32AvailTbl_Mbaff_C_Out;
                 } T32AvailTbl_Mbaff_C_Out;
    typedef union  T32AvailTbl_Mbaff_D_In
          { UNSG32 u32;
            struct w32AvailTbl_Mbaff_D_In;
                 } T32AvailTbl_Mbaff_D_In;
    typedef union  T32AvailTbl_Mbaff_D_Out
          { UNSG32 u32;
            struct w32AvailTbl_Mbaff_D_Out;
                 } T32AvailTbl_Mbaff_D_Out;
    ///////////////////////////////////////////////////////////

    typedef union  TAvailTbl_Mbaff_A_In
          { UNSG32 u32[1];
            struct {
            struct w32AvailTbl_Mbaff_A_In;
                   };
                 } TAvailTbl_Mbaff_A_In;
    typedef union  TAvailTbl_Mbaff_A_Out
          { UNSG32 u32[1];
            struct {
            struct w32AvailTbl_Mbaff_A_Out;
                   };
                 } TAvailTbl_Mbaff_A_Out;
    typedef union  TAvailTbl_Mbaff_B_In
          { UNSG32 u32[1];
            struct {
            struct w32AvailTbl_Mbaff_B_In;
                   };
                 } TAvailTbl_Mbaff_B_In;
    typedef union  TAvailTbl_Mbaff_B_Out
          { UNSG32 u32[1];
            struct {
            struct w32AvailTbl_Mbaff_B_Out;
                   };
                 } TAvailTbl_Mbaff_B_Out;
    typedef union  TAvailTbl_Mbaff_C_In
          { UNSG32 u32[1];
            struct {
            struct w32AvailTbl_Mbaff_C_In;
                   };
                 } TAvailTbl_Mbaff_C_In;
    typedef union  TAvailTbl_Mbaff_C_Out
          { UNSG32 u32[1];
            struct {
            struct w32AvailTbl_Mbaff_C_Out;
                   };
                 } TAvailTbl_Mbaff_C_Out;
    typedef union  TAvailTbl_Mbaff_D_In
          { UNSG32 u32[1];
            struct {
            struct w32AvailTbl_Mbaff_D_In;
                   };
                 } TAvailTbl_Mbaff_D_In;
    typedef union  TAvailTbl_Mbaff_D_Out
          { UNSG32 u32[1];
            struct {
            struct w32AvailTbl_Mbaff_D_Out;
                   };
                 } TAvailTbl_Mbaff_D_Out;

    ///////////////////////////////////////////////////////////
     SIGN32 AvailTbl_Mbaff_drvrd(SIE_AvailTbl_Mbaff *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 AvailTbl_Mbaff_drvwr(SIE_AvailTbl_Mbaff *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void AvailTbl_Mbaff_reset(SIE_AvailTbl_Mbaff *p);
     SIGN32 AvailTbl_Mbaff_cmp  (SIE_AvailTbl_Mbaff *p, SIE_AvailTbl_Mbaff *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define AvailTbl_Mbaff_check(p,pie,pfx,hLOG) AvailTbl_Mbaff_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define AvailTbl_Mbaff_print(p,    pfx,hLOG) AvailTbl_Mbaff_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: AvailTbl_Mbaff
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE NeighborX               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 8  Loc                       
///                                    : NA                        0x0
///                                                 ###
///                                                 * Current block location in MBCTXQ
///                                                 ###
///               %unsigned 4  RSVD                      
///                                    ###
///                                    * Reserved: 0
///                                    ###
///               %unsigned 1  A                         
///                                    ###
///                                    * Left macroblock/block availability
///                                    ###
///               %unsigned 1  B                         
///                                    ###
///                                    * Upper macroblock/block availability
///                                    ###
///               %unsigned 1  C                         
///                                    ###
///                                    * Upper-right macroblock/block availability
///                                    ###
///               %unsigned 1  D                         
///                                    ###
///                                    * Upper-left macroblock/block availability
///                                    * End of NeighborX
///                                    ###
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_NeighborX
#define h_NeighborX (){}

    #define     BA_NeighborX_Loc                               0x0000
    #define     B16NeighborX_Loc                               0x0000
    #define   LSb32NeighborX_Loc                                  0
    #define   LSb16NeighborX_Loc                                  0
    #define       bNeighborX_Loc                               8
    #define   MSK32NeighborX_Loc                                  0x000000FF
    #define        NeighborX_Loc_NA                                         0x0

    #define     BA_NeighborX_RSVD                              0x0001
    #define     B16NeighborX_RSVD                              0x0000
    #define   LSb32NeighborX_RSVD                                 8
    #define   LSb16NeighborX_RSVD                                 8
    #define       bNeighborX_RSVD                              4
    #define   MSK32NeighborX_RSVD                                 0x00000F00

    #define     BA_NeighborX_A                                 0x0001
    #define     B16NeighborX_A                                 0x0000
    #define   LSb32NeighborX_A                                    12
    #define   LSb16NeighborX_A                                    12
    #define       bNeighborX_A                                 1
    #define   MSK32NeighborX_A                                    0x00001000

    #define     BA_NeighborX_B                                 0x0001
    #define     B16NeighborX_B                                 0x0000
    #define   LSb32NeighborX_B                                    13
    #define   LSb16NeighborX_B                                    13
    #define       bNeighborX_B                                 1
    #define   MSK32NeighborX_B                                    0x00002000

    #define     BA_NeighborX_C                                 0x0001
    #define     B16NeighborX_C                                 0x0000
    #define   LSb32NeighborX_C                                    14
    #define   LSb16NeighborX_C                                    14
    #define       bNeighborX_C                                 1
    #define   MSK32NeighborX_C                                    0x00004000

    #define     BA_NeighborX_D                                 0x0001
    #define     B16NeighborX_D                                 0x0000
    #define   LSb32NeighborX_D                                    15
    #define   LSb16NeighborX_D                                    15
    #define       bNeighborX_D                                 1
    #define   MSK32NeighborX_D                                    0x00008000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_NeighborX {
    ///////////////////////////////////////////////////////////
    #define   GET32NeighborX_Loc(r32)                          _BFGET_(r32, 7, 0)
    #define   SET32NeighborX_Loc(r32,v)                        _BFSET_(r32, 7, 0,v)
    #define   GET16NeighborX_Loc(r16)                          _BFGET_(r16, 7, 0)
    #define   SET16NeighborX_Loc(r16,v)                        _BFSET_(r16, 7, 0,v)

    #define   GET32NeighborX_RSVD(r32)                         _BFGET_(r32,11, 8)
    #define   SET32NeighborX_RSVD(r32,v)                       _BFSET_(r32,11, 8,v)
    #define   GET16NeighborX_RSVD(r16)                         _BFGET_(r16,11, 8)
    #define   SET16NeighborX_RSVD(r16,v)                       _BFSET_(r16,11, 8,v)

    #define   GET32NeighborX_A(r32)                            _BFGET_(r32,12,12)
    #define   SET32NeighborX_A(r32,v)                          _BFSET_(r32,12,12,v)
    #define   GET16NeighborX_A(r16)                            _BFGET_(r16,12,12)
    #define   SET16NeighborX_A(r16,v)                          _BFSET_(r16,12,12,v)

    #define   GET32NeighborX_B(r32)                            _BFGET_(r32,13,13)
    #define   SET32NeighborX_B(r32,v)                          _BFSET_(r32,13,13,v)
    #define   GET16NeighborX_B(r16)                            _BFGET_(r16,13,13)
    #define   SET16NeighborX_B(r16,v)                          _BFSET_(r16,13,13,v)

    #define   GET32NeighborX_C(r32)                            _BFGET_(r32,14,14)
    #define   SET32NeighborX_C(r32,v)                          _BFSET_(r32,14,14,v)
    #define   GET16NeighborX_C(r16)                            _BFGET_(r16,14,14)
    #define   SET16NeighborX_C(r16,v)                          _BFSET_(r16,14,14,v)

    #define   GET32NeighborX_D(r32)                            _BFGET_(r32,15,15)
    #define   SET32NeighborX_D(r32,v)                          _BFSET_(r32,15,15,v)
    #define   GET16NeighborX_D(r16)                            _BFGET_(r16,15,15)
    #define   SET16NeighborX_D(r16,v)                          _BFSET_(r16,15,15,v)

            UNSG32 u_Loc                                       :  8;
            UNSG32 u_RSVD                                      :  4;
            UNSG32 u_A                                         :  1;
            UNSG32 u_B                                         :  1;
            UNSG32 u_C                                         :  1;
            UNSG32 u_D                                         :  1;
            UNSG32 RSVDx0_b16                                  : 16;
    ///////////////////////////////////////////////////////////
    } SIE_NeighborX;

    ///////////////////////////////////////////////////////////
     SIGN32 NeighborX_drvrd(SIE_NeighborX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 NeighborX_drvwr(SIE_NeighborX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void NeighborX_reset(SIE_NeighborX *p);
     SIGN32 NeighborX_cmp  (SIE_NeighborX *p, SIE_NeighborX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define NeighborX_check(p,pie,pfx,hLOG) NeighborX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define NeighborX_print(p,    pfx,hLOG) NeighborX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: NeighborX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE NeighborAB                               (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 8  ALoc                      
///                                    ###
///                                    * Left block location in MBCTXQ
///                                    ###
///               %unsigned 8  BLoc                      
///                                    ###
///                                    * Upper block location in MBCTXQ
///                                    * End of NeighborAB
///                                    ###
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_NeighborAB
#define h_NeighborAB (){}

    #define     BA_NeighborAB_ALoc                             0x0000
    #define     B16NeighborAB_ALoc                             0x0000
    #define   LSb32NeighborAB_ALoc                                0
    #define   LSb16NeighborAB_ALoc                                0
    #define       bNeighborAB_ALoc                             8
    #define   MSK32NeighborAB_ALoc                                0x000000FF

    #define     BA_NeighborAB_BLoc                             0x0001
    #define     B16NeighborAB_BLoc                             0x0000
    #define   LSb32NeighborAB_BLoc                                8
    #define   LSb16NeighborAB_BLoc                                8
    #define       bNeighborAB_BLoc                             8
    #define   MSK32NeighborAB_BLoc                                0x0000FF00
    ///////////////////////////////////////////////////////////

    typedef struct SIE_NeighborAB {
    ///////////////////////////////////////////////////////////
    #define   GET32NeighborAB_ALoc(r32)                        _BFGET_(r32, 7, 0)
    #define   SET32NeighborAB_ALoc(r32,v)                      _BFSET_(r32, 7, 0,v)
    #define   GET16NeighborAB_ALoc(r16)                        _BFGET_(r16, 7, 0)
    #define   SET16NeighborAB_ALoc(r16,v)                      _BFSET_(r16, 7, 0,v)

    #define   GET32NeighborAB_BLoc(r32)                        _BFGET_(r32,15, 8)
    #define   SET32NeighborAB_BLoc(r32,v)                      _BFSET_(r32,15, 8,v)
    #define   GET16NeighborAB_BLoc(r16)                        _BFGET_(r16,15, 8)
    #define   SET16NeighborAB_BLoc(r16,v)                      _BFSET_(r16,15, 8,v)

            UNSG32 u_ALoc                                      :  8;
            UNSG32 u_BLoc                                      :  8;
            UNSG32 RSVDx0_b16                                  : 16;
    ///////////////////////////////////////////////////////////
    } SIE_NeighborAB;

    ///////////////////////////////////////////////////////////
     SIGN32 NeighborAB_drvrd(SIE_NeighborAB *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 NeighborAB_drvwr(SIE_NeighborAB *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void NeighborAB_reset(SIE_NeighborAB *p);
     SIGN32 NeighborAB_cmp  (SIE_NeighborAB *p, SIE_NeighborAB *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define NeighborAB_check(p,pie,pfx,hLOG) NeighborAB_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define NeighborAB_print(p,    pfx,hLOG) NeighborAB_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: NeighborAB
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE NeighborCD                               (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 8  CLoc                      
///                                    ###
///                                    * Upper-right block location in MBCTXQ
///                                    ###
///               %unsigned 8  DLoc                      
///                                    ###
///                                    * Upper-left block location in MBCTXQ
///                                    * End of NeighborCD
///                                    ###
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_NeighborCD
#define h_NeighborCD (){}

    #define     BA_NeighborCD_CLoc                             0x0000
    #define     B16NeighborCD_CLoc                             0x0000
    #define   LSb32NeighborCD_CLoc                                0
    #define   LSb16NeighborCD_CLoc                                0
    #define       bNeighborCD_CLoc                             8
    #define   MSK32NeighborCD_CLoc                                0x000000FF

    #define     BA_NeighborCD_DLoc                             0x0001
    #define     B16NeighborCD_DLoc                             0x0000
    #define   LSb32NeighborCD_DLoc                                8
    #define   LSb16NeighborCD_DLoc                                8
    #define       bNeighborCD_DLoc                             8
    #define   MSK32NeighborCD_DLoc                                0x0000FF00
    ///////////////////////////////////////////////////////////

    typedef struct SIE_NeighborCD {
    ///////////////////////////////////////////////////////////
    #define   GET32NeighborCD_CLoc(r32)                        _BFGET_(r32, 7, 0)
    #define   SET32NeighborCD_CLoc(r32,v)                      _BFSET_(r32, 7, 0,v)
    #define   GET16NeighborCD_CLoc(r16)                        _BFGET_(r16, 7, 0)
    #define   SET16NeighborCD_CLoc(r16,v)                      _BFSET_(r16, 7, 0,v)

    #define   GET32NeighborCD_DLoc(r32)                        _BFGET_(r32,15, 8)
    #define   SET32NeighborCD_DLoc(r32,v)                      _BFSET_(r32,15, 8,v)
    #define   GET16NeighborCD_DLoc(r16)                        _BFGET_(r16,15, 8)
    #define   SET16NeighborCD_DLoc(r16,v)                      _BFSET_(r16,15, 8,v)

            UNSG32 u_CLoc                                      :  8;
            UNSG32 u_DLoc                                      :  8;
            UNSG32 RSVDx0_b16                                  : 16;
    ///////////////////////////////////////////////////////////
    } SIE_NeighborCD;

    ///////////////////////////////////////////////////////////
     SIGN32 NeighborCD_drvrd(SIE_NeighborCD *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 NeighborCD_drvwr(SIE_NeighborCD *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void NeighborCD_reset(SIE_NeighborCD *p);
     SIGN32 NeighborCD_cmp  (SIE_NeighborCD *p, SIE_NeighborCD *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define NeighborCD_check(p,pie,pfx,hLOG) NeighborCD_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define NeighborCD_print(p,    pfx,hLOG) NeighborCD_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: NeighborCD
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE DQmsg                   biu              (4,4)
///     ###
///     * dQuant message format; passed through TQ @ A64CMD
///     * [00:31]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 4  cat                       
///                                    ###
///                                    * same as NLoc.category in decHal_mbLvl.sxw.txt.txt
///                                    ###
///               %unsigned 1  rnd_off                   
///                                    ###
///                                    * 1: turn off rounding; uniform dequantization only
///                                    ###
///               %signed   5  lshift_bit                
///                                    ###
///                                    * for uniform dequantization only; signed 5-bit
///                                    ###
///               %unsigned 6  idx                       
///                                    ###
///                                    * scan index within the block
///                                    * 16-bit boundary
///                                    ###
///               %unsigned 8  qstep                     
///                                    ###
///                                    * Dequantization step, unsigned 8-bit
///                                    ###
///               %unsigned 8  qm                        
///                                    ###
///                                    * Dequantization matrix value, unsigned 8-bit
///                                    * [32:63]
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 8  dq_offset                 
///                                    ###
///                                    * Dequantization offset; for AC type only
///                                    ###
///               %unsigned 8  rsvd0                     
///                                    ###
///                                    * Not used
///                                    * 16-bit boundary
///                                    ###
///               %unsigned 16 rsvd1                     
///                                    ###
///                                    * Not used
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_DQmsg
#define h_DQmsg (){}

    #define     BA_DQmsg_cat                                   0x0000
    #define     B16DQmsg_cat                                   0x0000
    #define   LSb32DQmsg_cat                                      0
    #define   LSb16DQmsg_cat                                      0
    #define       bDQmsg_cat                                   4
    #define   MSK32DQmsg_cat                                      0x0000000F

    #define     BA_DQmsg_rnd_off                               0x0000
    #define     B16DQmsg_rnd_off                               0x0000
    #define   LSb32DQmsg_rnd_off                                  4
    #define   LSb16DQmsg_rnd_off                                  4
    #define       bDQmsg_rnd_off                               1
    #define   MSK32DQmsg_rnd_off                                  0x00000010

    #define     BA_DQmsg_lshift_bit                            0x0000
    #define     B16DQmsg_lshift_bit                            0x0000
    #define   LSb32DQmsg_lshift_bit                               5
    #define   LSb16DQmsg_lshift_bit                               5
    #define       bDQmsg_lshift_bit                            5
    #define   MSK32DQmsg_lshift_bit                               0x000003E0

    #define     BA_DQmsg_idx                                   0x0001
    #define     B16DQmsg_idx                                   0x0000
    #define   LSb32DQmsg_idx                                      10
    #define   LSb16DQmsg_idx                                      10
    #define       bDQmsg_idx                                   6
    #define   MSK32DQmsg_idx                                      0x0000FC00

    #define     BA_DQmsg_qstep                                 0x0002
    #define     B16DQmsg_qstep                                 0x0002
    #define   LSb32DQmsg_qstep                                    16
    #define   LSb16DQmsg_qstep                                    0
    #define       bDQmsg_qstep                                 8
    #define   MSK32DQmsg_qstep                                    0x00FF0000

    #define     BA_DQmsg_qm                                    0x0003
    #define     B16DQmsg_qm                                    0x0002
    #define   LSb32DQmsg_qm                                       24
    #define   LSb16DQmsg_qm                                       8
    #define       bDQmsg_qm                                    8
    #define   MSK32DQmsg_qm                                       0xFF000000
    ///////////////////////////////////////////////////////////

    #define     BA_DQmsg_dq_offset                             0x0004
    #define     B16DQmsg_dq_offset                             0x0004
    #define   LSb32DQmsg_dq_offset                                0
    #define   LSb16DQmsg_dq_offset                                0
    #define       bDQmsg_dq_offset                             8
    #define   MSK32DQmsg_dq_offset                                0x000000FF

    #define     BA_DQmsg_rsvd0                                 0x0005
    #define     B16DQmsg_rsvd0                                 0x0004
    #define   LSb32DQmsg_rsvd0                                    8
    #define   LSb16DQmsg_rsvd0                                    8
    #define       bDQmsg_rsvd0                                 8
    #define   MSK32DQmsg_rsvd0                                    0x0000FF00

    #define     BA_DQmsg_rsvd1                                 0x0006
    #define     B16DQmsg_rsvd1                                 0x0006
    #define   LSb32DQmsg_rsvd1                                    16
    #define   LSb16DQmsg_rsvd1                                    0
    #define       bDQmsg_rsvd1                                 16
    #define   MSK32DQmsg_rsvd1                                    0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_DQmsg {
    ///////////////////////////////////////////////////////////
    #define   GET32DQmsg_cat(r32)                              _BFGET_(r32, 3, 0)
    #define   SET32DQmsg_cat(r32,v)                            _BFSET_(r32, 3, 0,v)
    #define   GET16DQmsg_cat(r16)                              _BFGET_(r16, 3, 0)
    #define   SET16DQmsg_cat(r16,v)                            _BFSET_(r16, 3, 0,v)

    #define   GET32DQmsg_rnd_off(r32)                          _BFGET_(r32, 4, 4)
    #define   SET32DQmsg_rnd_off(r32,v)                        _BFSET_(r32, 4, 4,v)
    #define   GET16DQmsg_rnd_off(r16)                          _BFGET_(r16, 4, 4)
    #define   SET16DQmsg_rnd_off(r16,v)                        _BFSET_(r16, 4, 4,v)

    #define   GET32DQmsg_lshift_bit(r32)                       _BFGET_(r32, 9, 5)
    #define   SET32DQmsg_lshift_bit(r32,v)                     _BFSET_(r32, 9, 5,v)
    #define   GET16DQmsg_lshift_bit(r16)                       _BFGET_(r16, 9, 5)
    #define   SET16DQmsg_lshift_bit(r16,v)                     _BFSET_(r16, 9, 5,v)

    #define   GET32DQmsg_idx(r32)                              _BFGET_(r32,15,10)
    #define   SET32DQmsg_idx(r32,v)                            _BFSET_(r32,15,10,v)
    #define   GET16DQmsg_idx(r16)                              _BFGET_(r16,15,10)
    #define   SET16DQmsg_idx(r16,v)                            _BFSET_(r16,15,10,v)

    #define   GET32DQmsg_qstep(r32)                            _BFGET_(r32,23,16)
    #define   SET32DQmsg_qstep(r32,v)                          _BFSET_(r32,23,16,v)
    #define   GET16DQmsg_qstep(r16)                            _BFGET_(r16, 7, 0)
    #define   SET16DQmsg_qstep(r16,v)                          _BFSET_(r16, 7, 0,v)

    #define   GET32DQmsg_qm(r32)                               _BFGET_(r32,31,24)
    #define   SET32DQmsg_qm(r32,v)                             _BFSET_(r32,31,24,v)
    #define   GET16DQmsg_qm(r16)                               _BFGET_(r16,15, 8)
    #define   SET16DQmsg_qm(r16,v)                             _BFSET_(r16,15, 8,v)

            UNSG32 u_cat                                       :  4;
            UNSG32 u_rnd_off                                   :  1;
            UNSG32 s_lshift_bit                                :  5;
            UNSG32 u_idx                                       :  6;
            UNSG32 u_qstep                                     :  8;
            UNSG32 u_qm                                        :  8;
    ///////////////////////////////////////////////////////////
    #define   GET32DQmsg_dq_offset(r32)                        _BFGET_(r32, 7, 0)
    #define   SET32DQmsg_dq_offset(r32,v)                      _BFSET_(r32, 7, 0,v)
    #define   GET16DQmsg_dq_offset(r16)                        _BFGET_(r16, 7, 0)
    #define   SET16DQmsg_dq_offset(r16,v)                      _BFSET_(r16, 7, 0,v)

    #define   GET32DQmsg_rsvd0(r32)                            _BFGET_(r32,15, 8)
    #define   SET32DQmsg_rsvd0(r32,v)                          _BFSET_(r32,15, 8,v)
    #define   GET16DQmsg_rsvd0(r16)                            _BFGET_(r16,15, 8)
    #define   SET16DQmsg_rsvd0(r16,v)                          _BFSET_(r16,15, 8,v)

    #define   GET32DQmsg_rsvd1(r32)                            _BFGET_(r32,31,16)
    #define   SET32DQmsg_rsvd1(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16DQmsg_rsvd1(r16)                            _BFGET_(r16,15, 0)
    #define   SET16DQmsg_rsvd1(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_dq_offset                                 :  8;
            UNSG32 u_rsvd0                                     :  8;
            UNSG32 u_rsvd1                                     : 16;
    ///////////////////////////////////////////////////////////
    } SIE_DQmsg;

    ///////////////////////////////////////////////////////////
     SIGN32 DQmsg_drvrd(SIE_DQmsg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 DQmsg_drvwr(SIE_DQmsg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void DQmsg_reset(SIE_DQmsg *p);
     SIGN32 DQmsg_cmp  (SIE_DQmsg *p, SIE_DQmsg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define DQmsg_check(p,pie,pfx,hLOG) DQmsg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define DQmsg_print(p,    pfx,hLOG) DQmsg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: DQmsg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE QMWD                                     (4,4)
///     ###
///     * Quantization matrix word
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 word                 (P)
///               %unsigned 14 val                       0x0
///               %%        18         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      14b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_QMWD
#define h_QMWD (){}

    #define     RA_QMWD_word                                   0x0000

    #define     BA_QMWD_word_val                               0x0000
    #define     B16QMWD_word_val                               0x0000
    #define   LSb32QMWD_word_val                                  0
    #define   LSb16QMWD_word_val                                  0
    #define       bQMWD_word_val                               14
    #define   MSK32QMWD_word_val                                  0x00003FFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_QMWD {
    ///////////////////////////////////////////////////////////
    #define   GET32QMWD_word_val(r32)                          _BFGET_(r32,13, 0)
    #define   SET32QMWD_word_val(r32,v)                        _BFSET_(r32,13, 0,v)
    #define   GET16QMWD_word_val(r16)                          _BFGET_(r16,13, 0)
    #define   SET16QMWD_word_val(r16,v)                        _BFSET_(r16,13, 0,v)

    #define     w32QMWD_word                                   {\
            UNSG32 uword_val                                   : 14;\
            UNSG32 RSVDx0_b14                                  : 18;\
          }
    union { UNSG32 u32QMWD_word;
            struct w32QMWD_word;
          };
    ///////////////////////////////////////////////////////////
    } SIE_QMWD;

    typedef union  T32QMWD_word
          { UNSG32 u32;
            struct w32QMWD_word;
                 } T32QMWD_word;
    ///////////////////////////////////////////////////////////

    typedef union  TQMWD_word
          { UNSG32 u32[1];
            struct {
            struct w32QMWD_word;
                   };
                 } TQMWD_word;

    ///////////////////////////////////////////////////////////
     SIGN32 QMWD_drvrd(SIE_QMWD *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 QMWD_drvwr(SIE_QMWD *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void QMWD_reset(SIE_QMWD *p);
     SIGN32 QMWD_cmp  (SIE_QMWD *p, SIE_QMWD *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define QMWD_check(p,pie,pfx,hLOG) QMWD_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define QMWD_print(p,    pfx,hLOG) QMWD_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: QMWD
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE QM4x4                                    (4,4)
///     ###
///     * 4x4 Quantization Matrix
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 qm                   
///               $QMWD                qm                REG      [16]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      64B, bits:     224b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_QM4x4
#define h_QM4x4 (){}

    #define     RA_QM4x4_qm                                    0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_QM4x4 {
    ///////////////////////////////////////////////////////////
              SIE_QMWD                                         ie_qm[16];
    ///////////////////////////////////////////////////////////
    } SIE_QM4x4;

    ///////////////////////////////////////////////////////////
     SIGN32 QM4x4_drvrd(SIE_QM4x4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 QM4x4_drvwr(SIE_QM4x4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void QM4x4_reset(SIE_QM4x4 *p);
     SIGN32 QM4x4_cmp  (SIE_QM4x4 *p, SIE_QM4x4 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define QM4x4_check(p,pie,pfx,hLOG) QM4x4_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define QM4x4_print(p,    pfx,hLOG) QM4x4_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: QM4x4
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE QM_Remx4x4                               (4,4)
///     ###
///     * 4x4 Quantization Matrices, one for each Qrem value
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 qm                   
///               $QM4x4               qm                REG       [6]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     384B, bits:    1344b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_QM_Remx4x4
#define h_QM_Remx4x4 (){}

    #define     RA_QM_Remx4x4_qm                               0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_QM_Remx4x4 {
    ///////////////////////////////////////////////////////////
              SIE_QM4x4                                        ie_qm[6];
    ///////////////////////////////////////////////////////////
    } SIE_QM_Remx4x4;

    ///////////////////////////////////////////////////////////
     SIGN32 QM_Remx4x4_drvrd(SIE_QM_Remx4x4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 QM_Remx4x4_drvwr(SIE_QM_Remx4x4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void QM_Remx4x4_reset(SIE_QM_Remx4x4 *p);
     SIGN32 QM_Remx4x4_cmp  (SIE_QM_Remx4x4 *p, SIE_QM_Remx4x4 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define QM_Remx4x4_check(p,pie,pfx,hLOG) QM_Remx4x4_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define QM_Remx4x4_print(p,    pfx,hLOG) QM_Remx4x4_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: QM_Remx4x4
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE QM8x8                                    (4,4)
///     ###
///     * 8x8 Quantization Matrix
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 qm                   
///               $QMWD                qm                REG      [64]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     256B, bits:     896b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_QM8x8
#define h_QM8x8 (){}

    #define     RA_QM8x8_qm                                    0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_QM8x8 {
    ///////////////////////////////////////////////////////////
              SIE_QMWD                                         ie_qm[64];
    ///////////////////////////////////////////////////////////
    } SIE_QM8x8;

    ///////////////////////////////////////////////////////////
     SIGN32 QM8x8_drvrd(SIE_QM8x8 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 QM8x8_drvwr(SIE_QM8x8 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void QM8x8_reset(SIE_QM8x8 *p);
     SIGN32 QM8x8_cmp  (SIE_QM8x8 *p, SIE_QM8x8 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define QM8x8_check(p,pie,pfx,hLOG) QM8x8_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define QM8x8_print(p,    pfx,hLOG) QM8x8_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: QM8x8
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE QM_Remx8x8                               (4,4)
///     ###
///     * 8x8 Quantization Matrices, one for each Qrem value
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 qm                   
///               $QM8x8               qm                REG       [6]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    1536B, bits:    5376b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_QM_Remx8x8
#define h_QM_Remx8x8 (){}

    #define     RA_QM_Remx8x8_qm                               0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_QM_Remx8x8 {
    ///////////////////////////////////////////////////////////
              SIE_QM8x8                                        ie_qm[6];
    ///////////////////////////////////////////////////////////
    } SIE_QM_Remx8x8;

    ///////////////////////////////////////////////////////////
     SIGN32 QM_Remx8x8_drvrd(SIE_QM_Remx8x8 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 QM_Remx8x8_drvwr(SIE_QM_Remx8x8 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void QM_Remx8x8_reset(SIE_QM_Remx8x8 *p);
     SIGN32 QM_Remx8x8_cmp  (SIE_QM_Remx8x8 *p, SIE_QM_Remx8x8 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define QM_Remx8x8_check(p,pie,pfx,hLOG) QM_Remx8x8_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define QM_Remx8x8_print(p,    pfx,hLOG) QM_Remx8x8_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: QM_Remx8x8
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dQuant                  biu              (4,4)
///     ###
///     * dQuant BIU registers
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 Intra4x4Y            
///               $QM_Remx4x4          Intra4x4Y         REG          
///                                    ###
///                                    * Intra 4x4 quantization matrix for Y, H.264 only
///                                    ###
///     @ 0x00180                      (P)
///     # 0x00180 Intra4x4U            
///               $QM_Remx4x4          Intra4x4U         REG          
///                                    ###
///                                    * Intra 4x4 quantization matrix for U, H.264 only
///                                    ###
///     @ 0x00300                      (P)
///     # 0x00300 Intra4x4V            
///               $QM_Remx4x4          Intra4x4V         REG          
///                                    ###
///                                    * Intra 4x4 quantization matrix for V, H.264 only
///                                    ###
///     @ 0x00480                      (P)
///     # 0x00480 Inter4x4Y            
///               $QM_Remx4x4          Inter4x4Y         REG          
///                                    ###
///                                    * Inter 4x4 quantization matrix for Y, H.264 only
///                                    ###
///     @ 0x00600                      (P)
///     # 0x00600 Inter4x4U            
///               $QM_Remx4x4          Inter4x4U         REG          
///                                    ###
///                                    * Inter 4x4 quantization matrix for U, H.264 only
///                                    ###
///     @ 0x00780                      (P)
///     # 0x00780 Inter4x4V            
///               $QM_Remx4x4          Inter4x4V         REG          
///                                    ###
///                                    * Inter 4x4 quantization matrix for V, H.264 only
///                                    ###
///     @ 0x00900                      (P)
///     # 0x00900 Intra8x8Y            
///               $QM_Remx8x8          Intra8x8Y         REG          
///                                    ###
///                                    * H.264: Intra 8x8 quantization matrix for Y
///                                    * MPEG-4: luma scaling matrix for DC/AC prediction
///                                    ###
///     @ 0x00F00                      (P)
///     # 0x00F00 Inter8x8Y            
///               $QM_Remx8x8          Inter8x8Y         REG          
///                                    ###
///                                    * H.264: Inter 8x8 quantization matrix for Y
///                                    * MPEG-4: chroma scaling matrix for DC/AC prediction
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    5376B, bits:   18816b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dQuant
#define h_dQuant (){}

    #define     RA_dQuant_Intra4x4Y                            0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_dQuant_Intra4x4U                            0x0180
    ///////////////////////////////////////////////////////////
    #define     RA_dQuant_Intra4x4V                            0x0300
    ///////////////////////////////////////////////////////////
    #define     RA_dQuant_Inter4x4Y                            0x0480
    ///////////////////////////////////////////////////////////
    #define     RA_dQuant_Inter4x4U                            0x0600
    ///////////////////////////////////////////////////////////
    #define     RA_dQuant_Inter4x4V                            0x0780
    ///////////////////////////////////////////////////////////
    #define     RA_dQuant_Intra8x8Y                            0x0900
    ///////////////////////////////////////////////////////////
    #define     RA_dQuant_Inter8x8Y                            0x0F00
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dQuant {
    ///////////////////////////////////////////////////////////
              SIE_QM_Remx4x4                                   ie_Intra4x4Y;
    ///////////////////////////////////////////////////////////
              SIE_QM_Remx4x4                                   ie_Intra4x4U;
    ///////////////////////////////////////////////////////////
              SIE_QM_Remx4x4                                   ie_Intra4x4V;
    ///////////////////////////////////////////////////////////
              SIE_QM_Remx4x4                                   ie_Inter4x4Y;
    ///////////////////////////////////////////////////////////
              SIE_QM_Remx4x4                                   ie_Inter4x4U;
    ///////////////////////////////////////////////////////////
              SIE_QM_Remx4x4                                   ie_Inter4x4V;
    ///////////////////////////////////////////////////////////
              SIE_QM_Remx8x8                                   ie_Intra8x8Y;
    ///////////////////////////////////////////////////////////
              SIE_QM_Remx8x8                                   ie_Inter8x8Y;
    ///////////////////////////////////////////////////////////
    } SIE_dQuant;

    ///////////////////////////////////////////////////////////
     SIGN32 dQuant_drvrd(SIE_dQuant *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dQuant_drvwr(SIE_dQuant *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dQuant_reset(SIE_dQuant *p);
     SIGN32 dQuant_cmp  (SIE_dQuant *p, SIE_dQuant *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dQuant_check(p,pie,pfx,hLOG) dQuant_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dQuant_print(p,    pfx,hLOG) dQuant_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dQuant
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vcMsgMV                 biu              (4,4)
///     ###
///     * 8-bit vcMsg return data when ID = F0A64_vcMsgMv
///     * [0:7]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 3  mvX                       
///                                    ###
///                                    * Index of the 4x4 block @ upper-left corner of partition
///                                    ###
///               %unsigned 2  mvYL                      
///                                    ###
///                                    * Block / macroblock partition info
///                                    ###
///               %unsigned 3  mvYC                      
///                                    ###
///                                    * 0: partition is at macroblock level
///                                    * 1: partition is at 8x8 block level
///                                    ###
///               %unsigned 3  mv1X                      
///               %unsigned 2  mv1YL                     
///               %unsigned 3  mv1YC                     
///               %unsigned 3  mv2X                      
///               %unsigned 2  mv2YL                     
///               %unsigned 3  mv2YC                     
///               %unsigned 3  mv3X                      
///               %unsigned 2  mv3YL                     
///               %unsigned 3  mv3YC                     
///                                    ###
///                                    * End vcMsgMV
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vcMsgMV
#define h_vcMsgMV (){}

    #define     BA_vcMsgMV_mvX                                 0x0000
    #define     B16vcMsgMV_mvX                                 0x0000
    #define   LSb32vcMsgMV_mvX                                    0
    #define   LSb16vcMsgMV_mvX                                    0
    #define       bvcMsgMV_mvX                                 3
    #define   MSK32vcMsgMV_mvX                                    0x00000007

    #define     BA_vcMsgMV_mvYL                                0x0000
    #define     B16vcMsgMV_mvYL                                0x0000
    #define   LSb32vcMsgMV_mvYL                                   3
    #define   LSb16vcMsgMV_mvYL                                   3
    #define       bvcMsgMV_mvYL                                2
    #define   MSK32vcMsgMV_mvYL                                   0x00000018

    #define     BA_vcMsgMV_mvYC                                0x0000
    #define     B16vcMsgMV_mvYC                                0x0000
    #define   LSb32vcMsgMV_mvYC                                   5
    #define   LSb16vcMsgMV_mvYC                                   5
    #define       bvcMsgMV_mvYC                                3
    #define   MSK32vcMsgMV_mvYC                                   0x000000E0

    #define     BA_vcMsgMV_mv1X                                0x0001
    #define     B16vcMsgMV_mv1X                                0x0000
    #define   LSb32vcMsgMV_mv1X                                   8
    #define   LSb16vcMsgMV_mv1X                                   8
    #define       bvcMsgMV_mv1X                                3
    #define   MSK32vcMsgMV_mv1X                                   0x00000700

    #define     BA_vcMsgMV_mv1YL                               0x0001
    #define     B16vcMsgMV_mv1YL                               0x0000
    #define   LSb32vcMsgMV_mv1YL                                  11
    #define   LSb16vcMsgMV_mv1YL                                  11
    #define       bvcMsgMV_mv1YL                               2
    #define   MSK32vcMsgMV_mv1YL                                  0x00001800

    #define     BA_vcMsgMV_mv1YC                               0x0001
    #define     B16vcMsgMV_mv1YC                               0x0000
    #define   LSb32vcMsgMV_mv1YC                                  13
    #define   LSb16vcMsgMV_mv1YC                                  13
    #define       bvcMsgMV_mv1YC                               3
    #define   MSK32vcMsgMV_mv1YC                                  0x0000E000

    #define     BA_vcMsgMV_mv2X                                0x0002
    #define     B16vcMsgMV_mv2X                                0x0002
    #define   LSb32vcMsgMV_mv2X                                   16
    #define   LSb16vcMsgMV_mv2X                                   0
    #define       bvcMsgMV_mv2X                                3
    #define   MSK32vcMsgMV_mv2X                                   0x00070000

    #define     BA_vcMsgMV_mv2YL                               0x0002
    #define     B16vcMsgMV_mv2YL                               0x0002
    #define   LSb32vcMsgMV_mv2YL                                  19
    #define   LSb16vcMsgMV_mv2YL                                  3
    #define       bvcMsgMV_mv2YL                               2
    #define   MSK32vcMsgMV_mv2YL                                  0x00180000

    #define     BA_vcMsgMV_mv2YC                               0x0002
    #define     B16vcMsgMV_mv2YC                               0x0002
    #define   LSb32vcMsgMV_mv2YC                                  21
    #define   LSb16vcMsgMV_mv2YC                                  5
    #define       bvcMsgMV_mv2YC                               3
    #define   MSK32vcMsgMV_mv2YC                                  0x00E00000

    #define     BA_vcMsgMV_mv3X                                0x0003
    #define     B16vcMsgMV_mv3X                                0x0002
    #define   LSb32vcMsgMV_mv3X                                   24
    #define   LSb16vcMsgMV_mv3X                                   8
    #define       bvcMsgMV_mv3X                                3
    #define   MSK32vcMsgMV_mv3X                                   0x07000000

    #define     BA_vcMsgMV_mv3YL                               0x0003
    #define     B16vcMsgMV_mv3YL                               0x0002
    #define   LSb32vcMsgMV_mv3YL                                  27
    #define   LSb16vcMsgMV_mv3YL                                  11
    #define       bvcMsgMV_mv3YL                               2
    #define   MSK32vcMsgMV_mv3YL                                  0x18000000

    #define     BA_vcMsgMV_mv3YC                               0x0003
    #define     B16vcMsgMV_mv3YC                               0x0002
    #define   LSb32vcMsgMV_mv3YC                                  29
    #define   LSb16vcMsgMV_mv3YC                                  13
    #define       bvcMsgMV_mv3YC                               3
    #define   MSK32vcMsgMV_mv3YC                                  0xE0000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vcMsgMV {
    ///////////////////////////////////////////////////////////
    #define   GET32vcMsgMV_mvX(r32)                            _BFGET_(r32, 2, 0)
    #define   SET32vcMsgMV_mvX(r32,v)                          _BFSET_(r32, 2, 0,v)
    #define   GET16vcMsgMV_mvX(r16)                            _BFGET_(r16, 2, 0)
    #define   SET16vcMsgMV_mvX(r16,v)                          _BFSET_(r16, 2, 0,v)

    #define   GET32vcMsgMV_mvYL(r32)                           _BFGET_(r32, 4, 3)
    #define   SET32vcMsgMV_mvYL(r32,v)                         _BFSET_(r32, 4, 3,v)
    #define   GET16vcMsgMV_mvYL(r16)                           _BFGET_(r16, 4, 3)
    #define   SET16vcMsgMV_mvYL(r16,v)                         _BFSET_(r16, 4, 3,v)

    #define   GET32vcMsgMV_mvYC(r32)                           _BFGET_(r32, 7, 5)
    #define   SET32vcMsgMV_mvYC(r32,v)                         _BFSET_(r32, 7, 5,v)
    #define   GET16vcMsgMV_mvYC(r16)                           _BFGET_(r16, 7, 5)
    #define   SET16vcMsgMV_mvYC(r16,v)                         _BFSET_(r16, 7, 5,v)

    #define   GET32vcMsgMV_mv1X(r32)                           _BFGET_(r32,10, 8)
    #define   SET32vcMsgMV_mv1X(r32,v)                         _BFSET_(r32,10, 8,v)
    #define   GET16vcMsgMV_mv1X(r16)                           _BFGET_(r16,10, 8)
    #define   SET16vcMsgMV_mv1X(r16,v)                         _BFSET_(r16,10, 8,v)

    #define   GET32vcMsgMV_mv1YL(r32)                          _BFGET_(r32,12,11)
    #define   SET32vcMsgMV_mv1YL(r32,v)                        _BFSET_(r32,12,11,v)
    #define   GET16vcMsgMV_mv1YL(r16)                          _BFGET_(r16,12,11)
    #define   SET16vcMsgMV_mv1YL(r16,v)                        _BFSET_(r16,12,11,v)

    #define   GET32vcMsgMV_mv1YC(r32)                          _BFGET_(r32,15,13)
    #define   SET32vcMsgMV_mv1YC(r32,v)                        _BFSET_(r32,15,13,v)
    #define   GET16vcMsgMV_mv1YC(r16)                          _BFGET_(r16,15,13)
    #define   SET16vcMsgMV_mv1YC(r16,v)                        _BFSET_(r16,15,13,v)

    #define   GET32vcMsgMV_mv2X(r32)                           _BFGET_(r32,18,16)
    #define   SET32vcMsgMV_mv2X(r32,v)                         _BFSET_(r32,18,16,v)
    #define   GET16vcMsgMV_mv2X(r16)                           _BFGET_(r16, 2, 0)
    #define   SET16vcMsgMV_mv2X(r16,v)                         _BFSET_(r16, 2, 0,v)

    #define   GET32vcMsgMV_mv2YL(r32)                          _BFGET_(r32,20,19)
    #define   SET32vcMsgMV_mv2YL(r32,v)                        _BFSET_(r32,20,19,v)
    #define   GET16vcMsgMV_mv2YL(r16)                          _BFGET_(r16, 4, 3)
    #define   SET16vcMsgMV_mv2YL(r16,v)                        _BFSET_(r16, 4, 3,v)

    #define   GET32vcMsgMV_mv2YC(r32)                          _BFGET_(r32,23,21)
    #define   SET32vcMsgMV_mv2YC(r32,v)                        _BFSET_(r32,23,21,v)
    #define   GET16vcMsgMV_mv2YC(r16)                          _BFGET_(r16, 7, 5)
    #define   SET16vcMsgMV_mv2YC(r16,v)                        _BFSET_(r16, 7, 5,v)

    #define   GET32vcMsgMV_mv3X(r32)                           _BFGET_(r32,26,24)
    #define   SET32vcMsgMV_mv3X(r32,v)                         _BFSET_(r32,26,24,v)
    #define   GET16vcMsgMV_mv3X(r16)                           _BFGET_(r16,10, 8)
    #define   SET16vcMsgMV_mv3X(r16,v)                         _BFSET_(r16,10, 8,v)

    #define   GET32vcMsgMV_mv3YL(r32)                          _BFGET_(r32,28,27)
    #define   SET32vcMsgMV_mv3YL(r32,v)                        _BFSET_(r32,28,27,v)
    #define   GET16vcMsgMV_mv3YL(r16)                          _BFGET_(r16,12,11)
    #define   SET16vcMsgMV_mv3YL(r16,v)                        _BFSET_(r16,12,11,v)

    #define   GET32vcMsgMV_mv3YC(r32)                          _BFGET_(r32,31,29)
    #define   SET32vcMsgMV_mv3YC(r32,v)                        _BFSET_(r32,31,29,v)
    #define   GET16vcMsgMV_mv3YC(r16)                          _BFGET_(r16,15,13)
    #define   SET16vcMsgMV_mv3YC(r16,v)                        _BFSET_(r16,15,13,v)

            UNSG32 u_mvX                                       :  3;
            UNSG32 u_mvYL                                      :  2;
            UNSG32 u_mvYC                                      :  3;
            UNSG32 u_mv1X                                      :  3;
            UNSG32 u_mv1YL                                     :  2;
            UNSG32 u_mv1YC                                     :  3;
            UNSG32 u_mv2X                                      :  3;
            UNSG32 u_mv2YL                                     :  2;
            UNSG32 u_mv2YC                                     :  3;
            UNSG32 u_mv3X                                      :  3;
            UNSG32 u_mv3YL                                     :  2;
            UNSG32 u_mv3YC                                     :  3;
    ///////////////////////////////////////////////////////////
    } SIE_vcMsgMV;

    ///////////////////////////////////////////////////////////
     SIGN32 vcMsgMV_drvrd(SIE_vcMsgMV *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vcMsgMV_drvwr(SIE_vcMsgMV *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vcMsgMV_reset(SIE_vcMsgMV *p);
     SIGN32 vcMsgMV_cmp  (SIE_vcMsgMV *p, SIE_vcMsgMV *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vcMsgMV_check(p,pie,pfx,hLOG) vcMsgMV_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vcMsgMV_print(p,    pfx,hLOG) vcMsgMV_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vcMsgMV
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vcMsgCMD                biu              (4,4)
///     ###
///     * 16-bit vcMsg command parameter
///     * [0:31]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 4  BLK                       
///                                    ###
///                                    * Index of the 4x4 block @ upper-left corner of partition
///                                    ###
///               %unsigned 2  partition                 
///                                    : 1mv                       0x0
///                                    : 2mvLR                     0x1
///                                    : 2mvTB                     0x2
///                                    : 4mv                       0x3
///                                                 ###
///                                                 * Block / macroblock partition info
///                                                 ###
///               %unsigned 1  level                     
///                                    : mb                        0x0
///                                    : blk8x8                    0x1
///                                                 ###
///                                                 * 0: partition is at macroblock level
///                                                 * 1: partition is at 8x8 block level
///                                                 ###
///               %unsigned 1  RSVD                      0x1
///                                    ###
///                                    * To ensure same defines as in Nloc.category
///                                    * End vcMsgCMD
///                                    ###
///               %%        24         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       8b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vcMsgCMD
#define h_vcMsgCMD (){}

    #define     BA_vcMsgCMD_BLK                                0x0000
    #define     B16vcMsgCMD_BLK                                0x0000
    #define   LSb32vcMsgCMD_BLK                                   0
    #define   LSb16vcMsgCMD_BLK                                   0
    #define       bvcMsgCMD_BLK                                4
    #define   MSK32vcMsgCMD_BLK                                   0x0000000F

    #define     BA_vcMsgCMD_partition                          0x0000
    #define     B16vcMsgCMD_partition                          0x0000
    #define   LSb32vcMsgCMD_partition                             4
    #define   LSb16vcMsgCMD_partition                             4
    #define       bvcMsgCMD_partition                          2
    #define   MSK32vcMsgCMD_partition                             0x00000030
    #define        vcMsgCMD_partition_1mv                                   0x0
    #define        vcMsgCMD_partition_2mvLR                                 0x1
    #define        vcMsgCMD_partition_2mvTB                                 0x2
    #define        vcMsgCMD_partition_4mv                                   0x3

    #define     BA_vcMsgCMD_level                              0x0000
    #define     B16vcMsgCMD_level                              0x0000
    #define   LSb32vcMsgCMD_level                                 6
    #define   LSb16vcMsgCMD_level                                 6
    #define       bvcMsgCMD_level                              1
    #define   MSK32vcMsgCMD_level                                 0x00000040
    #define        vcMsgCMD_level_mb                                        0x0
    #define        vcMsgCMD_level_blk8x8                                    0x1

    #define     BA_vcMsgCMD_RSVD                               0x0000
    #define     B16vcMsgCMD_RSVD                               0x0000
    #define   LSb32vcMsgCMD_RSVD                                  7
    #define   LSb16vcMsgCMD_RSVD                                  7
    #define       bvcMsgCMD_RSVD                               1
    #define   MSK32vcMsgCMD_RSVD                                  0x00000080
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vcMsgCMD {
    ///////////////////////////////////////////////////////////
    #define   GET32vcMsgCMD_BLK(r32)                           _BFGET_(r32, 3, 0)
    #define   SET32vcMsgCMD_BLK(r32,v)                         _BFSET_(r32, 3, 0,v)
    #define   GET16vcMsgCMD_BLK(r16)                           _BFGET_(r16, 3, 0)
    #define   SET16vcMsgCMD_BLK(r16,v)                         _BFSET_(r16, 3, 0,v)

    #define   GET32vcMsgCMD_partition(r32)                     _BFGET_(r32, 5, 4)
    #define   SET32vcMsgCMD_partition(r32,v)                   _BFSET_(r32, 5, 4,v)
    #define   GET16vcMsgCMD_partition(r16)                     _BFGET_(r16, 5, 4)
    #define   SET16vcMsgCMD_partition(r16,v)                   _BFSET_(r16, 5, 4,v)

    #define   GET32vcMsgCMD_level(r32)                         _BFGET_(r32, 6, 6)
    #define   SET32vcMsgCMD_level(r32,v)                       _BFSET_(r32, 6, 6,v)
    #define   GET16vcMsgCMD_level(r16)                         _BFGET_(r16, 6, 6)
    #define   SET16vcMsgCMD_level(r16,v)                       _BFSET_(r16, 6, 6,v)

    #define   GET32vcMsgCMD_RSVD(r32)                          _BFGET_(r32, 7, 7)
    #define   SET32vcMsgCMD_RSVD(r32,v)                        _BFSET_(r32, 7, 7,v)
    #define   GET16vcMsgCMD_RSVD(r16)                          _BFGET_(r16, 7, 7)
    #define   SET16vcMsgCMD_RSVD(r16,v)                        _BFSET_(r16, 7, 7,v)

            UNSG32 u_BLK                                       :  4;
            UNSG32 u_partition                                 :  2;
            UNSG32 u_level                                     :  1;
            UNSG32 u_RSVD                                      :  1;
            UNSG32 RSVDx0_b8                                   : 24;
    ///////////////////////////////////////////////////////////
    } SIE_vcMsgCMD;

    ///////////////////////////////////////////////////////////
     SIGN32 vcMsgCMD_drvrd(SIE_vcMsgCMD *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vcMsgCMD_drvwr(SIE_vcMsgCMD *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vcMsgCMD_reset(SIE_vcMsgCMD *p);
     SIGN32 vcMsgCMD_cmp  (SIE_vcMsgCMD *p, SIE_vcMsgCMD *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vcMsgCMD_check(p,pie,pfx,hLOG) vcMsgCMD_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vcMsgCMD_print(p,    pfx,hLOG) vcMsgCMD_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vcMsgCMD
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CacheMSG                                 (4,4)
///     ###
///     * Message to setup vCache prefetching.
///     * [00:31]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 11 xLoc                      
///                                    ###
///                                    * Exact reference region horizontal location (in pixel)
///                                    ###
///               %unsigned 5  xPix                      
///                                    ###
///                                    * Exact reference region horizontal size (in pixel)
///                                    * 0 represents 32
///                                    ###
///               %unsigned 11 yLoc                      
///                                    ###
///                                    * Exact reference region vertical location (in pixel)
///                                    ###
///               %unsigned 5  yPix                      
///                                    ###
///                                    * Exact reference region vertical size (in pixel)
///                                    * 0 represents 32
///                                    * [32:63]
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 5  xLocExp                   
///                                    ###
///                                    * Expansion horizontal offset (in pixel)
///                                    ###
///               %unsigned 3  xPixExp                   
///                                    ###
///                                    * Expansion horizontal size (in 4-pixel unit)
///                                    * 0 represents 8
///                                    ###
///               %unsigned 5  yLocExp                   
///                                    ###
///                                    * Expansion vertical offset (in pixel)
///                                    ###
///               %unsigned 3  yPixExp                   
///                                    ###
///                                    * Expansion vertical size (in 4-pixel unit)0 represents 8
///                                    ###
///               %unsigned 6  rBID                      
///                                    ###
///                                    * Reference buffer ID, last 1b indicates access mode:
///                                    * 0: frame/progressive or top field
///                                    * 1: bottom field
///                                    ###
///               %unsigned 1  uv                        
///                                    ###
///                                    * 0/1 for Y or UV reference region
///                                    ###
///               %unsigned 1  fldMB                     
///                                    ###
///                                    * 0/1 for frame or field MB(-pair)
///                                    ###
///               %unsigned 2  hint                      
///                                    : bypass                    0x0
///                                                 ###
///                                                 * Force to bypass cache
///                                                 ###
///                                    : FrmX                      0x1
///                                                 ###
///                                                 * Use FID & xLoc to decide cache way
///                                                 ###
///                                    : FrmY                      0x2
///                                                 ###
///                                                 * Use FID & yLoc to decide cache way
///                                                 ###
///                                    : XY                        0x3
///                                                 ###
///                                                 * Use xLoc & yLoc to decide cache way
///                                                 ###
///               %unsigned 6  descID                    
///                                    ###
///                                    * Output transfer descriptor ID
///                                    * A descriptor shall have a (non-zero) semaphore ID to check not full before transfer, destination address and stride (in 4x4)
///                                    ###
///                                    : CFG                      0x3F
///                                                 ###
///                                                 * vCache configuration message
///                                                 * End of CacheMSG
///                                                 ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CacheMSG
#define h_CacheMSG (){}

    #define     BA_CacheMSG_xLoc                               0x0000
    #define     B16CacheMSG_xLoc                               0x0000
    #define   LSb32CacheMSG_xLoc                                  0
    #define   LSb16CacheMSG_xLoc                                  0
    #define       bCacheMSG_xLoc                               11
    #define   MSK32CacheMSG_xLoc                                  0x000007FF

    #define     BA_CacheMSG_xPix                               0x0001
    #define     B16CacheMSG_xPix                               0x0000
    #define   LSb32CacheMSG_xPix                                  11
    #define   LSb16CacheMSG_xPix                                  11
    #define       bCacheMSG_xPix                               5
    #define   MSK32CacheMSG_xPix                                  0x0000F800

    #define     BA_CacheMSG_yLoc                               0x0002
    #define     B16CacheMSG_yLoc                               0x0002
    #define   LSb32CacheMSG_yLoc                                  16
    #define   LSb16CacheMSG_yLoc                                  0
    #define       bCacheMSG_yLoc                               11
    #define   MSK32CacheMSG_yLoc                                  0x07FF0000

    #define     BA_CacheMSG_yPix                               0x0003
    #define     B16CacheMSG_yPix                               0x0002
    #define   LSb32CacheMSG_yPix                                  27
    #define   LSb16CacheMSG_yPix                                  11
    #define       bCacheMSG_yPix                               5
    #define   MSK32CacheMSG_yPix                                  0xF8000000
    ///////////////////////////////////////////////////////////

    #define     BA_CacheMSG_xLocExp                            0x0004
    #define     B16CacheMSG_xLocExp                            0x0004
    #define   LSb32CacheMSG_xLocExp                               0
    #define   LSb16CacheMSG_xLocExp                               0
    #define       bCacheMSG_xLocExp                            5
    #define   MSK32CacheMSG_xLocExp                               0x0000001F

    #define     BA_CacheMSG_xPixExp                            0x0004
    #define     B16CacheMSG_xPixExp                            0x0004
    #define   LSb32CacheMSG_xPixExp                               5
    #define   LSb16CacheMSG_xPixExp                               5
    #define       bCacheMSG_xPixExp                            3
    #define   MSK32CacheMSG_xPixExp                               0x000000E0

    #define     BA_CacheMSG_yLocExp                            0x0005
    #define     B16CacheMSG_yLocExp                            0x0004
    #define   LSb32CacheMSG_yLocExp                               8
    #define   LSb16CacheMSG_yLocExp                               8
    #define       bCacheMSG_yLocExp                            5
    #define   MSK32CacheMSG_yLocExp                               0x00001F00

    #define     BA_CacheMSG_yPixExp                            0x0005
    #define     B16CacheMSG_yPixExp                            0x0004
    #define   LSb32CacheMSG_yPixExp                               13
    #define   LSb16CacheMSG_yPixExp                               13
    #define       bCacheMSG_yPixExp                            3
    #define   MSK32CacheMSG_yPixExp                               0x0000E000

    #define     BA_CacheMSG_rBID                               0x0006
    #define     B16CacheMSG_rBID                               0x0006
    #define   LSb32CacheMSG_rBID                                  16
    #define   LSb16CacheMSG_rBID                                  0
    #define       bCacheMSG_rBID                               6
    #define   MSK32CacheMSG_rBID                                  0x003F0000

    #define     BA_CacheMSG_uv                                 0x0006
    #define     B16CacheMSG_uv                                 0x0006
    #define   LSb32CacheMSG_uv                                    22
    #define   LSb16CacheMSG_uv                                    6
    #define       bCacheMSG_uv                                 1
    #define   MSK32CacheMSG_uv                                    0x00400000

    #define     BA_CacheMSG_fldMB                              0x0006
    #define     B16CacheMSG_fldMB                              0x0006
    #define   LSb32CacheMSG_fldMB                                 23
    #define   LSb16CacheMSG_fldMB                                 7
    #define       bCacheMSG_fldMB                              1
    #define   MSK32CacheMSG_fldMB                                 0x00800000

    #define     BA_CacheMSG_hint                               0x0007
    #define     B16CacheMSG_hint                               0x0006
    #define   LSb32CacheMSG_hint                                  24
    #define   LSb16CacheMSG_hint                                  8
    #define       bCacheMSG_hint                               2
    #define   MSK32CacheMSG_hint                                  0x03000000
    #define        CacheMSG_hint_bypass                                     0x0
    #define        CacheMSG_hint_FrmX                                       0x1
    #define        CacheMSG_hint_FrmY                                       0x2
    #define        CacheMSG_hint_XY                                         0x3

    #define     BA_CacheMSG_descID                             0x0007
    #define     B16CacheMSG_descID                             0x0006
    #define   LSb32CacheMSG_descID                                26
    #define   LSb16CacheMSG_descID                                10
    #define       bCacheMSG_descID                             6
    #define   MSK32CacheMSG_descID                                0xFC000000
    #define        CacheMSG_descID_CFG                                      0x3F
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CacheMSG {
    ///////////////////////////////////////////////////////////
    #define   GET32CacheMSG_xLoc(r32)                          _BFGET_(r32,10, 0)
    #define   SET32CacheMSG_xLoc(r32,v)                        _BFSET_(r32,10, 0,v)
    #define   GET16CacheMSG_xLoc(r16)                          _BFGET_(r16,10, 0)
    #define   SET16CacheMSG_xLoc(r16,v)                        _BFSET_(r16,10, 0,v)

    #define   GET32CacheMSG_xPix(r32)                          _BFGET_(r32,15,11)
    #define   SET32CacheMSG_xPix(r32,v)                        _BFSET_(r32,15,11,v)
    #define   GET16CacheMSG_xPix(r16)                          _BFGET_(r16,15,11)
    #define   SET16CacheMSG_xPix(r16,v)                        _BFSET_(r16,15,11,v)

    #define   GET32CacheMSG_yLoc(r32)                          _BFGET_(r32,26,16)
    #define   SET32CacheMSG_yLoc(r32,v)                        _BFSET_(r32,26,16,v)
    #define   GET16CacheMSG_yLoc(r16)                          _BFGET_(r16,10, 0)
    #define   SET16CacheMSG_yLoc(r16,v)                        _BFSET_(r16,10, 0,v)

    #define   GET32CacheMSG_yPix(r32)                          _BFGET_(r32,31,27)
    #define   SET32CacheMSG_yPix(r32,v)                        _BFSET_(r32,31,27,v)
    #define   GET16CacheMSG_yPix(r16)                          _BFGET_(r16,15,11)
    #define   SET16CacheMSG_yPix(r16,v)                        _BFSET_(r16,15,11,v)

            UNSG32 u_xLoc                                      : 11;
            UNSG32 u_xPix                                      :  5;
            UNSG32 u_yLoc                                      : 11;
            UNSG32 u_yPix                                      :  5;
    ///////////////////////////////////////////////////////////
    #define   GET32CacheMSG_xLocExp(r32)                       _BFGET_(r32, 4, 0)
    #define   SET32CacheMSG_xLocExp(r32,v)                     _BFSET_(r32, 4, 0,v)
    #define   GET16CacheMSG_xLocExp(r16)                       _BFGET_(r16, 4, 0)
    #define   SET16CacheMSG_xLocExp(r16,v)                     _BFSET_(r16, 4, 0,v)

    #define   GET32CacheMSG_xPixExp(r32)                       _BFGET_(r32, 7, 5)
    #define   SET32CacheMSG_xPixExp(r32,v)                     _BFSET_(r32, 7, 5,v)
    #define   GET16CacheMSG_xPixExp(r16)                       _BFGET_(r16, 7, 5)
    #define   SET16CacheMSG_xPixExp(r16,v)                     _BFSET_(r16, 7, 5,v)

    #define   GET32CacheMSG_yLocExp(r32)                       _BFGET_(r32,12, 8)
    #define   SET32CacheMSG_yLocExp(r32,v)                     _BFSET_(r32,12, 8,v)
    #define   GET16CacheMSG_yLocExp(r16)                       _BFGET_(r16,12, 8)
    #define   SET16CacheMSG_yLocExp(r16,v)                     _BFSET_(r16,12, 8,v)

    #define   GET32CacheMSG_yPixExp(r32)                       _BFGET_(r32,15,13)
    #define   SET32CacheMSG_yPixExp(r32,v)                     _BFSET_(r32,15,13,v)
    #define   GET16CacheMSG_yPixExp(r16)                       _BFGET_(r16,15,13)
    #define   SET16CacheMSG_yPixExp(r16,v)                     _BFSET_(r16,15,13,v)

    #define   GET32CacheMSG_rBID(r32)                          _BFGET_(r32,21,16)
    #define   SET32CacheMSG_rBID(r32,v)                        _BFSET_(r32,21,16,v)
    #define   GET16CacheMSG_rBID(r16)                          _BFGET_(r16, 5, 0)
    #define   SET16CacheMSG_rBID(r16,v)                        _BFSET_(r16, 5, 0,v)

    #define   GET32CacheMSG_uv(r32)                            _BFGET_(r32,22,22)
    #define   SET32CacheMSG_uv(r32,v)                          _BFSET_(r32,22,22,v)
    #define   GET16CacheMSG_uv(r16)                            _BFGET_(r16, 6, 6)
    #define   SET16CacheMSG_uv(r16,v)                          _BFSET_(r16, 6, 6,v)

    #define   GET32CacheMSG_fldMB(r32)                         _BFGET_(r32,23,23)
    #define   SET32CacheMSG_fldMB(r32,v)                       _BFSET_(r32,23,23,v)
    #define   GET16CacheMSG_fldMB(r16)                         _BFGET_(r16, 7, 7)
    #define   SET16CacheMSG_fldMB(r16,v)                       _BFSET_(r16, 7, 7,v)

    #define   GET32CacheMSG_hint(r32)                          _BFGET_(r32,25,24)
    #define   SET32CacheMSG_hint(r32,v)                        _BFSET_(r32,25,24,v)
    #define   GET16CacheMSG_hint(r16)                          _BFGET_(r16, 9, 8)
    #define   SET16CacheMSG_hint(r16,v)                        _BFSET_(r16, 9, 8,v)

    #define   GET32CacheMSG_descID(r32)                        _BFGET_(r32,31,26)
    #define   SET32CacheMSG_descID(r32,v)                      _BFSET_(r32,31,26,v)
    #define   GET16CacheMSG_descID(r16)                        _BFGET_(r16,15,10)
    #define   SET16CacheMSG_descID(r16,v)                      _BFSET_(r16,15,10,v)

            UNSG32 u_xLocExp                                   :  5;
            UNSG32 u_xPixExp                                   :  3;
            UNSG32 u_yLocExp                                   :  5;
            UNSG32 u_yPixExp                                   :  3;
            UNSG32 u_rBID                                      :  6;
            UNSG32 u_uv                                        :  1;
            UNSG32 u_fldMB                                     :  1;
            UNSG32 u_hint                                      :  2;
            UNSG32 u_descID                                    :  6;
    ///////////////////////////////////////////////////////////
    } SIE_CacheMSG;

    ///////////////////////////////////////////////////////////
     SIGN32 CacheMSG_drvrd(SIE_CacheMSG *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CacheMSG_drvwr(SIE_CacheMSG *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CacheMSG_reset(SIE_CacheMSG *p);
     SIGN32 CacheMSG_cmp  (SIE_CacheMSG *p, SIE_CacheMSG *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CacheMSG_check(p,pie,pfx,hLOG) CacheMSG_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CacheMSG_print(p,    pfx,hLOG) CacheMSG_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CacheMSG
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BitOpX4                 biu              (4,4)
///     ###
///     * Operator format for BitOp extension
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 6  idx                       
///                                    ###
///                                    * rS[idx] or xT[idx] is used as source bit
///                                    * In case src==rS, idx[5:4] specifies the operation mode:
///                                    * idx[5:4]==2'b0x: output is from rS
///                                    * idx[5:4]==2'b10: output bit is forced to 0
///                                    * idx[5:4]==2'b11: output bit is forced to 1
///                                    ###
///               %unsigned 1  src                       
///                                    : xT                        0x0
///                                    : rS                        0x1
///                                                 ###
///                                                 * If src=rS, the source is from 16-bit input
///                                                 * If src=xT, the source is from 64-bit input
///                                                 ###
///               %unsigned 1  mode                      
///                                    : copy                      0x0
///                                    : inv                       0x1
///                                                 ###
///                                                 * copy: target bit copied from source bit
///                                                 * inv: target bit copied from source bit then inverted
///                                                 * Not used when src==rS & idx[5]==1'b1
///                                                 ###
///               %unsigned 6  idx1                      
///               %unsigned 1  src1                      
///               %unsigned 1  mode1                     
///               %unsigned 6  idx2                      
///               %unsigned 1  src2                      
///               %unsigned 1  mode2                     
///               %unsigned 6  idx3                      
///               %unsigned 1  src3                      
///               %unsigned 1  mode3                     
///                                    ###
///                                    * End BitOpX4
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BitOpX4
#define h_BitOpX4 (){}

    #define     BA_BitOpX4_idx                                 0x0000
    #define     B16BitOpX4_idx                                 0x0000
    #define   LSb32BitOpX4_idx                                    0
    #define   LSb16BitOpX4_idx                                    0
    #define       bBitOpX4_idx                                 6
    #define   MSK32BitOpX4_idx                                    0x0000003F

    #define     BA_BitOpX4_src                                 0x0000
    #define     B16BitOpX4_src                                 0x0000
    #define   LSb32BitOpX4_src                                    6
    #define   LSb16BitOpX4_src                                    6
    #define       bBitOpX4_src                                 1
    #define   MSK32BitOpX4_src                                    0x00000040
    #define        BitOpX4_src_xT                                           0x0
    #define        BitOpX4_src_rS                                           0x1

    #define     BA_BitOpX4_mode                                0x0000
    #define     B16BitOpX4_mode                                0x0000
    #define   LSb32BitOpX4_mode                                   7
    #define   LSb16BitOpX4_mode                                   7
    #define       bBitOpX4_mode                                1
    #define   MSK32BitOpX4_mode                                   0x00000080
    #define        BitOpX4_mode_copy                                        0x0
    #define        BitOpX4_mode_inv                                         0x1

    #define     BA_BitOpX4_idx1                                0x0001
    #define     B16BitOpX4_idx1                                0x0000
    #define   LSb32BitOpX4_idx1                                   8
    #define   LSb16BitOpX4_idx1                                   8
    #define       bBitOpX4_idx1                                6
    #define   MSK32BitOpX4_idx1                                   0x00003F00

    #define     BA_BitOpX4_src1                                0x0001
    #define     B16BitOpX4_src1                                0x0000
    #define   LSb32BitOpX4_src1                                   14
    #define   LSb16BitOpX4_src1                                   14
    #define       bBitOpX4_src1                                1
    #define   MSK32BitOpX4_src1                                   0x00004000

    #define     BA_BitOpX4_mode1                               0x0001
    #define     B16BitOpX4_mode1                               0x0000
    #define   LSb32BitOpX4_mode1                                  15
    #define   LSb16BitOpX4_mode1                                  15
    #define       bBitOpX4_mode1                               1
    #define   MSK32BitOpX4_mode1                                  0x00008000

    #define     BA_BitOpX4_idx2                                0x0002
    #define     B16BitOpX4_idx2                                0x0002
    #define   LSb32BitOpX4_idx2                                   16
    #define   LSb16BitOpX4_idx2                                   0
    #define       bBitOpX4_idx2                                6
    #define   MSK32BitOpX4_idx2                                   0x003F0000

    #define     BA_BitOpX4_src2                                0x0002
    #define     B16BitOpX4_src2                                0x0002
    #define   LSb32BitOpX4_src2                                   22
    #define   LSb16BitOpX4_src2                                   6
    #define       bBitOpX4_src2                                1
    #define   MSK32BitOpX4_src2                                   0x00400000

    #define     BA_BitOpX4_mode2                               0x0002
    #define     B16BitOpX4_mode2                               0x0002
    #define   LSb32BitOpX4_mode2                                  23
    #define   LSb16BitOpX4_mode2                                  7
    #define       bBitOpX4_mode2                               1
    #define   MSK32BitOpX4_mode2                                  0x00800000

    #define     BA_BitOpX4_idx3                                0x0003
    #define     B16BitOpX4_idx3                                0x0002
    #define   LSb32BitOpX4_idx3                                   24
    #define   LSb16BitOpX4_idx3                                   8
    #define       bBitOpX4_idx3                                6
    #define   MSK32BitOpX4_idx3                                   0x3F000000

    #define     BA_BitOpX4_src3                                0x0003
    #define     B16BitOpX4_src3                                0x0002
    #define   LSb32BitOpX4_src3                                   30
    #define   LSb16BitOpX4_src3                                   14
    #define       bBitOpX4_src3                                1
    #define   MSK32BitOpX4_src3                                   0x40000000

    #define     BA_BitOpX4_mode3                               0x0003
    #define     B16BitOpX4_mode3                               0x0002
    #define   LSb32BitOpX4_mode3                                  31
    #define   LSb16BitOpX4_mode3                                  15
    #define       bBitOpX4_mode3                               1
    #define   MSK32BitOpX4_mode3                                  0x80000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BitOpX4 {
    ///////////////////////////////////////////////////////////
    #define   GET32BitOpX4_idx(r32)                            _BFGET_(r32, 5, 0)
    #define   SET32BitOpX4_idx(r32,v)                          _BFSET_(r32, 5, 0,v)
    #define   GET16BitOpX4_idx(r16)                            _BFGET_(r16, 5, 0)
    #define   SET16BitOpX4_idx(r16,v)                          _BFSET_(r16, 5, 0,v)

    #define   GET32BitOpX4_src(r32)                            _BFGET_(r32, 6, 6)
    #define   SET32BitOpX4_src(r32,v)                          _BFSET_(r32, 6, 6,v)
    #define   GET16BitOpX4_src(r16)                            _BFGET_(r16, 6, 6)
    #define   SET16BitOpX4_src(r16,v)                          _BFSET_(r16, 6, 6,v)

    #define   GET32BitOpX4_mode(r32)                           _BFGET_(r32, 7, 7)
    #define   SET32BitOpX4_mode(r32,v)                         _BFSET_(r32, 7, 7,v)
    #define   GET16BitOpX4_mode(r16)                           _BFGET_(r16, 7, 7)
    #define   SET16BitOpX4_mode(r16,v)                         _BFSET_(r16, 7, 7,v)

    #define   GET32BitOpX4_idx1(r32)                           _BFGET_(r32,13, 8)
    #define   SET32BitOpX4_idx1(r32,v)                         _BFSET_(r32,13, 8,v)
    #define   GET16BitOpX4_idx1(r16)                           _BFGET_(r16,13, 8)
    #define   SET16BitOpX4_idx1(r16,v)                         _BFSET_(r16,13, 8,v)

    #define   GET32BitOpX4_src1(r32)                           _BFGET_(r32,14,14)
    #define   SET32BitOpX4_src1(r32,v)                         _BFSET_(r32,14,14,v)
    #define   GET16BitOpX4_src1(r16)                           _BFGET_(r16,14,14)
    #define   SET16BitOpX4_src1(r16,v)                         _BFSET_(r16,14,14,v)

    #define   GET32BitOpX4_mode1(r32)                          _BFGET_(r32,15,15)
    #define   SET32BitOpX4_mode1(r32,v)                        _BFSET_(r32,15,15,v)
    #define   GET16BitOpX4_mode1(r16)                          _BFGET_(r16,15,15)
    #define   SET16BitOpX4_mode1(r16,v)                        _BFSET_(r16,15,15,v)

    #define   GET32BitOpX4_idx2(r32)                           _BFGET_(r32,21,16)
    #define   SET32BitOpX4_idx2(r32,v)                         _BFSET_(r32,21,16,v)
    #define   GET16BitOpX4_idx2(r16)                           _BFGET_(r16, 5, 0)
    #define   SET16BitOpX4_idx2(r16,v)                         _BFSET_(r16, 5, 0,v)

    #define   GET32BitOpX4_src2(r32)                           _BFGET_(r32,22,22)
    #define   SET32BitOpX4_src2(r32,v)                         _BFSET_(r32,22,22,v)
    #define   GET16BitOpX4_src2(r16)                           _BFGET_(r16, 6, 6)
    #define   SET16BitOpX4_src2(r16,v)                         _BFSET_(r16, 6, 6,v)

    #define   GET32BitOpX4_mode2(r32)                          _BFGET_(r32,23,23)
    #define   SET32BitOpX4_mode2(r32,v)                        _BFSET_(r32,23,23,v)
    #define   GET16BitOpX4_mode2(r16)                          _BFGET_(r16, 7, 7)
    #define   SET16BitOpX4_mode2(r16,v)                        _BFSET_(r16, 7, 7,v)

    #define   GET32BitOpX4_idx3(r32)                           _BFGET_(r32,29,24)
    #define   SET32BitOpX4_idx3(r32,v)                         _BFSET_(r32,29,24,v)
    #define   GET16BitOpX4_idx3(r16)                           _BFGET_(r16,13, 8)
    #define   SET16BitOpX4_idx3(r16,v)                         _BFSET_(r16,13, 8,v)

    #define   GET32BitOpX4_src3(r32)                           _BFGET_(r32,30,30)
    #define   SET32BitOpX4_src3(r32,v)                         _BFSET_(r32,30,30,v)
    #define   GET16BitOpX4_src3(r16)                           _BFGET_(r16,14,14)
    #define   SET16BitOpX4_src3(r16,v)                         _BFSET_(r16,14,14,v)

    #define   GET32BitOpX4_mode3(r32)                          _BFGET_(r32,31,31)
    #define   SET32BitOpX4_mode3(r32,v)                        _BFSET_(r32,31,31,v)
    #define   GET16BitOpX4_mode3(r16)                          _BFGET_(r16,15,15)
    #define   SET16BitOpX4_mode3(r16,v)                        _BFSET_(r16,15,15,v)

            UNSG32 u_idx                                       :  6;
            UNSG32 u_src                                       :  1;
            UNSG32 u_mode                                      :  1;
            UNSG32 u_idx1                                      :  6;
            UNSG32 u_src1                                      :  1;
            UNSG32 u_mode1                                     :  1;
            UNSG32 u_idx2                                      :  6;
            UNSG32 u_src2                                      :  1;
            UNSG32 u_mode2                                     :  1;
            UNSG32 u_idx3                                      :  6;
            UNSG32 u_src3                                      :  1;
            UNSG32 u_mode3                                     :  1;
    ///////////////////////////////////////////////////////////
    } SIE_BitOpX4;

    ///////////////////////////////////////////////////////////
     SIGN32 BitOpX4_drvrd(SIE_BitOpX4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BitOpX4_drvwr(SIE_BitOpX4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BitOpX4_reset(SIE_BitOpX4 *p);
     SIGN32 BitOpX4_cmp  (SIE_BitOpX4 *p, SIE_BitOpX4 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BitOpX4_check(p,pie,pfx,hLOG) BitOpX4_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BitOpX4_print(p,    pfx,hLOG) BitOpX4_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BitOpX4
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BITOPRF64               biu              (4,4)
///     ###
///     * Operator format for BitOp extension
///     ###
///     # # ----------------------------------------------------------
///               : BitOp0             0x20
///               : BitOp1             0x21
///               : BitOp2             0x22
///               : BitOp3             0x23
///                            ###
///                            * extension ID definition; must be consistent with vScope_F0A64_BitOp0~3
///                            ###
///     @ 0x00000                      (P)
///     # 0x00000 cmd0                 
///               $BitOpX4             cmd0              REG       [4]
///     @ 0x00010                      (P)
///     # 0x00010 cmd1                 
///               $BitOpX4             cmd1              REG       [4]
///     @ 0x00020                      (P)
///     # 0x00020 cmd2                 
///               $BitOpX4             cmd2              REG       [4]
///     @ 0x00030                      (P)
///     # 0x00030 cmd3                 
///               $BitOpX4             cmd3              REG       [4]
///                                    ###
///                                    * Four BitOp commands, selected by extension ID
///                                    * End BitOpCtx
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      64B, bits:     512b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BITOPRF64
#define h_BITOPRF64 (){}

    #define        BITOPRF64_BitOp0                            0x20
    #define        BITOPRF64_BitOp1                            0x21
    #define        BITOPRF64_BitOp2                            0x22
    #define        BITOPRF64_BitOp3                            0x23
    ///////////////////////////////////////////////////////////
    #define     RA_BITOPRF64_cmd0                              0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_BITOPRF64_cmd1                              0x0010
    ///////////////////////////////////////////////////////////
    #define     RA_BITOPRF64_cmd2                              0x0020
    ///////////////////////////////////////////////////////////
    #define     RA_BITOPRF64_cmd3                              0x0030
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BITOPRF64 {
    ///////////////////////////////////////////////////////////
              SIE_BitOpX4                                      ie_cmd0[4];
    ///////////////////////////////////////////////////////////
              SIE_BitOpX4                                      ie_cmd1[4];
    ///////////////////////////////////////////////////////////
              SIE_BitOpX4                                      ie_cmd2[4];
    ///////////////////////////////////////////////////////////
              SIE_BitOpX4                                      ie_cmd3[4];
    ///////////////////////////////////////////////////////////
    } SIE_BITOPRF64;

    ///////////////////////////////////////////////////////////
     SIGN32 BITOPRF64_drvrd(SIE_BITOPRF64 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BITOPRF64_drvwr(SIE_BITOPRF64 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BITOPRF64_reset(SIE_BITOPRF64 *p);
     SIGN32 BITOPRF64_cmp  (SIE_BITOPRF64 *p, SIE_BITOPRF64 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BITOPRF64_check(p,pie,pfx,hLOG) BITOPRF64_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BITOPRF64_print(p,    pfx,hLOG) BITOPRF64_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BITOPRF64
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dirMvScale              biu              (4,4)
///     ###
///     * Scaling factors for temporal direct MV calculation
///     * [0:31]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %signed   12 factor                    
///                                    ###
///                                    * = clip(-1024, 1023, (tb*tx+32)>>6)
///                                    ###
///               %unsigned 20 RSVD20                    
///                                    ###
///                                    * pad to 32 bits
///                                    * [32:63]
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 32 RSVD32                    
///                                    ###
///                                    * pad to 64 bits
///                                    * End dirMvScale
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dirMvScale
#define h_dirMvScale (){}

    #define     BA_dirMvScale_factor                           0x0000
    #define     B16dirMvScale_factor                           0x0000
    #define   LSb32dirMvScale_factor                              0
    #define   LSb16dirMvScale_factor                              0
    #define       bdirMvScale_factor                           12
    #define   MSK32dirMvScale_factor                              0x00000FFF

    #define     BA_dirMvScale_RSVD20                           0x0001
    #define     B16dirMvScale_RSVD20                           0x0000
    #define   LSb32dirMvScale_RSVD20                              12
    #define   LSb16dirMvScale_RSVD20                              12
    #define       bdirMvScale_RSVD20                           20
    #define   MSK32dirMvScale_RSVD20                              0xFFFFF000
    ///////////////////////////////////////////////////////////

    #define     BA_dirMvScale_RSVD32                           0x0004
    #define     B16dirMvScale_RSVD32                           0x0004
    #define   LSb32dirMvScale_RSVD32                              0
    #define   LSb16dirMvScale_RSVD32                              0
    #define       bdirMvScale_RSVD32                           32
    #define   MSK32dirMvScale_RSVD32                              0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dirMvScale {
    ///////////////////////////////////////////////////////////
    #define   GET32dirMvScale_factor(r32)                      _BFGET_(r32,11, 0)
    #define   SET32dirMvScale_factor(r32,v)                    _BFSET_(r32,11, 0,v)
    #define   GET16dirMvScale_factor(r16)                      _BFGET_(r16,11, 0)
    #define   SET16dirMvScale_factor(r16,v)                    _BFSET_(r16,11, 0,v)

    #define   GET32dirMvScale_RSVD20(r32)                      _BFGET_(r32,31,12)
    #define   SET32dirMvScale_RSVD20(r32,v)                    _BFSET_(r32,31,12,v)

            UNSG32 s_factor                                    : 12;
            UNSG32 u_RSVD20                                    : 20;
    ///////////////////////////////////////////////////////////
    #define   GET32dirMvScale_RSVD32(r32)                      _BFGET_(r32,31, 0)
    #define   SET32dirMvScale_RSVD32(r32,v)                    _BFSET_(r32,31, 0,v)

            UNSG32 u_RSVD32                                    : 32;
    ///////////////////////////////////////////////////////////
    } SIE_dirMvScale;

    ///////////////////////////////////////////////////////////
     SIGN32 dirMvScale_drvrd(SIE_dirMvScale *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dirMvScale_drvwr(SIE_dirMvScale *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dirMvScale_reset(SIE_dirMvScale *p);
     SIGN32 dirMvScale_cmp  (SIE_dirMvScale *p, SIE_dirMvScale *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dirMvScale_check(p,pie,pfx,hLOG) dirMvScale_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dirMvScale_print(p,    pfx,hLOG) dirMvScale_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dirMvScale
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE avsDirMvScale           biu              (4,4)
///     ###
///     * Scaling factors for temporal direct MV calculation for AVS
///     * [0:31]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 16 BlockDistanceFw           
///                                    ###
///                                    * Block Distance between current block and forward reference block.
///                                    ###
///               %unsigned 16 BlockDistanceBw           
///                                    ###
///                                    * Block Distance between backward reference block and current block.
///                                    * [32:63]
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 16 invBlockDistanceRef       
///                                    ###
///                                    * 16384/BlockDistanceRef, where BlockDistanceRef is the block distance between backward reference block and reference block of the co-located block.
///                                    ###
///               %unsigned 16 RSVD16                    
///                                    ###
///                                    * pad to 64 bits
///                                    * End avsDirMvScale
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_avsDirMvScale
#define h_avsDirMvScale (){}

    #define     BA_avsDirMvScale_BlockDistanceFw               0x0000
    #define     B16avsDirMvScale_BlockDistanceFw               0x0000
    #define   LSb32avsDirMvScale_BlockDistanceFw                  0
    #define   LSb16avsDirMvScale_BlockDistanceFw                  0
    #define       bavsDirMvScale_BlockDistanceFw               16
    #define   MSK32avsDirMvScale_BlockDistanceFw                  0x0000FFFF

    #define     BA_avsDirMvScale_BlockDistanceBw               0x0002
    #define     B16avsDirMvScale_BlockDistanceBw               0x0002
    #define   LSb32avsDirMvScale_BlockDistanceBw                  16
    #define   LSb16avsDirMvScale_BlockDistanceBw                  0
    #define       bavsDirMvScale_BlockDistanceBw               16
    #define   MSK32avsDirMvScale_BlockDistanceBw                  0xFFFF0000
    ///////////////////////////////////////////////////////////

    #define     BA_avsDirMvScale_invBlockDistanceRef           0x0004
    #define     B16avsDirMvScale_invBlockDistanceRef           0x0004
    #define   LSb32avsDirMvScale_invBlockDistanceRef              0
    #define   LSb16avsDirMvScale_invBlockDistanceRef              0
    #define       bavsDirMvScale_invBlockDistanceRef           16
    #define   MSK32avsDirMvScale_invBlockDistanceRef              0x0000FFFF

    #define     BA_avsDirMvScale_RSVD16                        0x0006
    #define     B16avsDirMvScale_RSVD16                        0x0006
    #define   LSb32avsDirMvScale_RSVD16                           16
    #define   LSb16avsDirMvScale_RSVD16                           0
    #define       bavsDirMvScale_RSVD16                        16
    #define   MSK32avsDirMvScale_RSVD16                           0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_avsDirMvScale {
    ///////////////////////////////////////////////////////////
    #define   GET32avsDirMvScale_BlockDistanceFw(r32)          _BFGET_(r32,15, 0)
    #define   SET32avsDirMvScale_BlockDistanceFw(r32,v)        _BFSET_(r32,15, 0,v)
    #define   GET16avsDirMvScale_BlockDistanceFw(r16)          _BFGET_(r16,15, 0)
    #define   SET16avsDirMvScale_BlockDistanceFw(r16,v)        _BFSET_(r16,15, 0,v)

    #define   GET32avsDirMvScale_BlockDistanceBw(r32)          _BFGET_(r32,31,16)
    #define   SET32avsDirMvScale_BlockDistanceBw(r32,v)        _BFSET_(r32,31,16,v)
    #define   GET16avsDirMvScale_BlockDistanceBw(r16)          _BFGET_(r16,15, 0)
    #define   SET16avsDirMvScale_BlockDistanceBw(r16,v)        _BFSET_(r16,15, 0,v)

            UNSG32 u_BlockDistanceFw                           : 16;
            UNSG32 u_BlockDistanceBw                           : 16;
    ///////////////////////////////////////////////////////////
    #define   GET32avsDirMvScale_invBlockDistanceRef(r32)      _BFGET_(r32,15, 0)
    #define   SET32avsDirMvScale_invBlockDistanceRef(r32,v)    _BFSET_(r32,15, 0,v)
    #define   GET16avsDirMvScale_invBlockDistanceRef(r16)      _BFGET_(r16,15, 0)
    #define   SET16avsDirMvScale_invBlockDistanceRef(r16,v)    _BFSET_(r16,15, 0,v)

    #define   GET32avsDirMvScale_RSVD16(r32)                   _BFGET_(r32,31,16)
    #define   SET32avsDirMvScale_RSVD16(r32,v)                 _BFSET_(r32,31,16,v)
    #define   GET16avsDirMvScale_RSVD16(r16)                   _BFGET_(r16,15, 0)
    #define   SET16avsDirMvScale_RSVD16(r16,v)                 _BFSET_(r16,15, 0,v)

            UNSG32 u_invBlockDistanceRef                       : 16;
            UNSG32 u_RSVD16                                    : 16;
    ///////////////////////////////////////////////////////////
    } SIE_avsDirMvScale;

    ///////////////////////////////////////////////////////////
     SIGN32 avsDirMvScale_drvrd(SIE_avsDirMvScale *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 avsDirMvScale_drvwr(SIE_avsDirMvScale *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void avsDirMvScale_reset(SIE_avsDirMvScale *p);
     SIGN32 avsDirMvScale_cmp  (SIE_avsDirMvScale *p, SIE_avsDirMvScale *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define avsDirMvScale_check(p,pie,pfx,hLOG) avsDirMvScale_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define avsDirMvScale_print(p,    pfx,hLOG) avsDirMvScale_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: avsDirMvScale
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE LUT8b                                    (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 8  data                      
///                                    ###
///                                    * Any 8b data
///                                    ###
///               %unsigned 8  data1                     
///               %unsigned 8  data2                     
///               %unsigned 8  data3                     
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_LUT8b
#define h_LUT8b (){}

    #define     BA_LUT8b_data                                  0x0000
    #define     B16LUT8b_data                                  0x0000
    #define   LSb32LUT8b_data                                     0
    #define   LSb16LUT8b_data                                     0
    #define       bLUT8b_data                                  8
    #define   MSK32LUT8b_data                                     0x000000FF

    #define     BA_LUT8b_data1                                 0x0001
    #define     B16LUT8b_data1                                 0x0000
    #define   LSb32LUT8b_data1                                    8
    #define   LSb16LUT8b_data1                                    8
    #define       bLUT8b_data1                                 8
    #define   MSK32LUT8b_data1                                    0x0000FF00

    #define     BA_LUT8b_data2                                 0x0002
    #define     B16LUT8b_data2                                 0x0002
    #define   LSb32LUT8b_data2                                    16
    #define   LSb16LUT8b_data2                                    0
    #define       bLUT8b_data2                                 8
    #define   MSK32LUT8b_data2                                    0x00FF0000

    #define     BA_LUT8b_data3                                 0x0003
    #define     B16LUT8b_data3                                 0x0002
    #define   LSb32LUT8b_data3                                    24
    #define   LSb16LUT8b_data3                                    8
    #define       bLUT8b_data3                                 8
    #define   MSK32LUT8b_data3                                    0xFF000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_LUT8b {
    ///////////////////////////////////////////////////////////
    #define   GET32LUT8b_data(r32)                             _BFGET_(r32, 7, 0)
    #define   SET32LUT8b_data(r32,v)                           _BFSET_(r32, 7, 0,v)
    #define   GET16LUT8b_data(r16)                             _BFGET_(r16, 7, 0)
    #define   SET16LUT8b_data(r16,v)                           _BFSET_(r16, 7, 0,v)

    #define   GET32LUT8b_data1(r32)                            _BFGET_(r32,15, 8)
    #define   SET32LUT8b_data1(r32,v)                          _BFSET_(r32,15, 8,v)
    #define   GET16LUT8b_data1(r16)                            _BFGET_(r16,15, 8)
    #define   SET16LUT8b_data1(r16,v)                          _BFSET_(r16,15, 8,v)

    #define   GET32LUT8b_data2(r32)                            _BFGET_(r32,23,16)
    #define   SET32LUT8b_data2(r32,v)                          _BFSET_(r32,23,16,v)
    #define   GET16LUT8b_data2(r16)                            _BFGET_(r16, 7, 0)
    #define   SET16LUT8b_data2(r16,v)                          _BFSET_(r16, 7, 0,v)

    #define   GET32LUT8b_data3(r32)                            _BFGET_(r32,31,24)
    #define   SET32LUT8b_data3(r32,v)                          _BFSET_(r32,31,24,v)
    #define   GET16LUT8b_data3(r16)                            _BFGET_(r16,15, 8)
    #define   SET16LUT8b_data3(r16,v)                          _BFSET_(r16,15, 8,v)

            UNSG32 u_data                                      :  8;
            UNSG32 u_data1                                     :  8;
            UNSG32 u_data2                                     :  8;
            UNSG32 u_data3                                     :  8;
    ///////////////////////////////////////////////////////////
    } SIE_LUT8b;

    ///////////////////////////////////////////////////////////
     SIGN32 LUT8b_drvrd(SIE_LUT8b *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 LUT8b_drvwr(SIE_LUT8b *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void LUT8b_reset(SIE_LUT8b *p);
     SIGN32 LUT8b_cmp  (SIE_LUT8b *p, SIE_LUT8b *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define LUT8b_check(p,pie,pfx,hLOG) LUT8b_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define LUT8b_print(p,    pfx,hLOG) LUT8b_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: LUT8b
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE LUT64b                                   (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 32 data_0i                   
///               %unsigned 32 data_1i                   
///                                    ###
///                                    * Any 64b data
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_LUT64b
#define h_LUT64b (){}

    #define     BA_LUT64b_data_0i                              0x0000
    #define     B16LUT64b_data_0i                              0x0000
    #define   LSb32LUT64b_data_0i                                 0
    #define   LSb16LUT64b_data_0i                                 0
    #define       bLUT64b_data_0i                              32
    #define   MSK32LUT64b_data_0i                                 0xFFFFFFFF

    #define     BA_LUT64b_data_1i                              0x0004
    #define     B16LUT64b_data_1i                              0x0004
    #define   LSb32LUT64b_data_1i                                 0
    #define   LSb16LUT64b_data_1i                                 0
    #define       bLUT64b_data_1i                              32
    #define   MSK32LUT64b_data_1i                                 0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_LUT64b {
    ///////////////////////////////////////////////////////////
    #define   GET32LUT64b_data_0i(r32)                         _BFGET_(r32,31, 0)
    #define   SET32LUT64b_data_0i(r32,v)                       _BFSET_(r32,31, 0,v)

            UNSG32 u_data_0i                                   : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32LUT64b_data_1i(r32)                         _BFGET_(r32,31, 0)
    #define   SET32LUT64b_data_1i(r32,v)                       _BFSET_(r32,31, 0,v)

            UNSG32 u_data_1i                                   : 32;
    ///////////////////////////////////////////////////////////
    } SIE_LUT64b;

    ///////////////////////////////////////////////////////////
     SIGN32 LUT64b_drvrd(SIE_LUT64b *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 LUT64b_drvwr(SIE_LUT64b *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void LUT64b_reset(SIE_LUT64b *p);
     SIGN32 LUT64b_cmp  (SIE_LUT64b *p, SIE_LUT64b *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define LUT64b_check(p,pie,pfx,hLOG) LUT64b_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define LUT64b_print(p,    pfx,hLOG) LUT64b_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: LUT64b
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE NLoc                                     (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 4  BLK                       
///                                    ###
///                                    * Block index
///                                    ###
///               %unsigned 4  category                  
///                                    : 16x16                     0x8
///                                    : 8x16                      0x9
///                                    : 16x8                      0xA
///                                    : 4mv                       0xB
///                                    : 8x8                       0xC
///                                    : 4x8                       0xD
///                                    : 8x4                       0xE
///                                    : 4x4                       0xF
///                                                 ###
///                                                 * Consistent with vcMsg{RSVD,level,partition}
///                                                 * Valid cases for Neighbor:
///                                                 * 16x16=16x8
///                                                 * 8x16=4mv=8x8=8x4
///                                                 * 4x8=4x4=ACY
///                                                 * Valid cases for PMV:
///                                                 * 16x16=16x8
///                                                 * 8x16
///                                                 * 4mv=8x8=8x4
///                                                 * 4x8=4x4=ACY
///                                                 ###
///                                    : ACY                       0x0
///                                                 ###
///                                                 * Valid block index:
///                                                 * 0~15 (every 4x4 indexed by coding order)
///                                                 ###
///                                    : ACU                       0x2
///                                                 ###
///                                                 * Valid block index:
///                                                 * 0~3 (3rd 4x4 in every 8x8)
///                                                 ###
///                                    : ACV                       0x3
///                                                 ###
///                                                 * Valid block index:
///                                                 * 0~3 (4th 4x4 in every 8x8)
///                                                 ###
///                                    : I16AC                     0x4
///                                                 ###
///                                                 * Only used as category, should be converted to ACY for neighbor look-up
///                                                 ###
///                                    : DCI                       0x4
///                                                 ###
///                                                 * Valid block index:
///                                                 * 0 (3rd 4x4 in 4th 8x8 only)
///                                                 ###
///                                    : DCY                       0x5
///                                                 ###
///                                                 * Valid block index:
///                                                 * 0 (4th 4x4 in 4th 8x8 only)
///                                                 ###
///                                    : SDPMV                     0x5
///                                                 ###
///                                                 * Reuse DCY in PMV extension, for Spatial Direct mode rIDX recovery.
///                                                 ###
///                                    : DCU                       0x6
///                                                 ###
///                                                 * Valid block index:
///                                                 * 0 (3rd 4x4 in 3rd 8x8 only)
///                                                 ###
///                                    : DCV                       0x7
///                                                 ###
///                                                 * Valid block index:
///                                                 * 0 (4th 4x4 in 3rd 8x8 only)
///                                                 ###
///               %unsigned 1  parity                    
///                                    ###
///                                    * 0/1 as even/odd, only for loop-filter
///                                    ###
///               %unsigned 1  direct                    
///                                    ###
///                                    * FW use only: if direct mode
///                                    * AVS: use for sym mode in hardware.
///                                    ###
///               %unsigned 2  motion                    
///                                    ###
///                                    * FW use only: motion type
///                                    ###
///               %unsigned 1  A                         
///                                    ###
///                                    * Left macroblock/block availability
///                                    ###
///               %unsigned 1  B                         
///                                    ###
///                                    * Upper macroblock/block availability
///                                    ###
///               %unsigned 1  C                         
///                                    ###
///                                    * Upper-right macroblock/block availability
///                                    ###
///               %unsigned 1  D                         
///                                    ###
///                                    * Upper-left macroblock/block availability
///                                    ###
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_NLoc
#define h_NLoc (){}

    #define     BA_NLoc_BLK                                    0x0000
    #define     B16NLoc_BLK                                    0x0000
    #define   LSb32NLoc_BLK                                       0
    #define   LSb16NLoc_BLK                                       0
    #define       bNLoc_BLK                                    4
    #define   MSK32NLoc_BLK                                       0x0000000F

    #define     BA_NLoc_category                               0x0000
    #define     B16NLoc_category                               0x0000
    #define   LSb32NLoc_category                                  4
    #define   LSb16NLoc_category                                  4
    #define       bNLoc_category                               4
    #define   MSK32NLoc_category                                  0x000000F0
    #define        NLoc_category_16x16                                      0x8
    #define        NLoc_category_8x16                                       0x9
    #define        NLoc_category_16x8                                       0xA
    #define        NLoc_category_4mv                                        0xB
    #define        NLoc_category_8x8                                        0xC
    #define        NLoc_category_4x8                                        0xD
    #define        NLoc_category_8x4                                        0xE
    #define        NLoc_category_4x4                                        0xF
    #define        NLoc_category_ACY                                        0x0
    #define        NLoc_category_ACU                                        0x2
    #define        NLoc_category_ACV                                        0x3
    #define        NLoc_category_I16AC                                      0x4
    #define        NLoc_category_DCI                                        0x4
    #define        NLoc_category_DCY                                        0x5
    #define        NLoc_category_SDPMV                                      0x5
    #define        NLoc_category_DCU                                        0x6
    #define        NLoc_category_DCV                                        0x7

    #define     BA_NLoc_parity                                 0x0001
    #define     B16NLoc_parity                                 0x0000
    #define   LSb32NLoc_parity                                    8
    #define   LSb16NLoc_parity                                    8
    #define       bNLoc_parity                                 1
    #define   MSK32NLoc_parity                                    0x00000100

    #define     BA_NLoc_direct                                 0x0001
    #define     B16NLoc_direct                                 0x0000
    #define   LSb32NLoc_direct                                    9
    #define   LSb16NLoc_direct                                    9
    #define       bNLoc_direct                                 1
    #define   MSK32NLoc_direct                                    0x00000200

    #define     BA_NLoc_motion                                 0x0001
    #define     B16NLoc_motion                                 0x0000
    #define   LSb32NLoc_motion                                    10
    #define   LSb16NLoc_motion                                    10
    #define       bNLoc_motion                                 2
    #define   MSK32NLoc_motion                                    0x00000C00

    #define     BA_NLoc_A                                      0x0001
    #define     B16NLoc_A                                      0x0000
    #define   LSb32NLoc_A                                         12
    #define   LSb16NLoc_A                                         12
    #define       bNLoc_A                                      1
    #define   MSK32NLoc_A                                         0x00001000

    #define     BA_NLoc_B                                      0x0001
    #define     B16NLoc_B                                      0x0000
    #define   LSb32NLoc_B                                         13
    #define   LSb16NLoc_B                                         13
    #define       bNLoc_B                                      1
    #define   MSK32NLoc_B                                         0x00002000

    #define     BA_NLoc_C                                      0x0001
    #define     B16NLoc_C                                      0x0000
    #define   LSb32NLoc_C                                         14
    #define   LSb16NLoc_C                                         14
    #define       bNLoc_C                                      1
    #define   MSK32NLoc_C                                         0x00004000

    #define     BA_NLoc_D                                      0x0001
    #define     B16NLoc_D                                      0x0000
    #define   LSb32NLoc_D                                         15
    #define   LSb16NLoc_D                                         15
    #define       bNLoc_D                                      1
    #define   MSK32NLoc_D                                         0x00008000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_NLoc {
    ///////////////////////////////////////////////////////////
    #define   GET32NLoc_BLK(r32)                               _BFGET_(r32, 3, 0)
    #define   SET32NLoc_BLK(r32,v)                             _BFSET_(r32, 3, 0,v)
    #define   GET16NLoc_BLK(r16)                               _BFGET_(r16, 3, 0)
    #define   SET16NLoc_BLK(r16,v)                             _BFSET_(r16, 3, 0,v)

    #define   GET32NLoc_category(r32)                          _BFGET_(r32, 7, 4)
    #define   SET32NLoc_category(r32,v)                        _BFSET_(r32, 7, 4,v)
    #define   GET16NLoc_category(r16)                          _BFGET_(r16, 7, 4)
    #define   SET16NLoc_category(r16,v)                        _BFSET_(r16, 7, 4,v)

    #define   GET32NLoc_parity(r32)                            _BFGET_(r32, 8, 8)
    #define   SET32NLoc_parity(r32,v)                          _BFSET_(r32, 8, 8,v)
    #define   GET16NLoc_parity(r16)                            _BFGET_(r16, 8, 8)
    #define   SET16NLoc_parity(r16,v)                          _BFSET_(r16, 8, 8,v)

    #define   GET32NLoc_direct(r32)                            _BFGET_(r32, 9, 9)
    #define   SET32NLoc_direct(r32,v)                          _BFSET_(r32, 9, 9,v)
    #define   GET16NLoc_direct(r16)                            _BFGET_(r16, 9, 9)
    #define   SET16NLoc_direct(r16,v)                          _BFSET_(r16, 9, 9,v)

    #define   GET32NLoc_motion(r32)                            _BFGET_(r32,11,10)
    #define   SET32NLoc_motion(r32,v)                          _BFSET_(r32,11,10,v)
    #define   GET16NLoc_motion(r16)                            _BFGET_(r16,11,10)
    #define   SET16NLoc_motion(r16,v)                          _BFSET_(r16,11,10,v)

    #define   GET32NLoc_A(r32)                                 _BFGET_(r32,12,12)
    #define   SET32NLoc_A(r32,v)                               _BFSET_(r32,12,12,v)
    #define   GET16NLoc_A(r16)                                 _BFGET_(r16,12,12)
    #define   SET16NLoc_A(r16,v)                               _BFSET_(r16,12,12,v)

    #define   GET32NLoc_B(r32)                                 _BFGET_(r32,13,13)
    #define   SET32NLoc_B(r32,v)                               _BFSET_(r32,13,13,v)
    #define   GET16NLoc_B(r16)                                 _BFGET_(r16,13,13)
    #define   SET16NLoc_B(r16,v)                               _BFSET_(r16,13,13,v)

    #define   GET32NLoc_C(r32)                                 _BFGET_(r32,14,14)
    #define   SET32NLoc_C(r32,v)                               _BFSET_(r32,14,14,v)
    #define   GET16NLoc_C(r16)                                 _BFGET_(r16,14,14)
    #define   SET16NLoc_C(r16,v)                               _BFSET_(r16,14,14,v)

    #define   GET32NLoc_D(r32)                                 _BFGET_(r32,15,15)
    #define   SET32NLoc_D(r32,v)                               _BFSET_(r32,15,15,v)
    #define   GET16NLoc_D(r16)                                 _BFGET_(r16,15,15)
    #define   SET16NLoc_D(r16,v)                               _BFSET_(r16,15,15,v)

            UNSG32 u_BLK                                       :  4;
            UNSG32 u_category                                  :  4;
            UNSG32 u_parity                                    :  1;
            UNSG32 u_direct                                    :  1;
            UNSG32 u_motion                                    :  2;
            UNSG32 u_A                                         :  1;
            UNSG32 u_B                                         :  1;
            UNSG32 u_C                                         :  1;
            UNSG32 u_D                                         :  1;
            UNSG32 RSVDx0_b16                                  : 16;
    ///////////////////////////////////////////////////////////
    } SIE_NLoc;

    ///////////////////////////////////////////////////////////
     SIGN32 NLoc_drvrd(SIE_NLoc *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 NLoc_drvwr(SIE_NLoc *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void NLoc_reset(SIE_NLoc *p);
     SIGN32 NLoc_cmp  (SIE_NLoc *p, SIE_NLoc *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define NLoc_check(p,pie,pfx,hLOG) NLoc_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define NLoc_print(p,    pfx,hLOG) NLoc_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: NLoc
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BLK                                      (4,4)
///     # # ----------------------------------------------------------
///               : skip               0x0
///               : direct16x16        0x1
///               : 4BLK               0x2
///               : inter              0x3
///               : IPCM               0x4
///               : intra16x16         0x5
///               : intraNxN           0x6
///                            ###
///                            * Sub-set of mb_type
///                            * MPEG2: only skip, inter, intra (intra16x16)
///                            * MPEG4/VC-1: only 1 intra type (intra16x16)
///                            * AVS: skip, direct16x16, 4BLK, inter, intra16x16 (only 1 intra type)
///                            ###
///     @ 0x00000                      (P)
///               %unsigned 2  motion                    
///                                    : Intra                     0x0
///                                    : Forward                   0x1
///                                    : Backward                  0x2
///                                    : Bi                        0x3
///                                                 ###
///                                                 * Derived 8x8 block motion type
///                                                 * NOTE: direct mode uses 'Bi'
///                                                 ###
///               %unsigned 2  partition                 
///                                    : 1mv                       0x0
///                                    : 2mvLR                     0x1
///                                    : 2mvTB                     0x2
///                                                 ###
///                                                 * MPEG2: 2mvTB used for field prediction
///                                                 * VC-1: 2-field-mv
///                                                 ###
///                                    : 4mv                       0x3
///                                                 ###
///                                                 * Block/macroblock level partitioning
///                                                 * MPEG4: 1mv & 4mv
///                                                 ###
///                                    : 4mvFLD                    0x1
///                                                 ###
///                                                 * VC-1: 4-field-mv
///                                                 ###
///               %unsigned 1  direct                    
///                                    ###
///                                    * Direct mode flag
///                                    * MPEG2: dual-prime prediction
///                                    ###
///               %unsigned 3  mvs                       
///                                    ###
///                                    * Number of motion vectors: 0/1/2/4
///                                    ###
///               %unsigned 2  motion1                   
///               %unsigned 2  partition1                
///               %unsigned 1  direct1                   
///               %unsigned 3  mvs1                      
///               %unsigned 2  motion2                   
///               %unsigned 2  partition2                
///               %unsigned 1  direct2                   
///               %unsigned 3  mvs2                      
///               %unsigned 2  motion3                   
///               %unsigned 2  partition3                
///               %unsigned 1  direct3                   
///               %unsigned 3  mvs3                      
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BLK
#define h_BLK (){}

    #define        BLK_skip                                    0x0
    #define        BLK_direct16x16                             0x1
    #define        BLK_4BLK                                    0x2
    #define        BLK_inter                                   0x3
    #define        BLK_IPCM                                    0x4
    #define        BLK_intra16x16                              0x5
    #define        BLK_intraNxN                                0x6
    ///////////////////////////////////////////////////////////

    #define     BA_BLK_motion                                  0x0000
    #define     B16BLK_motion                                  0x0000
    #define   LSb32BLK_motion                                     0
    #define   LSb16BLK_motion                                     0
    #define       bBLK_motion                                  2
    #define   MSK32BLK_motion                                     0x00000003
    #define        BLK_motion_Intra                                         0x0
    #define        BLK_motion_Forward                                       0x1
    #define        BLK_motion_Backward                                      0x2
    #define        BLK_motion_Bi                                            0x3

    #define     BA_BLK_partition                               0x0000
    #define     B16BLK_partition                               0x0000
    #define   LSb32BLK_partition                                  2
    #define   LSb16BLK_partition                                  2
    #define       bBLK_partition                               2
    #define   MSK32BLK_partition                                  0x0000000C
    #define        BLK_partition_1mv                                        0x0
    #define        BLK_partition_2mvLR                                      0x1
    #define        BLK_partition_2mvTB                                      0x2
    #define        BLK_partition_4mv                                        0x3
    #define        BLK_partition_4mvFLD                                     0x1

    #define     BA_BLK_direct                                  0x0000
    #define     B16BLK_direct                                  0x0000
    #define   LSb32BLK_direct                                     4
    #define   LSb16BLK_direct                                     4
    #define       bBLK_direct                                  1
    #define   MSK32BLK_direct                                     0x00000010

    #define     BA_BLK_mvs                                     0x0000
    #define     B16BLK_mvs                                     0x0000
    #define   LSb32BLK_mvs                                        5
    #define   LSb16BLK_mvs                                        5
    #define       bBLK_mvs                                     3
    #define   MSK32BLK_mvs                                        0x000000E0

    #define     BA_BLK_motion1                                 0x0001
    #define     B16BLK_motion1                                 0x0000
    #define   LSb32BLK_motion1                                    8
    #define   LSb16BLK_motion1                                    8
    #define       bBLK_motion1                                 2
    #define   MSK32BLK_motion1                                    0x00000300

    #define     BA_BLK_partition1                              0x0001
    #define     B16BLK_partition1                              0x0000
    #define   LSb32BLK_partition1                                 10
    #define   LSb16BLK_partition1                                 10
    #define       bBLK_partition1                              2
    #define   MSK32BLK_partition1                                 0x00000C00

    #define     BA_BLK_direct1                                 0x0001
    #define     B16BLK_direct1                                 0x0000
    #define   LSb32BLK_direct1                                    12
    #define   LSb16BLK_direct1                                    12
    #define       bBLK_direct1                                 1
    #define   MSK32BLK_direct1                                    0x00001000

    #define     BA_BLK_mvs1                                    0x0001
    #define     B16BLK_mvs1                                    0x0000
    #define   LSb32BLK_mvs1                                       13
    #define   LSb16BLK_mvs1                                       13
    #define       bBLK_mvs1                                    3
    #define   MSK32BLK_mvs1                                       0x0000E000

    #define     BA_BLK_motion2                                 0x0002
    #define     B16BLK_motion2                                 0x0002
    #define   LSb32BLK_motion2                                    16
    #define   LSb16BLK_motion2                                    0
    #define       bBLK_motion2                                 2
    #define   MSK32BLK_motion2                                    0x00030000

    #define     BA_BLK_partition2                              0x0002
    #define     B16BLK_partition2                              0x0002
    #define   LSb32BLK_partition2                                 18
    #define   LSb16BLK_partition2                                 2
    #define       bBLK_partition2                              2
    #define   MSK32BLK_partition2                                 0x000C0000

    #define     BA_BLK_direct2                                 0x0002
    #define     B16BLK_direct2                                 0x0002
    #define   LSb32BLK_direct2                                    20
    #define   LSb16BLK_direct2                                    4
    #define       bBLK_direct2                                 1
    #define   MSK32BLK_direct2                                    0x00100000

    #define     BA_BLK_mvs2                                    0x0002
    #define     B16BLK_mvs2                                    0x0002
    #define   LSb32BLK_mvs2                                       21
    #define   LSb16BLK_mvs2                                       5
    #define       bBLK_mvs2                                    3
    #define   MSK32BLK_mvs2                                       0x00E00000

    #define     BA_BLK_motion3                                 0x0003
    #define     B16BLK_motion3                                 0x0002
    #define   LSb32BLK_motion3                                    24
    #define   LSb16BLK_motion3                                    8
    #define       bBLK_motion3                                 2
    #define   MSK32BLK_motion3                                    0x03000000

    #define     BA_BLK_partition3                              0x0003
    #define     B16BLK_partition3                              0x0002
    #define   LSb32BLK_partition3                                 26
    #define   LSb16BLK_partition3                                 10
    #define       bBLK_partition3                              2
    #define   MSK32BLK_partition3                                 0x0C000000

    #define     BA_BLK_direct3                                 0x0003
    #define     B16BLK_direct3                                 0x0002
    #define   LSb32BLK_direct3                                    28
    #define   LSb16BLK_direct3                                    12
    #define       bBLK_direct3                                 1
    #define   MSK32BLK_direct3                                    0x10000000

    #define     BA_BLK_mvs3                                    0x0003
    #define     B16BLK_mvs3                                    0x0002
    #define   LSb32BLK_mvs3                                       29
    #define   LSb16BLK_mvs3                                       13
    #define       bBLK_mvs3                                    3
    #define   MSK32BLK_mvs3                                       0xE0000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BLK {
    ///////////////////////////////////////////////////////////
    #define   GET32BLK_motion(r32)                             _BFGET_(r32, 1, 0)
    #define   SET32BLK_motion(r32,v)                           _BFSET_(r32, 1, 0,v)
    #define   GET16BLK_motion(r16)                             _BFGET_(r16, 1, 0)
    #define   SET16BLK_motion(r16,v)                           _BFSET_(r16, 1, 0,v)

    #define   GET32BLK_partition(r32)                          _BFGET_(r32, 3, 2)
    #define   SET32BLK_partition(r32,v)                        _BFSET_(r32, 3, 2,v)
    #define   GET16BLK_partition(r16)                          _BFGET_(r16, 3, 2)
    #define   SET16BLK_partition(r16,v)                        _BFSET_(r16, 3, 2,v)

    #define   GET32BLK_direct(r32)                             _BFGET_(r32, 4, 4)
    #define   SET32BLK_direct(r32,v)                           _BFSET_(r32, 4, 4,v)
    #define   GET16BLK_direct(r16)                             _BFGET_(r16, 4, 4)
    #define   SET16BLK_direct(r16,v)                           _BFSET_(r16, 4, 4,v)

    #define   GET32BLK_mvs(r32)                                _BFGET_(r32, 7, 5)
    #define   SET32BLK_mvs(r32,v)                              _BFSET_(r32, 7, 5,v)
    #define   GET16BLK_mvs(r16)                                _BFGET_(r16, 7, 5)
    #define   SET16BLK_mvs(r16,v)                              _BFSET_(r16, 7, 5,v)

    #define   GET32BLK_motion1(r32)                            _BFGET_(r32, 9, 8)
    #define   SET32BLK_motion1(r32,v)                          _BFSET_(r32, 9, 8,v)
    #define   GET16BLK_motion1(r16)                            _BFGET_(r16, 9, 8)
    #define   SET16BLK_motion1(r16,v)                          _BFSET_(r16, 9, 8,v)

    #define   GET32BLK_partition1(r32)                         _BFGET_(r32,11,10)
    #define   SET32BLK_partition1(r32,v)                       _BFSET_(r32,11,10,v)
    #define   GET16BLK_partition1(r16)                         _BFGET_(r16,11,10)
    #define   SET16BLK_partition1(r16,v)                       _BFSET_(r16,11,10,v)

    #define   GET32BLK_direct1(r32)                            _BFGET_(r32,12,12)
    #define   SET32BLK_direct1(r32,v)                          _BFSET_(r32,12,12,v)
    #define   GET16BLK_direct1(r16)                            _BFGET_(r16,12,12)
    #define   SET16BLK_direct1(r16,v)                          _BFSET_(r16,12,12,v)

    #define   GET32BLK_mvs1(r32)                               _BFGET_(r32,15,13)
    #define   SET32BLK_mvs1(r32,v)                             _BFSET_(r32,15,13,v)
    #define   GET16BLK_mvs1(r16)                               _BFGET_(r16,15,13)
    #define   SET16BLK_mvs1(r16,v)                             _BFSET_(r16,15,13,v)

    #define   GET32BLK_motion2(r32)                            _BFGET_(r32,17,16)
    #define   SET32BLK_motion2(r32,v)                          _BFSET_(r32,17,16,v)
    #define   GET16BLK_motion2(r16)                            _BFGET_(r16, 1, 0)
    #define   SET16BLK_motion2(r16,v)                          _BFSET_(r16, 1, 0,v)

    #define   GET32BLK_partition2(r32)                         _BFGET_(r32,19,18)
    #define   SET32BLK_partition2(r32,v)                       _BFSET_(r32,19,18,v)
    #define   GET16BLK_partition2(r16)                         _BFGET_(r16, 3, 2)
    #define   SET16BLK_partition2(r16,v)                       _BFSET_(r16, 3, 2,v)

    #define   GET32BLK_direct2(r32)                            _BFGET_(r32,20,20)
    #define   SET32BLK_direct2(r32,v)                          _BFSET_(r32,20,20,v)
    #define   GET16BLK_direct2(r16)                            _BFGET_(r16, 4, 4)
    #define   SET16BLK_direct2(r16,v)                          _BFSET_(r16, 4, 4,v)

    #define   GET32BLK_mvs2(r32)                               _BFGET_(r32,23,21)
    #define   SET32BLK_mvs2(r32,v)                             _BFSET_(r32,23,21,v)
    #define   GET16BLK_mvs2(r16)                               _BFGET_(r16, 7, 5)
    #define   SET16BLK_mvs2(r16,v)                             _BFSET_(r16, 7, 5,v)

    #define   GET32BLK_motion3(r32)                            _BFGET_(r32,25,24)
    #define   SET32BLK_motion3(r32,v)                          _BFSET_(r32,25,24,v)
    #define   GET16BLK_motion3(r16)                            _BFGET_(r16, 9, 8)
    #define   SET16BLK_motion3(r16,v)                          _BFSET_(r16, 9, 8,v)

    #define   GET32BLK_partition3(r32)                         _BFGET_(r32,27,26)
    #define   SET32BLK_partition3(r32,v)                       _BFSET_(r32,27,26,v)
    #define   GET16BLK_partition3(r16)                         _BFGET_(r16,11,10)
    #define   SET16BLK_partition3(r16,v)                       _BFSET_(r16,11,10,v)

    #define   GET32BLK_direct3(r32)                            _BFGET_(r32,28,28)
    #define   SET32BLK_direct3(r32,v)                          _BFSET_(r32,28,28,v)
    #define   GET16BLK_direct3(r16)                            _BFGET_(r16,12,12)
    #define   SET16BLK_direct3(r16,v)                          _BFSET_(r16,12,12,v)

    #define   GET32BLK_mvs3(r32)                               _BFGET_(r32,31,29)
    #define   SET32BLK_mvs3(r32,v)                             _BFSET_(r32,31,29,v)
    #define   GET16BLK_mvs3(r16)                               _BFGET_(r16,15,13)
    #define   SET16BLK_mvs3(r16,v)                             _BFSET_(r16,15,13,v)

            UNSG32 u_motion                                    :  2;
            UNSG32 u_partition                                 :  2;
            UNSG32 u_direct                                    :  1;
            UNSG32 u_mvs                                       :  3;
            UNSG32 u_motion1                                   :  2;
            UNSG32 u_partition1                                :  2;
            UNSG32 u_direct1                                   :  1;
            UNSG32 u_mvs1                                      :  3;
            UNSG32 u_motion2                                   :  2;
            UNSG32 u_partition2                                :  2;
            UNSG32 u_direct2                                   :  1;
            UNSG32 u_mvs2                                      :  3;
            UNSG32 u_motion3                                   :  2;
            UNSG32 u_partition3                                :  2;
            UNSG32 u_direct3                                   :  1;
            UNSG32 u_mvs3                                      :  3;
    ///////////////////////////////////////////////////////////
    } SIE_BLK;

    ///////////////////////////////////////////////////////////
     SIGN32 BLK_drvrd(SIE_BLK *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BLK_drvwr(SIE_BLK *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BLK_reset(SIE_BLK *p);
     SIGN32 BLK_cmp  (SIE_BLK *p, SIE_BLK *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BLK_check(p,pie,pfx,hLOG) BLK_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BLK_print(p,    pfx,hLOG) BLK_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BLK
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE MV                                       (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 2  motion                    
///                                    ###
///                                    * Derived 8x8 block motion type (direct mode uses 'Bi'), see BLK.motion above
///                                    ###
///               %signed   14 X                         
///                                    ###
///                                    * Horizontal motion vector,
///                                    * Or MVD between parser & syntax processor
///                                    ###
///               %unsigned 3  type                      
///                                    ###
///                                    * Sub-set of mb_type, see MBPROP.type above
///                                    ###
///               %signed   13 Y                         
///                                    ###
///                                    * Vertical motion vector,
///                                    * Or MVD between parser & syntax processor
///                                    * End of MV
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_MV
#define h_MV (){}

    #define     BA_MV_motion                                   0x0000
    #define     B16MV_motion                                   0x0000
    #define   LSb32MV_motion                                      0
    #define   LSb16MV_motion                                      0
    #define       bMV_motion                                   2
    #define   MSK32MV_motion                                      0x00000003

    #define     BA_MV_X                                        0x0000
    #define     B16MV_X                                        0x0000
    #define   LSb32MV_X                                           2
    #define   LSb16MV_X                                           2
    #define       bMV_X                                        14
    #define   MSK32MV_X                                           0x0000FFFC

    #define     BA_MV_type                                     0x0002
    #define     B16MV_type                                     0x0002
    #define   LSb32MV_type                                        16
    #define   LSb16MV_type                                        0
    #define       bMV_type                                     3
    #define   MSK32MV_type                                        0x00070000

    #define     BA_MV_Y                                        0x0002
    #define     B16MV_Y                                        0x0002
    #define   LSb32MV_Y                                           19
    #define   LSb16MV_Y                                           3
    #define       bMV_Y                                        13
    #define   MSK32MV_Y                                           0xFFF80000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_MV {
    ///////////////////////////////////////////////////////////
    #define   GET32MV_motion(r32)                              _BFGET_(r32, 1, 0)
    #define   SET32MV_motion(r32,v)                            _BFSET_(r32, 1, 0,v)
    #define   GET16MV_motion(r16)                              _BFGET_(r16, 1, 0)
    #define   SET16MV_motion(r16,v)                            _BFSET_(r16, 1, 0,v)

    #define   GET32MV_X(r32)                                   _BFGET_(r32,15, 2)
    #define   SET32MV_X(r32,v)                                 _BFSET_(r32,15, 2,v)
    #define   GET16MV_X(r16)                                   _BFGET_(r16,15, 2)
    #define   SET16MV_X(r16,v)                                 _BFSET_(r16,15, 2,v)

    #define   GET32MV_type(r32)                                _BFGET_(r32,18,16)
    #define   SET32MV_type(r32,v)                              _BFSET_(r32,18,16,v)
    #define   GET16MV_type(r16)                                _BFGET_(r16, 2, 0)
    #define   SET16MV_type(r16,v)                              _BFSET_(r16, 2, 0,v)

    #define   GET32MV_Y(r32)                                   _BFGET_(r32,31,19)
    #define   SET32MV_Y(r32,v)                                 _BFSET_(r32,31,19,v)
    #define   GET16MV_Y(r16)                                   _BFGET_(r16,15, 3)
    #define   SET16MV_Y(r16,v)                                 _BFSET_(r16,15, 3,v)

            UNSG32 u_motion                                    :  2;
            UNSG32 s_X                                         : 14;
            UNSG32 u_type                                      :  3;
            UNSG32 s_Y                                         : 13;
    ///////////////////////////////////////////////////////////
    } SIE_MV;

    ///////////////////////////////////////////////////////////
     SIGN32 MV_drvrd(SIE_MV *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 MV_drvwr(SIE_MV *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void MV_reset(SIE_MV *p);
     SIGN32 MV_cmp  (SIE_MV *p, SIE_MV *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define MV_check(p,pie,pfx,hLOG) MV_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define MV_print(p,    pfx,hLOG) MV_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: MV
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FCTX                    biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 6  rBID                      
///                                    ###
///                                    * Flatten 4x4s in each 8x8,
///                                    * 0 for intra (as well as direct mode between parser & syntax processor):
///                                    * Reference buffer ID, last 1b indicates access mode:
///                                    * 0: frame/progressive or top field
///                                    * 1: bottom field
///                                    ###
///               %unsigned 5  rIDX                      
///                                    ###
///                                    * Flatten 4x4s in each 8x8,
///                                    * 0 for intra (as well as P/B-skip & direct mode between parser & syntax processor):
///                                    * Syntax 'RefListIdx' directly decoded from bit stream (field information embedded)
///                                    ###
///               %unsigned 1  FLD                       
///                                    ###
///                                    * Flatten 4x4s in each 8x8:
///                                    * 1 for MBAFF field MB, 0 for otherwise
///                                    ###
///               %unsigned 1  equalpred                 
///                                    ###
///                                    * BLK property for CABAC only:
///                                    * Using block category ACV,
///                                    * (But flatten to all 4x4s in each 8x8s):
///                                    * = !Intra && !skipped && (bi-pred || fore-pred)
///                                    * NOTE: = 0 for direct mode
///                                    * VC-1:
///                                    * PMV output: for hybridPred
///                                    * PMV input: predictor_flag (0: use dominant PMV)
///                                    ###
///               %unsigned 1  transform                 
///                                    ###
///                                    * MB property (flatten in all 4x4s):
///                                    * H.264: if 8x8 transform
///                                    * Others: if field transform
///                                    ###
///               %unsigned 1  NCBPY                     
///                                    ###
///                                    * Loop-filter & CABAC use only:
///                                    * Luma using block category ACV (4th 4x4),
///                                    * (But flatten to all 4x4s in each 8x8s):
///                                    * = !(IPCM || cbp_luma)
///                                    ###
///               %unsigned 1  MixFLG                    
///                                    ###
///                                    * CABAC use only:
///                                    * CBP chroma using block category DCU/DCV,
///                                    * (Only at 3rd & 4th 4x4s in 3rd 8x8):
///                                    * bin[0]: IPCM || !(skipped || (cbp_chroma == 0))
///                                    * bin[1]: IPCM || !(skipped || (cbp_chroma != 2))
///                                    * Or:
///                                    * mb_type using block category DCY,
///                                    * (Only at 4th 4x4 in 4th 8x8):
///                                    * I_SLICE: = !I_NXN
///                                    * P_SLICE: = 0
///                                    * B_SLICE: = !skipped && !direct_16x16
///                                    * Or:
///                                    * intra-chroma_pred using block category DCI,
///                                    * (Only at 3rd 4x4 in 4th 8x8):
///                                    * = Intra && !IPCM && (intra_chroma_pred != 0)
///                                    * Or:
///                                    * Temporal context buffers for direct mode use
///                                    ###
///                                    : 8x8                       0x1
///                                                 ###
///                                                 * Only at 1st 4x4 in 1st 8x8:
///                                                 * = if MB contains no sub-8x8 partition
///                                                 ###
///                                    : 16x16                     0x1
///                                                 ###
///                                                 * Only at 1st 4x4 in 2nd 8x8:
///                                                 * = if MB contains only 1 partition (16x16)
///                                                 ###
///               %unsigned 1  CBFY                      
///                                    ###
///                                    * Loop-filter & CABAC use only:
///                                    * Using block category ACY (every 4x4s):
///                                    * = IPCM || cbf_luma_ac
///                                    ###
///               %unsigned 1  CBFUV                     
///                                    ###
///                                    * CABAC use only:
///                                    * Using block category ACU/ACV,
///                                    * (Only at 3rd & 4th 4x4 in each 8x8s):
///                                    * = IPCM || cbf_chroma_ac
///                                    ###
///               %unsigned 1  CBFDC                     
///                                    ###
///                                    * CABAC use only:
///                                    * LumaDC using block category DCY,
///                                    * (Only at 4th 4x4 in 4th 8x8):
///                                    * = IPCM || (I_16x16 && cbf_luma_dc)
///                                    * ChromaDC using block category DCU/DCV,
///                                    * (Only at 3rd 4x4 in 3rd & 4th 8x8):
///                                    * = IPCM || cbf_chroma_dc
///                                    ###
///               %unsigned 6  ABSMVDX                   
///                                    ###
///                                    * CABAC use only:
///                                    * MIN( ABS(MVD.x), 63 )
///                                    ###
///               %unsigned 7  ABSMVDY                   
///                                    ###
///                                    * CABAC use only:
///                                    * MIN( ABS(MVD.y), 127 )
///                                    ###
///     @ 0x00004                      (P)
///     # 0x00004 mv                   
///               $MV                  mv                REG          
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FCTX
#define h_FCTX (){}

    #define     BA_FCTX_rBID                                   0x0000
    #define     B16FCTX_rBID                                   0x0000
    #define   LSb32FCTX_rBID                                      0
    #define   LSb16FCTX_rBID                                      0
    #define       bFCTX_rBID                                   6
    #define   MSK32FCTX_rBID                                      0x0000003F

    #define     BA_FCTX_rIDX                                   0x0000
    #define     B16FCTX_rIDX                                   0x0000
    #define   LSb32FCTX_rIDX                                      6
    #define   LSb16FCTX_rIDX                                      6
    #define       bFCTX_rIDX                                   5
    #define   MSK32FCTX_rIDX                                      0x000007C0

    #define     BA_FCTX_FLD                                    0x0001
    #define     B16FCTX_FLD                                    0x0000
    #define   LSb32FCTX_FLD                                       11
    #define   LSb16FCTX_FLD                                       11
    #define       bFCTX_FLD                                    1
    #define   MSK32FCTX_FLD                                       0x00000800

    #define     BA_FCTX_equalpred                              0x0001
    #define     B16FCTX_equalpred                              0x0000
    #define   LSb32FCTX_equalpred                                 12
    #define   LSb16FCTX_equalpred                                 12
    #define       bFCTX_equalpred                              1
    #define   MSK32FCTX_equalpred                                 0x00001000

    #define     BA_FCTX_transform                              0x0001
    #define     B16FCTX_transform                              0x0000
    #define   LSb32FCTX_transform                                 13
    #define   LSb16FCTX_transform                                 13
    #define       bFCTX_transform                              1
    #define   MSK32FCTX_transform                                 0x00002000

    #define     BA_FCTX_NCBPY                                  0x0001
    #define     B16FCTX_NCBPY                                  0x0000
    #define   LSb32FCTX_NCBPY                                     14
    #define   LSb16FCTX_NCBPY                                     14
    #define       bFCTX_NCBPY                                  1
    #define   MSK32FCTX_NCBPY                                     0x00004000

    #define     BA_FCTX_MixFLG                                 0x0001
    #define     B16FCTX_MixFLG                                 0x0000
    #define   LSb32FCTX_MixFLG                                    15
    #define   LSb16FCTX_MixFLG                                    15
    #define       bFCTX_MixFLG                                 1
    #define   MSK32FCTX_MixFLG                                    0x00008000
    #define        FCTX_MixFLG_8x8                                          0x1
    #define        FCTX_MixFLG_16x16                                        0x1

    #define     BA_FCTX_CBFY                                   0x0002
    #define     B16FCTX_CBFY                                   0x0002
    #define   LSb32FCTX_CBFY                                      16
    #define   LSb16FCTX_CBFY                                      0
    #define       bFCTX_CBFY                                   1
    #define   MSK32FCTX_CBFY                                      0x00010000

    #define     BA_FCTX_CBFUV                                  0x0002
    #define     B16FCTX_CBFUV                                  0x0002
    #define   LSb32FCTX_CBFUV                                     17
    #define   LSb16FCTX_CBFUV                                     1
    #define       bFCTX_CBFUV                                  1
    #define   MSK32FCTX_CBFUV                                     0x00020000

    #define     BA_FCTX_CBFDC                                  0x0002
    #define     B16FCTX_CBFDC                                  0x0002
    #define   LSb32FCTX_CBFDC                                     18
    #define   LSb16FCTX_CBFDC                                     2
    #define       bFCTX_CBFDC                                  1
    #define   MSK32FCTX_CBFDC                                     0x00040000

    #define     BA_FCTX_ABSMVDX                                0x0002
    #define     B16FCTX_ABSMVDX                                0x0002
    #define   LSb32FCTX_ABSMVDX                                   19
    #define   LSb16FCTX_ABSMVDX                                   3
    #define       bFCTX_ABSMVDX                                6
    #define   MSK32FCTX_ABSMVDX                                   0x01F80000

    #define     BA_FCTX_ABSMVDY                                0x0003
    #define     B16FCTX_ABSMVDY                                0x0002
    #define   LSb32FCTX_ABSMVDY                                   25
    #define   LSb16FCTX_ABSMVDY                                   9
    #define       bFCTX_ABSMVDY                                7
    #define   MSK32FCTX_ABSMVDY                                   0xFE000000
    ///////////////////////////////////////////////////////////
    #define     RA_FCTX_mv                                     0x0004
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FCTX {
    ///////////////////////////////////////////////////////////
    #define   GET32FCTX_rBID(r32)                              _BFGET_(r32, 5, 0)
    #define   SET32FCTX_rBID(r32,v)                            _BFSET_(r32, 5, 0,v)
    #define   GET16FCTX_rBID(r16)                              _BFGET_(r16, 5, 0)
    #define   SET16FCTX_rBID(r16,v)                            _BFSET_(r16, 5, 0,v)

    #define   GET32FCTX_rIDX(r32)                              _BFGET_(r32,10, 6)
    #define   SET32FCTX_rIDX(r32,v)                            _BFSET_(r32,10, 6,v)
    #define   GET16FCTX_rIDX(r16)                              _BFGET_(r16,10, 6)
    #define   SET16FCTX_rIDX(r16,v)                            _BFSET_(r16,10, 6,v)

    #define   GET32FCTX_FLD(r32)                               _BFGET_(r32,11,11)
    #define   SET32FCTX_FLD(r32,v)                             _BFSET_(r32,11,11,v)
    #define   GET16FCTX_FLD(r16)                               _BFGET_(r16,11,11)
    #define   SET16FCTX_FLD(r16,v)                             _BFSET_(r16,11,11,v)

    #define   GET32FCTX_equalpred(r32)                         _BFGET_(r32,12,12)
    #define   SET32FCTX_equalpred(r32,v)                       _BFSET_(r32,12,12,v)
    #define   GET16FCTX_equalpred(r16)                         _BFGET_(r16,12,12)
    #define   SET16FCTX_equalpred(r16,v)                       _BFSET_(r16,12,12,v)

    #define   GET32FCTX_transform(r32)                         _BFGET_(r32,13,13)
    #define   SET32FCTX_transform(r32,v)                       _BFSET_(r32,13,13,v)
    #define   GET16FCTX_transform(r16)                         _BFGET_(r16,13,13)
    #define   SET16FCTX_transform(r16,v)                       _BFSET_(r16,13,13,v)

    #define   GET32FCTX_NCBPY(r32)                             _BFGET_(r32,14,14)
    #define   SET32FCTX_NCBPY(r32,v)                           _BFSET_(r32,14,14,v)
    #define   GET16FCTX_NCBPY(r16)                             _BFGET_(r16,14,14)
    #define   SET16FCTX_NCBPY(r16,v)                           _BFSET_(r16,14,14,v)

    #define   GET32FCTX_MixFLG(r32)                            _BFGET_(r32,15,15)
    #define   SET32FCTX_MixFLG(r32,v)                          _BFSET_(r32,15,15,v)
    #define   GET16FCTX_MixFLG(r16)                            _BFGET_(r16,15,15)
    #define   SET16FCTX_MixFLG(r16,v)                          _BFSET_(r16,15,15,v)

    #define   GET32FCTX_CBFY(r32)                              _BFGET_(r32,16,16)
    #define   SET32FCTX_CBFY(r32,v)                            _BFSET_(r32,16,16,v)
    #define   GET16FCTX_CBFY(r16)                              _BFGET_(r16, 0, 0)
    #define   SET16FCTX_CBFY(r16,v)                            _BFSET_(r16, 0, 0,v)

    #define   GET32FCTX_CBFUV(r32)                             _BFGET_(r32,17,17)
    #define   SET32FCTX_CBFUV(r32,v)                           _BFSET_(r32,17,17,v)
    #define   GET16FCTX_CBFUV(r16)                             _BFGET_(r16, 1, 1)
    #define   SET16FCTX_CBFUV(r16,v)                           _BFSET_(r16, 1, 1,v)

    #define   GET32FCTX_CBFDC(r32)                             _BFGET_(r32,18,18)
    #define   SET32FCTX_CBFDC(r32,v)                           _BFSET_(r32,18,18,v)
    #define   GET16FCTX_CBFDC(r16)                             _BFGET_(r16, 2, 2)
    #define   SET16FCTX_CBFDC(r16,v)                           _BFSET_(r16, 2, 2,v)

    #define   GET32FCTX_ABSMVDX(r32)                           _BFGET_(r32,24,19)
    #define   SET32FCTX_ABSMVDX(r32,v)                         _BFSET_(r32,24,19,v)
    #define   GET16FCTX_ABSMVDX(r16)                           _BFGET_(r16, 8, 3)
    #define   SET16FCTX_ABSMVDX(r16,v)                         _BFSET_(r16, 8, 3,v)

    #define   GET32FCTX_ABSMVDY(r32)                           _BFGET_(r32,31,25)
    #define   SET32FCTX_ABSMVDY(r32,v)                         _BFSET_(r32,31,25,v)
    #define   GET16FCTX_ABSMVDY(r16)                           _BFGET_(r16,15, 9)
    #define   SET16FCTX_ABSMVDY(r16,v)                         _BFSET_(r16,15, 9,v)

            UNSG32 u_rBID                                      :  6;
            UNSG32 u_rIDX                                      :  5;
            UNSG32 u_FLD                                       :  1;
            UNSG32 u_equalpred                                 :  1;
            UNSG32 u_transform                                 :  1;
            UNSG32 u_NCBPY                                     :  1;
            UNSG32 u_MixFLG                                    :  1;
            UNSG32 u_CBFY                                      :  1;
            UNSG32 u_CBFUV                                     :  1;
            UNSG32 u_CBFDC                                     :  1;
            UNSG32 u_ABSMVDX                                   :  6;
            UNSG32 u_ABSMVDY                                   :  7;
    ///////////////////////////////////////////////////////////
              SIE_MV                                           ie_mv;
    ///////////////////////////////////////////////////////////
    } SIE_FCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 FCTX_drvrd(SIE_FCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FCTX_drvwr(SIE_FCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FCTX_reset(SIE_FCTX *p);
     SIGN32 FCTX_cmp  (SIE_FCTX *p, SIE_FCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FCTX_check(p,pie,pfx,hLOG) FCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FCTX_print(p,    pfx,hLOG) FCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FCTX_VC1                biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 6  rBID                      
///                                    ###
///                                    * Flatten 4x4s in each 8x8,
///                                    * 0 for intra (as well as direct mode between parser & syntax processor):
///                                    * Reference buffer ID, last 1b indicates access mode:
///                                    * 0: frame/progressive or top field
///                                    * 1: bottom field
///                                    ###
///               %unsigned 5  rIDX                      
///                                    ###
///                                    * Flatten 4x4s in each 8x8,
///                                    * 0 for intra (as well as P/B-skip & direct mode between parser & syntax processor):
///                                    * Syntax 'RefListIdx' directly decoded from bit stream (field information embedded)
///                                    ###
///               %unsigned 1  FLD                       
///                                    ###
///                                    * Flatten 4x4s in each 8x8:
///                                    * 1 for MBAFF field MB, 0 for otherwise
///                                    ###
///               %unsigned 1  equalpred                 
///                                    ###
///                                    * BLK property for CABAC only:
///                                    * Using block category ACV,
///                                    * (But flatten to all 4x4s in each 8x8s):
///                                    * = !Intra && !skipped && (bi-pred || fore-pred)
///                                    * NOTE: = 0 for direct mode
///                                    * VC-1:
///                                    * PMV output: for hybridPred
///                                    * PMV input: predictor_flag (0: use dominant PMV)
///                                    ###
///               %unsigned 1  transform                 
///                                    ###
///                                    * MB property (flatten in all 4x4s):
///                                    * H.264: if 8x8 transform
///                                    * Others: if field transform
///                                    ###
///               %unsigned 1  NCBPY                     
///                                    ###
///                                    * Loop-filter & CABAC use only:
///                                    * Luma using block category ACV (4th 4x4),
///                                    * (But flatten to all 4x4s in each 8x8s):
///                                    * = !(IPCM || cbp_luma)
///                                    ###
///               %unsigned 1  MixFLG                    
///                                    ###
///                                    * CABAC use only:
///                                    * CBP chroma using block category DCU/DCV,
///                                    * (Only at 3rd & 4th 4x4s in 3rd 8x8):
///                                    * bin[0]: IPCM || !(skipped || (cbp_chroma == 0))
///                                    * bin[1]: IPCM || !(skipped || (cbp_chroma != 2))
///                                    * Or:
///                                    * mb_type using block category DCY,
///                                    * (Only at 4th 4x4 in 4th 8x8):
///                                    * I_SLICE: = !I_NXN
///                                    * P_SLICE: = 0
///                                    * B_SLICE: = !skipped && !direct_16x16
///                                    * Or:
///                                    * intra-chroma_pred using block category DCI,
///                                    * (Only at 3rd 4x4 in 4th 8x8):
///                                    * = Intra && !IPCM && (intra_chroma_pred != 0)
///                                    * Or:
///                                    * Temporal context buffers for direct mode use
///                                    ###
///                                    : 8x8                       0x1
///                                                 ###
///                                                 * Only at 1st 4x4 in 1st 8x8:
///                                                 * = if MB contains no sub-8x8 partition
///                                                 ###
///                                    : 16x16                     0x1
///                                                 ###
///                                                 * Only at 1st 4x4 in 2nd 8x8:
///                                                 * = if MB contains only 1 partition (16x16)
///                                                 ###
///               %unsigned 2  dctSelY                   
///                                    : 4x4                       0x0
///                                    : 8x8                       0x1
///                                    : 4x8                       0x2
///                                    : 8x4                       0x3
///                                                 ###
///                                                 * DCT transform type for Y, used for VC-1 Fop
///                                                 * flattened to all 4x4 blocks within transform block
///                                                 ###
///               %unsigned 1  CBFY                      
///                                    ###
///                                    * coded block (4x4) flag for Y, used for VC-1 Fop
///                                    ###
///               %unsigned 1  CBFY8x8                   
///                                    ###
///                                    * coded block (8x8) flag for Y, used for VC-1 MP Fop
///                                    ###
///               %unsigned 12 RSVD12                    
///     @ 0x00004                      (P)
///     # 0x00004 mv                   
///               $MV                  mv                REG          
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FCTX_VC1
#define h_FCTX_VC1 (){}

    #define     BA_FCTX_VC1_rBID                               0x0000
    #define     B16FCTX_VC1_rBID                               0x0000
    #define   LSb32FCTX_VC1_rBID                                  0
    #define   LSb16FCTX_VC1_rBID                                  0
    #define       bFCTX_VC1_rBID                               6
    #define   MSK32FCTX_VC1_rBID                                  0x0000003F

    #define     BA_FCTX_VC1_rIDX                               0x0000
    #define     B16FCTX_VC1_rIDX                               0x0000
    #define   LSb32FCTX_VC1_rIDX                                  6
    #define   LSb16FCTX_VC1_rIDX                                  6
    #define       bFCTX_VC1_rIDX                               5
    #define   MSK32FCTX_VC1_rIDX                                  0x000007C0

    #define     BA_FCTX_VC1_FLD                                0x0001
    #define     B16FCTX_VC1_FLD                                0x0000
    #define   LSb32FCTX_VC1_FLD                                   11
    #define   LSb16FCTX_VC1_FLD                                   11
    #define       bFCTX_VC1_FLD                                1
    #define   MSK32FCTX_VC1_FLD                                   0x00000800

    #define     BA_FCTX_VC1_equalpred                          0x0001
    #define     B16FCTX_VC1_equalpred                          0x0000
    #define   LSb32FCTX_VC1_equalpred                             12
    #define   LSb16FCTX_VC1_equalpred                             12
    #define       bFCTX_VC1_equalpred                          1
    #define   MSK32FCTX_VC1_equalpred                             0x00001000

    #define     BA_FCTX_VC1_transform                          0x0001
    #define     B16FCTX_VC1_transform                          0x0000
    #define   LSb32FCTX_VC1_transform                             13
    #define   LSb16FCTX_VC1_transform                             13
    #define       bFCTX_VC1_transform                          1
    #define   MSK32FCTX_VC1_transform                             0x00002000

    #define     BA_FCTX_VC1_NCBPY                              0x0001
    #define     B16FCTX_VC1_NCBPY                              0x0000
    #define   LSb32FCTX_VC1_NCBPY                                 14
    #define   LSb16FCTX_VC1_NCBPY                                 14
    #define       bFCTX_VC1_NCBPY                              1
    #define   MSK32FCTX_VC1_NCBPY                                 0x00004000

    #define     BA_FCTX_VC1_MixFLG                             0x0001
    #define     B16FCTX_VC1_MixFLG                             0x0000
    #define   LSb32FCTX_VC1_MixFLG                                15
    #define   LSb16FCTX_VC1_MixFLG                                15
    #define       bFCTX_VC1_MixFLG                             1
    #define   MSK32FCTX_VC1_MixFLG                                0x00008000
    #define        FCTX_VC1_MixFLG_8x8                                      0x1
    #define        FCTX_VC1_MixFLG_16x16                                    0x1

    #define     BA_FCTX_VC1_dctSelY                            0x0002
    #define     B16FCTX_VC1_dctSelY                            0x0002
    #define   LSb32FCTX_VC1_dctSelY                               16
    #define   LSb16FCTX_VC1_dctSelY                               0
    #define       bFCTX_VC1_dctSelY                            2
    #define   MSK32FCTX_VC1_dctSelY                               0x00030000
    #define        FCTX_VC1_dctSelY_4x4                                     0x0
    #define        FCTX_VC1_dctSelY_8x8                                     0x1
    #define        FCTX_VC1_dctSelY_4x8                                     0x2
    #define        FCTX_VC1_dctSelY_8x4                                     0x3

    #define     BA_FCTX_VC1_CBFY                               0x0002
    #define     B16FCTX_VC1_CBFY                               0x0002
    #define   LSb32FCTX_VC1_CBFY                                  18
    #define   LSb16FCTX_VC1_CBFY                                  2
    #define       bFCTX_VC1_CBFY                               1
    #define   MSK32FCTX_VC1_CBFY                                  0x00040000

    #define     BA_FCTX_VC1_CBFY8x8                            0x0002
    #define     B16FCTX_VC1_CBFY8x8                            0x0002
    #define   LSb32FCTX_VC1_CBFY8x8                               19
    #define   LSb16FCTX_VC1_CBFY8x8                               3
    #define       bFCTX_VC1_CBFY8x8                            1
    #define   MSK32FCTX_VC1_CBFY8x8                               0x00080000

    #define     BA_FCTX_VC1_RSVD12                             0x0002
    #define     B16FCTX_VC1_RSVD12                             0x0002
    #define   LSb32FCTX_VC1_RSVD12                                20
    #define   LSb16FCTX_VC1_RSVD12                                4
    #define       bFCTX_VC1_RSVD12                             12
    #define   MSK32FCTX_VC1_RSVD12                                0xFFF00000
    ///////////////////////////////////////////////////////////
    #define     RA_FCTX_VC1_mv                                 0x0004
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FCTX_VC1 {
    ///////////////////////////////////////////////////////////
    #define   GET32FCTX_VC1_rBID(r32)                          _BFGET_(r32, 5, 0)
    #define   SET32FCTX_VC1_rBID(r32,v)                        _BFSET_(r32, 5, 0,v)
    #define   GET16FCTX_VC1_rBID(r16)                          _BFGET_(r16, 5, 0)
    #define   SET16FCTX_VC1_rBID(r16,v)                        _BFSET_(r16, 5, 0,v)

    #define   GET32FCTX_VC1_rIDX(r32)                          _BFGET_(r32,10, 6)
    #define   SET32FCTX_VC1_rIDX(r32,v)                        _BFSET_(r32,10, 6,v)
    #define   GET16FCTX_VC1_rIDX(r16)                          _BFGET_(r16,10, 6)
    #define   SET16FCTX_VC1_rIDX(r16,v)                        _BFSET_(r16,10, 6,v)

    #define   GET32FCTX_VC1_FLD(r32)                           _BFGET_(r32,11,11)
    #define   SET32FCTX_VC1_FLD(r32,v)                         _BFSET_(r32,11,11,v)
    #define   GET16FCTX_VC1_FLD(r16)                           _BFGET_(r16,11,11)
    #define   SET16FCTX_VC1_FLD(r16,v)                         _BFSET_(r16,11,11,v)

    #define   GET32FCTX_VC1_equalpred(r32)                     _BFGET_(r32,12,12)
    #define   SET32FCTX_VC1_equalpred(r32,v)                   _BFSET_(r32,12,12,v)
    #define   GET16FCTX_VC1_equalpred(r16)                     _BFGET_(r16,12,12)
    #define   SET16FCTX_VC1_equalpred(r16,v)                   _BFSET_(r16,12,12,v)

    #define   GET32FCTX_VC1_transform(r32)                     _BFGET_(r32,13,13)
    #define   SET32FCTX_VC1_transform(r32,v)                   _BFSET_(r32,13,13,v)
    #define   GET16FCTX_VC1_transform(r16)                     _BFGET_(r16,13,13)
    #define   SET16FCTX_VC1_transform(r16,v)                   _BFSET_(r16,13,13,v)

    #define   GET32FCTX_VC1_NCBPY(r32)                         _BFGET_(r32,14,14)
    #define   SET32FCTX_VC1_NCBPY(r32,v)                       _BFSET_(r32,14,14,v)
    #define   GET16FCTX_VC1_NCBPY(r16)                         _BFGET_(r16,14,14)
    #define   SET16FCTX_VC1_NCBPY(r16,v)                       _BFSET_(r16,14,14,v)

    #define   GET32FCTX_VC1_MixFLG(r32)                        _BFGET_(r32,15,15)
    #define   SET32FCTX_VC1_MixFLG(r32,v)                      _BFSET_(r32,15,15,v)
    #define   GET16FCTX_VC1_MixFLG(r16)                        _BFGET_(r16,15,15)
    #define   SET16FCTX_VC1_MixFLG(r16,v)                      _BFSET_(r16,15,15,v)

    #define   GET32FCTX_VC1_dctSelY(r32)                       _BFGET_(r32,17,16)
    #define   SET32FCTX_VC1_dctSelY(r32,v)                     _BFSET_(r32,17,16,v)
    #define   GET16FCTX_VC1_dctSelY(r16)                       _BFGET_(r16, 1, 0)
    #define   SET16FCTX_VC1_dctSelY(r16,v)                     _BFSET_(r16, 1, 0,v)

    #define   GET32FCTX_VC1_CBFY(r32)                          _BFGET_(r32,18,18)
    #define   SET32FCTX_VC1_CBFY(r32,v)                        _BFSET_(r32,18,18,v)
    #define   GET16FCTX_VC1_CBFY(r16)                          _BFGET_(r16, 2, 2)
    #define   SET16FCTX_VC1_CBFY(r16,v)                        _BFSET_(r16, 2, 2,v)

    #define   GET32FCTX_VC1_CBFY8x8(r32)                       _BFGET_(r32,19,19)
    #define   SET32FCTX_VC1_CBFY8x8(r32,v)                     _BFSET_(r32,19,19,v)
    #define   GET16FCTX_VC1_CBFY8x8(r16)                       _BFGET_(r16, 3, 3)
    #define   SET16FCTX_VC1_CBFY8x8(r16,v)                     _BFSET_(r16, 3, 3,v)

    #define   GET32FCTX_VC1_RSVD12(r32)                        _BFGET_(r32,31,20)
    #define   SET32FCTX_VC1_RSVD12(r32,v)                      _BFSET_(r32,31,20,v)
    #define   GET16FCTX_VC1_RSVD12(r16)                        _BFGET_(r16,15, 4)
    #define   SET16FCTX_VC1_RSVD12(r16,v)                      _BFSET_(r16,15, 4,v)

            UNSG32 u_rBID                                      :  6;
            UNSG32 u_rIDX                                      :  5;
            UNSG32 u_FLD                                       :  1;
            UNSG32 u_equalpred                                 :  1;
            UNSG32 u_transform                                 :  1;
            UNSG32 u_NCBPY                                     :  1;
            UNSG32 u_MixFLG                                    :  1;
            UNSG32 u_dctSelY                                   :  2;
            UNSG32 u_CBFY                                      :  1;
            UNSG32 u_CBFY8x8                                   :  1;
            UNSG32 u_RSVD12                                    : 12;
    ///////////////////////////////////////////////////////////
              SIE_MV                                           ie_mv;
    ///////////////////////////////////////////////////////////
    } SIE_FCTX_VC1;

    ///////////////////////////////////////////////////////////
     SIGN32 FCTX_VC1_drvrd(SIE_FCTX_VC1 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FCTX_VC1_drvwr(SIE_FCTX_VC1 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FCTX_VC1_reset(SIE_FCTX_VC1 *p);
     SIGN32 FCTX_VC1_cmp  (SIE_FCTX_VC1 *p, SIE_FCTX_VC1 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FCTX_VC1_check(p,pie,pfx,hLOG) FCTX_VC1_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FCTX_VC1_print(p,    pfx,hLOG) FCTX_VC1_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FCTX_VC1
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FCTX_RV9                biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 6  rBID                      
///                                    ###
///                                    * Flatten 4x4s in each 8x8,
///                                    * 0 for intra (as well as direct mode between parser & syntax processor):
///                                    * Reference buffer ID, last 1b indicates access mode:
///                                    * 0: frame/progressive or top field
///                                    * 1: bottom field
///                                    ###
///               %unsigned 5  rIDX                      
///                                    ###
///                                    * Flatten 4x4s in each 8x8,
///                                    * 0 for intra (as well as P/B-skip & direct mode between parser & syntax processor):
///                                    * Syntax 'RefListIdx' directly decoded from bit stream (field information embedded)
///                                    ###
///               %unsigned 1  FLD                       
///                                    ###
///                                    * Flatten 4x4s in each 8x8:
///                                    * 1 for MBAFF field MB, 0 for otherwise
///                                    ###
///               %unsigned 1  equalpred                 
///                                    ###
///                                    * BLK property for CABAC only:
///                                    * Using block category ACV,
///                                    * (But flatten to all 4x4s in each 8x8s):
///                                    * = !Intra && !skipped && (bi-pred || fore-pred)
///                                    * NOTE: = 0 for direct mode
///                                    * VC-1:
///                                    * PMV output: for hybridPred
///                                    * PMV input: predictor_flag (0: use dominant PMV)
///                                    ###
///               %unsigned 1  transform                 
///                                    ###
///                                    * MB property (flatten in all 4x4s):
///                                    * H.264: if 8x8 transform
///                                    * Others: if field transform
///                                    ###
///               %unsigned 1  NCBPY                     
///                                    ###
///                                    * Loop-filter & CABAC use only:
///                                    * Luma using block category ACV (4th 4x4),
///                                    * (But flatten to all 4x4s in each 8x8s):
///                                    * = !(IPCM || cbp_luma)
///                                    ###
///               %unsigned 1  MixFLG                    
///                                    ###
///                                    * CABAC use only:
///                                    * CBP chroma using block category DCU/DCV,
///                                    * (Only at 3rd & 4th 4x4s in 3rd 8x8):
///                                    * bin[0]: IPCM || !(skipped || (cbp_chroma == 0))
///                                    * bin[1]: IPCM || !(skipped || (cbp_chroma != 2))
///                                    * Or:
///                                    * mb_type using block category DCY,
///                                    * (Only at 4th 4x4 in 4th 8x8):
///                                    * I_SLICE: = !I_NXN
///                                    * P_SLICE: = 0
///                                    * B_SLICE: = !skipped && !direct_16x16
///                                    * Or:
///                                    * intra-chroma_pred using block category DCI,
///                                    * (Only at 3rd 4x4 in 4th 8x8):
///                                    * = Intra && !IPCM && (intra_chroma_pred != 0)
///                                    * Or:
///                                    * Temporal context buffers for direct mode use
///                                    ###
///                                    : 8x8                       0x1
///                                                 ###
///                                                 * Only at 1st 4x4 in 1st 8x8:
///                                                 * = if MB contains no sub-8x8 partition
///                                                 ###
///                                    : 16x16                     0x1
///                                                 ###
///                                                 * Only at 1st 4x4 in 2nd 8x8:
///                                                 * = if MB contains only 1 partition (16x16)
///                                                 ###
///               %unsigned 1  CBPY                      
///                                    ###
///                                    * CBP for Y
///                                    ###
///               %unsigned 1  CBPU                      
///                                    ###
///                                    * CBP for U
///                                    ###
///               %unsigned 1  CBPV                      
///                                    ###
///                                    * CBP for Y
///                                    ###
///               %unsigned 2  BsY                       
///                                    ###
///                                    * Block strength for Y
///                                    ###
///               %unsigned 2  BsU                       
///                                    ###
///                                    * Block strength for U
///                                    ###
///               %unsigned 2  BsV                       
///                                    ###
///                                    * Block strength for V
///                                    ###
///               %unsigned 7  Rsvd                      
///                                    ###
///                                    * Reserved
///                                    ###
///     @ 0x00004                      (P)
///     # 0x00004 mv                   
///               $MV                  mv                REG          
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FCTX_RV9
#define h_FCTX_RV9 (){}

    #define     BA_FCTX_RV9_rBID                               0x0000
    #define     B16FCTX_RV9_rBID                               0x0000
    #define   LSb32FCTX_RV9_rBID                                  0
    #define   LSb16FCTX_RV9_rBID                                  0
    #define       bFCTX_RV9_rBID                               6
    #define   MSK32FCTX_RV9_rBID                                  0x0000003F

    #define     BA_FCTX_RV9_rIDX                               0x0000
    #define     B16FCTX_RV9_rIDX                               0x0000
    #define   LSb32FCTX_RV9_rIDX                                  6
    #define   LSb16FCTX_RV9_rIDX                                  6
    #define       bFCTX_RV9_rIDX                               5
    #define   MSK32FCTX_RV9_rIDX                                  0x000007C0

    #define     BA_FCTX_RV9_FLD                                0x0001
    #define     B16FCTX_RV9_FLD                                0x0000
    #define   LSb32FCTX_RV9_FLD                                   11
    #define   LSb16FCTX_RV9_FLD                                   11
    #define       bFCTX_RV9_FLD                                1
    #define   MSK32FCTX_RV9_FLD                                   0x00000800

    #define     BA_FCTX_RV9_equalpred                          0x0001
    #define     B16FCTX_RV9_equalpred                          0x0000
    #define   LSb32FCTX_RV9_equalpred                             12
    #define   LSb16FCTX_RV9_equalpred                             12
    #define       bFCTX_RV9_equalpred                          1
    #define   MSK32FCTX_RV9_equalpred                             0x00001000

    #define     BA_FCTX_RV9_transform                          0x0001
    #define     B16FCTX_RV9_transform                          0x0000
    #define   LSb32FCTX_RV9_transform                             13
    #define   LSb16FCTX_RV9_transform                             13
    #define       bFCTX_RV9_transform                          1
    #define   MSK32FCTX_RV9_transform                             0x00002000

    #define     BA_FCTX_RV9_NCBPY                              0x0001
    #define     B16FCTX_RV9_NCBPY                              0x0000
    #define   LSb32FCTX_RV9_NCBPY                                 14
    #define   LSb16FCTX_RV9_NCBPY                                 14
    #define       bFCTX_RV9_NCBPY                              1
    #define   MSK32FCTX_RV9_NCBPY                                 0x00004000

    #define     BA_FCTX_RV9_MixFLG                             0x0001
    #define     B16FCTX_RV9_MixFLG                             0x0000
    #define   LSb32FCTX_RV9_MixFLG                                15
    #define   LSb16FCTX_RV9_MixFLG                                15
    #define       bFCTX_RV9_MixFLG                             1
    #define   MSK32FCTX_RV9_MixFLG                                0x00008000
    #define        FCTX_RV9_MixFLG_8x8                                      0x1
    #define        FCTX_RV9_MixFLG_16x16                                    0x1

    #define     BA_FCTX_RV9_CBPY                               0x0002
    #define     B16FCTX_RV9_CBPY                               0x0002
    #define   LSb32FCTX_RV9_CBPY                                  16
    #define   LSb16FCTX_RV9_CBPY                                  0
    #define       bFCTX_RV9_CBPY                               1
    #define   MSK32FCTX_RV9_CBPY                                  0x00010000

    #define     BA_FCTX_RV9_CBPU                               0x0002
    #define     B16FCTX_RV9_CBPU                               0x0002
    #define   LSb32FCTX_RV9_CBPU                                  17
    #define   LSb16FCTX_RV9_CBPU                                  1
    #define       bFCTX_RV9_CBPU                               1
    #define   MSK32FCTX_RV9_CBPU                                  0x00020000

    #define     BA_FCTX_RV9_CBPV                               0x0002
    #define     B16FCTX_RV9_CBPV                               0x0002
    #define   LSb32FCTX_RV9_CBPV                                  18
    #define   LSb16FCTX_RV9_CBPV                                  2
    #define       bFCTX_RV9_CBPV                               1
    #define   MSK32FCTX_RV9_CBPV                                  0x00040000

    #define     BA_FCTX_RV9_BsY                                0x0002
    #define     B16FCTX_RV9_BsY                                0x0002
    #define   LSb32FCTX_RV9_BsY                                   19
    #define   LSb16FCTX_RV9_BsY                                   3
    #define       bFCTX_RV9_BsY                                2
    #define   MSK32FCTX_RV9_BsY                                   0x00180000

    #define     BA_FCTX_RV9_BsU                                0x0002
    #define     B16FCTX_RV9_BsU                                0x0002
    #define   LSb32FCTX_RV9_BsU                                   21
    #define   LSb16FCTX_RV9_BsU                                   5
    #define       bFCTX_RV9_BsU                                2
    #define   MSK32FCTX_RV9_BsU                                   0x00600000

    #define     BA_FCTX_RV9_BsV                                0x0002
    #define     B16FCTX_RV9_BsV                                0x0002
    #define   LSb32FCTX_RV9_BsV                                   23
    #define   LSb16FCTX_RV9_BsV                                   7
    #define       bFCTX_RV9_BsV                                2
    #define   MSK32FCTX_RV9_BsV                                   0x01800000

    #define     BA_FCTX_RV9_Rsvd                               0x0003
    #define     B16FCTX_RV9_Rsvd                               0x0002
    #define   LSb32FCTX_RV9_Rsvd                                  25
    #define   LSb16FCTX_RV9_Rsvd                                  9
    #define       bFCTX_RV9_Rsvd                               7
    #define   MSK32FCTX_RV9_Rsvd                                  0xFE000000
    ///////////////////////////////////////////////////////////
    #define     RA_FCTX_RV9_mv                                 0x0004
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FCTX_RV9 {
    ///////////////////////////////////////////////////////////
    #define   GET32FCTX_RV9_rBID(r32)                          _BFGET_(r32, 5, 0)
    #define   SET32FCTX_RV9_rBID(r32,v)                        _BFSET_(r32, 5, 0,v)
    #define   GET16FCTX_RV9_rBID(r16)                          _BFGET_(r16, 5, 0)
    #define   SET16FCTX_RV9_rBID(r16,v)                        _BFSET_(r16, 5, 0,v)

    #define   GET32FCTX_RV9_rIDX(r32)                          _BFGET_(r32,10, 6)
    #define   SET32FCTX_RV9_rIDX(r32,v)                        _BFSET_(r32,10, 6,v)
    #define   GET16FCTX_RV9_rIDX(r16)                          _BFGET_(r16,10, 6)
    #define   SET16FCTX_RV9_rIDX(r16,v)                        _BFSET_(r16,10, 6,v)

    #define   GET32FCTX_RV9_FLD(r32)                           _BFGET_(r32,11,11)
    #define   SET32FCTX_RV9_FLD(r32,v)                         _BFSET_(r32,11,11,v)
    #define   GET16FCTX_RV9_FLD(r16)                           _BFGET_(r16,11,11)
    #define   SET16FCTX_RV9_FLD(r16,v)                         _BFSET_(r16,11,11,v)

    #define   GET32FCTX_RV9_equalpred(r32)                     _BFGET_(r32,12,12)
    #define   SET32FCTX_RV9_equalpred(r32,v)                   _BFSET_(r32,12,12,v)
    #define   GET16FCTX_RV9_equalpred(r16)                     _BFGET_(r16,12,12)
    #define   SET16FCTX_RV9_equalpred(r16,v)                   _BFSET_(r16,12,12,v)

    #define   GET32FCTX_RV9_transform(r32)                     _BFGET_(r32,13,13)
    #define   SET32FCTX_RV9_transform(r32,v)                   _BFSET_(r32,13,13,v)
    #define   GET16FCTX_RV9_transform(r16)                     _BFGET_(r16,13,13)
    #define   SET16FCTX_RV9_transform(r16,v)                   _BFSET_(r16,13,13,v)

    #define   GET32FCTX_RV9_NCBPY(r32)                         _BFGET_(r32,14,14)
    #define   SET32FCTX_RV9_NCBPY(r32,v)                       _BFSET_(r32,14,14,v)
    #define   GET16FCTX_RV9_NCBPY(r16)                         _BFGET_(r16,14,14)
    #define   SET16FCTX_RV9_NCBPY(r16,v)                       _BFSET_(r16,14,14,v)

    #define   GET32FCTX_RV9_MixFLG(r32)                        _BFGET_(r32,15,15)
    #define   SET32FCTX_RV9_MixFLG(r32,v)                      _BFSET_(r32,15,15,v)
    #define   GET16FCTX_RV9_MixFLG(r16)                        _BFGET_(r16,15,15)
    #define   SET16FCTX_RV9_MixFLG(r16,v)                      _BFSET_(r16,15,15,v)

    #define   GET32FCTX_RV9_CBPY(r32)                          _BFGET_(r32,16,16)
    #define   SET32FCTX_RV9_CBPY(r32,v)                        _BFSET_(r32,16,16,v)
    #define   GET16FCTX_RV9_CBPY(r16)                          _BFGET_(r16, 0, 0)
    #define   SET16FCTX_RV9_CBPY(r16,v)                        _BFSET_(r16, 0, 0,v)

    #define   GET32FCTX_RV9_CBPU(r32)                          _BFGET_(r32,17,17)
    #define   SET32FCTX_RV9_CBPU(r32,v)                        _BFSET_(r32,17,17,v)
    #define   GET16FCTX_RV9_CBPU(r16)                          _BFGET_(r16, 1, 1)
    #define   SET16FCTX_RV9_CBPU(r16,v)                        _BFSET_(r16, 1, 1,v)

    #define   GET32FCTX_RV9_CBPV(r32)                          _BFGET_(r32,18,18)
    #define   SET32FCTX_RV9_CBPV(r32,v)                        _BFSET_(r32,18,18,v)
    #define   GET16FCTX_RV9_CBPV(r16)                          _BFGET_(r16, 2, 2)
    #define   SET16FCTX_RV9_CBPV(r16,v)                        _BFSET_(r16, 2, 2,v)

    #define   GET32FCTX_RV9_BsY(r32)                           _BFGET_(r32,20,19)
    #define   SET32FCTX_RV9_BsY(r32,v)                         _BFSET_(r32,20,19,v)
    #define   GET16FCTX_RV9_BsY(r16)                           _BFGET_(r16, 4, 3)
    #define   SET16FCTX_RV9_BsY(r16,v)                         _BFSET_(r16, 4, 3,v)

    #define   GET32FCTX_RV9_BsU(r32)                           _BFGET_(r32,22,21)
    #define   SET32FCTX_RV9_BsU(r32,v)                         _BFSET_(r32,22,21,v)
    #define   GET16FCTX_RV9_BsU(r16)                           _BFGET_(r16, 6, 5)
    #define   SET16FCTX_RV9_BsU(r16,v)                         _BFSET_(r16, 6, 5,v)

    #define   GET32FCTX_RV9_BsV(r32)                           _BFGET_(r32,24,23)
    #define   SET32FCTX_RV9_BsV(r32,v)                         _BFSET_(r32,24,23,v)
    #define   GET16FCTX_RV9_BsV(r16)                           _BFGET_(r16, 8, 7)
    #define   SET16FCTX_RV9_BsV(r16,v)                         _BFSET_(r16, 8, 7,v)

    #define   GET32FCTX_RV9_Rsvd(r32)                          _BFGET_(r32,31,25)
    #define   SET32FCTX_RV9_Rsvd(r32,v)                        _BFSET_(r32,31,25,v)
    #define   GET16FCTX_RV9_Rsvd(r16)                          _BFGET_(r16,15, 9)
    #define   SET16FCTX_RV9_Rsvd(r16,v)                        _BFSET_(r16,15, 9,v)

            UNSG32 u_rBID                                      :  6;
            UNSG32 u_rIDX                                      :  5;
            UNSG32 u_FLD                                       :  1;
            UNSG32 u_equalpred                                 :  1;
            UNSG32 u_transform                                 :  1;
            UNSG32 u_NCBPY                                     :  1;
            UNSG32 u_MixFLG                                    :  1;
            UNSG32 u_CBPY                                      :  1;
            UNSG32 u_CBPU                                      :  1;
            UNSG32 u_CBPV                                      :  1;
            UNSG32 u_BsY                                       :  2;
            UNSG32 u_BsU                                       :  2;
            UNSG32 u_BsV                                       :  2;
            UNSG32 u_Rsvd                                      :  7;
    ///////////////////////////////////////////////////////////
              SIE_MV                                           ie_mv;
    ///////////////////////////////////////////////////////////
    } SIE_FCTX_RV9;

    ///////////////////////////////////////////////////////////
     SIGN32 FCTX_RV9_drvrd(SIE_FCTX_RV9 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FCTX_RV9_drvwr(SIE_FCTX_RV9 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FCTX_RV9_reset(SIE_FCTX_RV9 *p);
     SIGN32 FCTX_RV9_cmp  (SIE_FCTX_RV9 *p, SIE_FCTX_RV9 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FCTX_RV9_check(p,pie,pfx,hLOG) FCTX_RV9_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FCTX_RV9_print(p,    pfx,hLOG) FCTX_RV9_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FCTX_RV9
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BCTX                    biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 6  rBID                      
///               %unsigned 5  rIDX                      
///               %unsigned 1  FLD                       
///               %unsigned 1  equalpred                 
///                                    ###
///                                    * BLK property for CABAC only:
///                                    * Using block category ACV,
///                                    * (Only at 4th 4x4 in each 8x8s):
///                                    * = !Intra && !skipped && (bi-pred || back-pred)
///                                    * NOTE: = 0 for direct mode
///                                    ###
///               %unsigned 3  RSVD                      
///                                    ###
///                                    * Reserved
///                                    ###
///               %unsigned 3  dctSel                    
///                                    : 8x8                       0x0
///                                    : 8x4                       0x1
///                                    : 4x8                       0x2
///                                    : 4x4                       0x3
///                                                 ###
///                                                 * VC-1 use only
///                                                 ###
///               %unsigned 6  ABSMVDX                   
///               %unsigned 7  ABSMVDY                   
///     @ 0x00004                      (P)
///     # 0x00004 mv                   
///               $MV                  mv                REG          
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BCTX
#define h_BCTX (){}

    #define     BA_BCTX_rBID                                   0x0000
    #define     B16BCTX_rBID                                   0x0000
    #define   LSb32BCTX_rBID                                      0
    #define   LSb16BCTX_rBID                                      0
    #define       bBCTX_rBID                                   6
    #define   MSK32BCTX_rBID                                      0x0000003F

    #define     BA_BCTX_rIDX                                   0x0000
    #define     B16BCTX_rIDX                                   0x0000
    #define   LSb32BCTX_rIDX                                      6
    #define   LSb16BCTX_rIDX                                      6
    #define       bBCTX_rIDX                                   5
    #define   MSK32BCTX_rIDX                                      0x000007C0

    #define     BA_BCTX_FLD                                    0x0001
    #define     B16BCTX_FLD                                    0x0000
    #define   LSb32BCTX_FLD                                       11
    #define   LSb16BCTX_FLD                                       11
    #define       bBCTX_FLD                                    1
    #define   MSK32BCTX_FLD                                       0x00000800

    #define     BA_BCTX_equalpred                              0x0001
    #define     B16BCTX_equalpred                              0x0000
    #define   LSb32BCTX_equalpred                                 12
    #define   LSb16BCTX_equalpred                                 12
    #define       bBCTX_equalpred                              1
    #define   MSK32BCTX_equalpred                                 0x00001000

    #define     BA_BCTX_RSVD                                   0x0001
    #define     B16BCTX_RSVD                                   0x0000
    #define   LSb32BCTX_RSVD                                      13
    #define   LSb16BCTX_RSVD                                      13
    #define       bBCTX_RSVD                                   3
    #define   MSK32BCTX_RSVD                                      0x0000E000

    #define     BA_BCTX_dctSel                                 0x0002
    #define     B16BCTX_dctSel                                 0x0002
    #define   LSb32BCTX_dctSel                                    16
    #define   LSb16BCTX_dctSel                                    0
    #define       bBCTX_dctSel                                 3
    #define   MSK32BCTX_dctSel                                    0x00070000
    #define        BCTX_dctSel_8x8                                          0x0
    #define        BCTX_dctSel_8x4                                          0x1
    #define        BCTX_dctSel_4x8                                          0x2
    #define        BCTX_dctSel_4x4                                          0x3

    #define     BA_BCTX_ABSMVDX                                0x0002
    #define     B16BCTX_ABSMVDX                                0x0002
    #define   LSb32BCTX_ABSMVDX                                   19
    #define   LSb16BCTX_ABSMVDX                                   3
    #define       bBCTX_ABSMVDX                                6
    #define   MSK32BCTX_ABSMVDX                                   0x01F80000

    #define     BA_BCTX_ABSMVDY                                0x0003
    #define     B16BCTX_ABSMVDY                                0x0002
    #define   LSb32BCTX_ABSMVDY                                   25
    #define   LSb16BCTX_ABSMVDY                                   9
    #define       bBCTX_ABSMVDY                                7
    #define   MSK32BCTX_ABSMVDY                                   0xFE000000
    ///////////////////////////////////////////////////////////
    #define     RA_BCTX_mv                                     0x0004
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BCTX {
    ///////////////////////////////////////////////////////////
    #define   GET32BCTX_rBID(r32)                              _BFGET_(r32, 5, 0)
    #define   SET32BCTX_rBID(r32,v)                            _BFSET_(r32, 5, 0,v)
    #define   GET16BCTX_rBID(r16)                              _BFGET_(r16, 5, 0)
    #define   SET16BCTX_rBID(r16,v)                            _BFSET_(r16, 5, 0,v)

    #define   GET32BCTX_rIDX(r32)                              _BFGET_(r32,10, 6)
    #define   SET32BCTX_rIDX(r32,v)                            _BFSET_(r32,10, 6,v)
    #define   GET16BCTX_rIDX(r16)                              _BFGET_(r16,10, 6)
    #define   SET16BCTX_rIDX(r16,v)                            _BFSET_(r16,10, 6,v)

    #define   GET32BCTX_FLD(r32)                               _BFGET_(r32,11,11)
    #define   SET32BCTX_FLD(r32,v)                             _BFSET_(r32,11,11,v)
    #define   GET16BCTX_FLD(r16)                               _BFGET_(r16,11,11)
    #define   SET16BCTX_FLD(r16,v)                             _BFSET_(r16,11,11,v)

    #define   GET32BCTX_equalpred(r32)                         _BFGET_(r32,12,12)
    #define   SET32BCTX_equalpred(r32,v)                       _BFSET_(r32,12,12,v)
    #define   GET16BCTX_equalpred(r16)                         _BFGET_(r16,12,12)
    #define   SET16BCTX_equalpred(r16,v)                       _BFSET_(r16,12,12,v)

    #define   GET32BCTX_RSVD(r32)                              _BFGET_(r32,15,13)
    #define   SET32BCTX_RSVD(r32,v)                            _BFSET_(r32,15,13,v)
    #define   GET16BCTX_RSVD(r16)                              _BFGET_(r16,15,13)
    #define   SET16BCTX_RSVD(r16,v)                            _BFSET_(r16,15,13,v)

    #define   GET32BCTX_dctSel(r32)                            _BFGET_(r32,18,16)
    #define   SET32BCTX_dctSel(r32,v)                          _BFSET_(r32,18,16,v)
    #define   GET16BCTX_dctSel(r16)                            _BFGET_(r16, 2, 0)
    #define   SET16BCTX_dctSel(r16,v)                          _BFSET_(r16, 2, 0,v)

    #define   GET32BCTX_ABSMVDX(r32)                           _BFGET_(r32,24,19)
    #define   SET32BCTX_ABSMVDX(r32,v)                         _BFSET_(r32,24,19,v)
    #define   GET16BCTX_ABSMVDX(r16)                           _BFGET_(r16, 8, 3)
    #define   SET16BCTX_ABSMVDX(r16,v)                         _BFSET_(r16, 8, 3,v)

    #define   GET32BCTX_ABSMVDY(r32)                           _BFGET_(r32,31,25)
    #define   SET32BCTX_ABSMVDY(r32,v)                         _BFSET_(r32,31,25,v)
    #define   GET16BCTX_ABSMVDY(r16)                           _BFGET_(r16,15, 9)
    #define   SET16BCTX_ABSMVDY(r16,v)                         _BFSET_(r16,15, 9,v)

            UNSG32 u_rBID                                      :  6;
            UNSG32 u_rIDX                                      :  5;
            UNSG32 u_FLD                                       :  1;
            UNSG32 u_equalpred                                 :  1;
            UNSG32 u_RSVD                                      :  3;
            UNSG32 u_dctSel                                    :  3;
            UNSG32 u_ABSMVDX                                   :  6;
            UNSG32 u_ABSMVDY                                   :  7;
    ///////////////////////////////////////////////////////////
              SIE_MV                                           ie_mv;
    ///////////////////////////////////////////////////////////
    } SIE_BCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 BCTX_drvrd(SIE_BCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BCTX_drvwr(SIE_BCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BCTX_reset(SIE_BCTX *p);
     SIGN32 BCTX_cmp  (SIE_BCTX *p, SIE_BCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BCTX_check(p,pie,pfx,hLOG) BCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BCTX_print(p,    pfx,hLOG) BCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BCTX_VC1                biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 6  rBID                      
///               %unsigned 5  rIDX                      
///               %unsigned 1  FLD                       
///               %unsigned 1  equalpred                 
///                                    ###
///                                    * BLK property for CABAC only:
///                                    * Using block category ACV,
///                                    * (Only at 4th 4x4 in each 8x8s):
///                                    * = !Intra && !skipped && (bi-pred || back-pred)
///                                    * NOTE: = 0 for direct mode
///                                    ###
///               %unsigned 3  RSVD                      
///                                    ###
///                                    * Reserved
///                                    ###
///               %unsigned 2  dctSelU                   
///                                    ###
///                                    * DCT transform type for U; used for VC-1 Fop
///                                    ###
///               %unsigned 2  dctSelV                   
///                                    ###
///                                    * DCT transform type for V; used for VC-1 Fop
///                                    ###
///               %unsigned 1  CBFU                      
///                                    ###
///                                    * coded block (4x4) flag for U; used for VC-1 Fop
///                                    ###
///               %unsigned 1  CBFV                      
///                                    ###
///                                    * coded block (4x4) flag for V; used for VC-1 Fop
///                                    ###
///               %unsigned 1  CBFU8x8                   
///                                    ###
///                                    * coded block (8x8) flag for U, used for VC-1 Fop
///                                    ###
///               %unsigned 1  CBFV8x8                   
///                                    ###
///                                    * coded block (8x8) flag for V, used for VC-1 Fop
///                                    ###
///               %unsigned 8  RSVD8                     
///     @ 0x00004                      (P)
///     # 0x00004 mv                   
///               $MV                  mv                REG          
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BCTX_VC1
#define h_BCTX_VC1 (){}

    #define     BA_BCTX_VC1_rBID                               0x0000
    #define     B16BCTX_VC1_rBID                               0x0000
    #define   LSb32BCTX_VC1_rBID                                  0
    #define   LSb16BCTX_VC1_rBID                                  0
    #define       bBCTX_VC1_rBID                               6
    #define   MSK32BCTX_VC1_rBID                                  0x0000003F

    #define     BA_BCTX_VC1_rIDX                               0x0000
    #define     B16BCTX_VC1_rIDX                               0x0000
    #define   LSb32BCTX_VC1_rIDX                                  6
    #define   LSb16BCTX_VC1_rIDX                                  6
    #define       bBCTX_VC1_rIDX                               5
    #define   MSK32BCTX_VC1_rIDX                                  0x000007C0

    #define     BA_BCTX_VC1_FLD                                0x0001
    #define     B16BCTX_VC1_FLD                                0x0000
    #define   LSb32BCTX_VC1_FLD                                   11
    #define   LSb16BCTX_VC1_FLD                                   11
    #define       bBCTX_VC1_FLD                                1
    #define   MSK32BCTX_VC1_FLD                                   0x00000800

    #define     BA_BCTX_VC1_equalpred                          0x0001
    #define     B16BCTX_VC1_equalpred                          0x0000
    #define   LSb32BCTX_VC1_equalpred                             12
    #define   LSb16BCTX_VC1_equalpred                             12
    #define       bBCTX_VC1_equalpred                          1
    #define   MSK32BCTX_VC1_equalpred                             0x00001000

    #define     BA_BCTX_VC1_RSVD                               0x0001
    #define     B16BCTX_VC1_RSVD                               0x0000
    #define   LSb32BCTX_VC1_RSVD                                  13
    #define   LSb16BCTX_VC1_RSVD                                  13
    #define       bBCTX_VC1_RSVD                               3
    #define   MSK32BCTX_VC1_RSVD                                  0x0000E000

    #define     BA_BCTX_VC1_dctSelU                            0x0002
    #define     B16BCTX_VC1_dctSelU                            0x0002
    #define   LSb32BCTX_VC1_dctSelU                               16
    #define   LSb16BCTX_VC1_dctSelU                               0
    #define       bBCTX_VC1_dctSelU                            2
    #define   MSK32BCTX_VC1_dctSelU                               0x00030000

    #define     BA_BCTX_VC1_dctSelV                            0x0002
    #define     B16BCTX_VC1_dctSelV                            0x0002
    #define   LSb32BCTX_VC1_dctSelV                               18
    #define   LSb16BCTX_VC1_dctSelV                               2
    #define       bBCTX_VC1_dctSelV                            2
    #define   MSK32BCTX_VC1_dctSelV                               0x000C0000

    #define     BA_BCTX_VC1_CBFU                               0x0002
    #define     B16BCTX_VC1_CBFU                               0x0002
    #define   LSb32BCTX_VC1_CBFU                                  20
    #define   LSb16BCTX_VC1_CBFU                                  4
    #define       bBCTX_VC1_CBFU                               1
    #define   MSK32BCTX_VC1_CBFU                                  0x00100000

    #define     BA_BCTX_VC1_CBFV                               0x0002
    #define     B16BCTX_VC1_CBFV                               0x0002
    #define   LSb32BCTX_VC1_CBFV                                  21
    #define   LSb16BCTX_VC1_CBFV                                  5
    #define       bBCTX_VC1_CBFV                               1
    #define   MSK32BCTX_VC1_CBFV                                  0x00200000

    #define     BA_BCTX_VC1_CBFU8x8                            0x0002
    #define     B16BCTX_VC1_CBFU8x8                            0x0002
    #define   LSb32BCTX_VC1_CBFU8x8                               22
    #define   LSb16BCTX_VC1_CBFU8x8                               6
    #define       bBCTX_VC1_CBFU8x8                            1
    #define   MSK32BCTX_VC1_CBFU8x8                               0x00400000

    #define     BA_BCTX_VC1_CBFV8x8                            0x0002
    #define     B16BCTX_VC1_CBFV8x8                            0x0002
    #define   LSb32BCTX_VC1_CBFV8x8                               23
    #define   LSb16BCTX_VC1_CBFV8x8                               7
    #define       bBCTX_VC1_CBFV8x8                            1
    #define   MSK32BCTX_VC1_CBFV8x8                               0x00800000

    #define     BA_BCTX_VC1_RSVD8                              0x0003
    #define     B16BCTX_VC1_RSVD8                              0x0002
    #define   LSb32BCTX_VC1_RSVD8                                 24
    #define   LSb16BCTX_VC1_RSVD8                                 8
    #define       bBCTX_VC1_RSVD8                              8
    #define   MSK32BCTX_VC1_RSVD8                                 0xFF000000
    ///////////////////////////////////////////////////////////
    #define     RA_BCTX_VC1_mv                                 0x0004
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BCTX_VC1 {
    ///////////////////////////////////////////////////////////
    #define   GET32BCTX_VC1_rBID(r32)                          _BFGET_(r32, 5, 0)
    #define   SET32BCTX_VC1_rBID(r32,v)                        _BFSET_(r32, 5, 0,v)
    #define   GET16BCTX_VC1_rBID(r16)                          _BFGET_(r16, 5, 0)
    #define   SET16BCTX_VC1_rBID(r16,v)                        _BFSET_(r16, 5, 0,v)

    #define   GET32BCTX_VC1_rIDX(r32)                          _BFGET_(r32,10, 6)
    #define   SET32BCTX_VC1_rIDX(r32,v)                        _BFSET_(r32,10, 6,v)
    #define   GET16BCTX_VC1_rIDX(r16)                          _BFGET_(r16,10, 6)
    #define   SET16BCTX_VC1_rIDX(r16,v)                        _BFSET_(r16,10, 6,v)

    #define   GET32BCTX_VC1_FLD(r32)                           _BFGET_(r32,11,11)
    #define   SET32BCTX_VC1_FLD(r32,v)                         _BFSET_(r32,11,11,v)
    #define   GET16BCTX_VC1_FLD(r16)                           _BFGET_(r16,11,11)
    #define   SET16BCTX_VC1_FLD(r16,v)                         _BFSET_(r16,11,11,v)

    #define   GET32BCTX_VC1_equalpred(r32)                     _BFGET_(r32,12,12)
    #define   SET32BCTX_VC1_equalpred(r32,v)                   _BFSET_(r32,12,12,v)
    #define   GET16BCTX_VC1_equalpred(r16)                     _BFGET_(r16,12,12)
    #define   SET16BCTX_VC1_equalpred(r16,v)                   _BFSET_(r16,12,12,v)

    #define   GET32BCTX_VC1_RSVD(r32)                          _BFGET_(r32,15,13)
    #define   SET32BCTX_VC1_RSVD(r32,v)                        _BFSET_(r32,15,13,v)
    #define   GET16BCTX_VC1_RSVD(r16)                          _BFGET_(r16,15,13)
    #define   SET16BCTX_VC1_RSVD(r16,v)                        _BFSET_(r16,15,13,v)

    #define   GET32BCTX_VC1_dctSelU(r32)                       _BFGET_(r32,17,16)
    #define   SET32BCTX_VC1_dctSelU(r32,v)                     _BFSET_(r32,17,16,v)
    #define   GET16BCTX_VC1_dctSelU(r16)                       _BFGET_(r16, 1, 0)
    #define   SET16BCTX_VC1_dctSelU(r16,v)                     _BFSET_(r16, 1, 0,v)

    #define   GET32BCTX_VC1_dctSelV(r32)                       _BFGET_(r32,19,18)
    #define   SET32BCTX_VC1_dctSelV(r32,v)                     _BFSET_(r32,19,18,v)
    #define   GET16BCTX_VC1_dctSelV(r16)                       _BFGET_(r16, 3, 2)
    #define   SET16BCTX_VC1_dctSelV(r16,v)                     _BFSET_(r16, 3, 2,v)

    #define   GET32BCTX_VC1_CBFU(r32)                          _BFGET_(r32,20,20)
    #define   SET32BCTX_VC1_CBFU(r32,v)                        _BFSET_(r32,20,20,v)
    #define   GET16BCTX_VC1_CBFU(r16)                          _BFGET_(r16, 4, 4)
    #define   SET16BCTX_VC1_CBFU(r16,v)                        _BFSET_(r16, 4, 4,v)

    #define   GET32BCTX_VC1_CBFV(r32)                          _BFGET_(r32,21,21)
    #define   SET32BCTX_VC1_CBFV(r32,v)                        _BFSET_(r32,21,21,v)
    #define   GET16BCTX_VC1_CBFV(r16)                          _BFGET_(r16, 5, 5)
    #define   SET16BCTX_VC1_CBFV(r16,v)                        _BFSET_(r16, 5, 5,v)

    #define   GET32BCTX_VC1_CBFU8x8(r32)                       _BFGET_(r32,22,22)
    #define   SET32BCTX_VC1_CBFU8x8(r32,v)                     _BFSET_(r32,22,22,v)
    #define   GET16BCTX_VC1_CBFU8x8(r16)                       _BFGET_(r16, 6, 6)
    #define   SET16BCTX_VC1_CBFU8x8(r16,v)                     _BFSET_(r16, 6, 6,v)

    #define   GET32BCTX_VC1_CBFV8x8(r32)                       _BFGET_(r32,23,23)
    #define   SET32BCTX_VC1_CBFV8x8(r32,v)                     _BFSET_(r32,23,23,v)
    #define   GET16BCTX_VC1_CBFV8x8(r16)                       _BFGET_(r16, 7, 7)
    #define   SET16BCTX_VC1_CBFV8x8(r16,v)                     _BFSET_(r16, 7, 7,v)

    #define   GET32BCTX_VC1_RSVD8(r32)                         _BFGET_(r32,31,24)
    #define   SET32BCTX_VC1_RSVD8(r32,v)                       _BFSET_(r32,31,24,v)
    #define   GET16BCTX_VC1_RSVD8(r16)                         _BFGET_(r16,15, 8)
    #define   SET16BCTX_VC1_RSVD8(r16,v)                       _BFSET_(r16,15, 8,v)

            UNSG32 u_rBID                                      :  6;
            UNSG32 u_rIDX                                      :  5;
            UNSG32 u_FLD                                       :  1;
            UNSG32 u_equalpred                                 :  1;
            UNSG32 u_RSVD                                      :  3;
            UNSG32 u_dctSelU                                   :  2;
            UNSG32 u_dctSelV                                   :  2;
            UNSG32 u_CBFU                                      :  1;
            UNSG32 u_CBFV                                      :  1;
            UNSG32 u_CBFU8x8                                   :  1;
            UNSG32 u_CBFV8x8                                   :  1;
            UNSG32 u_RSVD8                                     :  8;
    ///////////////////////////////////////////////////////////
              SIE_MV                                           ie_mv;
    ///////////////////////////////////////////////////////////
    } SIE_BCTX_VC1;

    ///////////////////////////////////////////////////////////
     SIGN32 BCTX_VC1_drvrd(SIE_BCTX_VC1 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BCTX_VC1_drvwr(SIE_BCTX_VC1 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BCTX_VC1_reset(SIE_BCTX_VC1 *p);
     SIGN32 BCTX_VC1_cmp  (SIE_BCTX_VC1 *p, SIE_BCTX_VC1 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BCTX_VC1_check(p,pie,pfx,hLOG) BCTX_VC1_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BCTX_VC1_print(p,    pfx,hLOG) BCTX_VC1_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BCTX_VC1
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FCTXI                   biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 22 RSVD                      
///               %unsigned 5  NCUV                      
///                                    ###
///                                    * CAVLC use only:
///                                    * Using block category ACU/ACV: 0~15
///                                    ###
///               %unsigned 5  NCY                       
///                                    ###
///                                    * CAVLC use only:
///                                    * Using block category ACY (every 4x4s): 0~16
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 20 RSVD20                    
///               %unsigned 4  intraChroma               
///                                    ###
///                                    * For encoder: Intra prediction mode for chormablocks, see IntraChroma.mode above. Only appears in DCI, one per MB.
///                                    ###
///               %unsigned 8  intraLuma                 
///                                    ###
///                                    * Intra 16x16/NxN prediction mode for luma blocks, see IntraLuma.mode above
///                                    * =0 between parser & syntax processor
///                                    * End of FCTXI
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FCTXI
#define h_FCTXI (){}

    #define     BA_FCTXI_RSVD                                  0x0000
    #define     B16FCTXI_RSVD                                  0x0000
    #define   LSb32FCTXI_RSVD                                     0
    #define   LSb16FCTXI_RSVD                                     0
    #define       bFCTXI_RSVD                                  22
    #define   MSK32FCTXI_RSVD                                     0x003FFFFF

    #define     BA_FCTXI_NCUV                                  0x0002
    #define     B16FCTXI_NCUV                                  0x0002
    #define   LSb32FCTXI_NCUV                                     22
    #define   LSb16FCTXI_NCUV                                     6
    #define       bFCTXI_NCUV                                  5
    #define   MSK32FCTXI_NCUV                                     0x07C00000

    #define     BA_FCTXI_NCY                                   0x0003
    #define     B16FCTXI_NCY                                   0x0002
    #define   LSb32FCTXI_NCY                                      27
    #define   LSb16FCTXI_NCY                                      11
    #define       bFCTXI_NCY                                   5
    #define   MSK32FCTXI_NCY                                      0xF8000000
    ///////////////////////////////////////////////////////////

    #define     BA_FCTXI_RSVD20                                0x0004
    #define     B16FCTXI_RSVD20                                0x0004
    #define   LSb32FCTXI_RSVD20                                   0
    #define   LSb16FCTXI_RSVD20                                   0
    #define       bFCTXI_RSVD20                                20
    #define   MSK32FCTXI_RSVD20                                   0x000FFFFF

    #define     BA_FCTXI_intraChroma                           0x0006
    #define     B16FCTXI_intraChroma                           0x0006
    #define   LSb32FCTXI_intraChroma                              20
    #define   LSb16FCTXI_intraChroma                              4
    #define       bFCTXI_intraChroma                           4
    #define   MSK32FCTXI_intraChroma                              0x00F00000

    #define     BA_FCTXI_intraLuma                             0x0007
    #define     B16FCTXI_intraLuma                             0x0006
    #define   LSb32FCTXI_intraLuma                                24
    #define   LSb16FCTXI_intraLuma                                8
    #define       bFCTXI_intraLuma                             8
    #define   MSK32FCTXI_intraLuma                                0xFF000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FCTXI {
    ///////////////////////////////////////////////////////////
    #define   GET32FCTXI_RSVD(r32)                             _BFGET_(r32,21, 0)
    #define   SET32FCTXI_RSVD(r32,v)                           _BFSET_(r32,21, 0,v)

    #define   GET32FCTXI_NCUV(r32)                             _BFGET_(r32,26,22)
    #define   SET32FCTXI_NCUV(r32,v)                           _BFSET_(r32,26,22,v)
    #define   GET16FCTXI_NCUV(r16)                             _BFGET_(r16,10, 6)
    #define   SET16FCTXI_NCUV(r16,v)                           _BFSET_(r16,10, 6,v)

    #define   GET32FCTXI_NCY(r32)                              _BFGET_(r32,31,27)
    #define   SET32FCTXI_NCY(r32,v)                            _BFSET_(r32,31,27,v)
    #define   GET16FCTXI_NCY(r16)                              _BFGET_(r16,15,11)
    #define   SET16FCTXI_NCY(r16,v)                            _BFSET_(r16,15,11,v)

            UNSG32 u_RSVD                                      : 22;
            UNSG32 u_NCUV                                      :  5;
            UNSG32 u_NCY                                       :  5;
    ///////////////////////////////////////////////////////////
    #define   GET32FCTXI_RSVD20(r32)                           _BFGET_(r32,19, 0)
    #define   SET32FCTXI_RSVD20(r32,v)                         _BFSET_(r32,19, 0,v)

    #define   GET32FCTXI_intraChroma(r32)                      _BFGET_(r32,23,20)
    #define   SET32FCTXI_intraChroma(r32,v)                    _BFSET_(r32,23,20,v)
    #define   GET16FCTXI_intraChroma(r16)                      _BFGET_(r16, 7, 4)
    #define   SET16FCTXI_intraChroma(r16,v)                    _BFSET_(r16, 7, 4,v)

    #define   GET32FCTXI_intraLuma(r32)                        _BFGET_(r32,31,24)
    #define   SET32FCTXI_intraLuma(r32,v)                      _BFSET_(r32,31,24,v)
    #define   GET16FCTXI_intraLuma(r16)                        _BFGET_(r16,15, 8)
    #define   SET16FCTXI_intraLuma(r16,v)                      _BFSET_(r16,15, 8,v)

            UNSG32 u_RSVD20                                    : 20;
            UNSG32 u_intraChroma                               :  4;
            UNSG32 u_intraLuma                                 :  8;
    ///////////////////////////////////////////////////////////
    } SIE_FCTXI;

    ///////////////////////////////////////////////////////////
     SIGN32 FCTXI_drvrd(SIE_FCTXI *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FCTXI_drvwr(SIE_FCTXI *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FCTXI_reset(SIE_FCTXI *p);
     SIGN32 FCTXI_cmp  (SIE_FCTXI *p, SIE_FCTXI *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FCTXI_check(p,pie,pfx,hLOG) FCTXI_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FCTXI_print(p,    pfx,hLOG) FCTXI_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FCTXI
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE HCTX4x4                 biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 fore                 
///               $FCTX                fore              REG          
///                                    ###
///                                    * Forward prediction
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 back                 
///               $BCTX                back              REG          
///                                    ###
///                                    * Backward prediction
///                                    * End of HCTX4x4
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:     128b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_HCTX4x4
#define h_HCTX4x4 (){}

    #define     RA_HCTX4x4_fore                                0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_HCTX4x4_back                                0x0008
    ///////////////////////////////////////////////////////////

    typedef struct SIE_HCTX4x4 {
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_fore;
    ///////////////////////////////////////////////////////////
              SIE_BCTX                                         ie_back;
    ///////////////////////////////////////////////////////////
    } SIE_HCTX4x4;

    ///////////////////////////////////////////////////////////
     SIGN32 HCTX4x4_drvrd(SIE_HCTX4x4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 HCTX4x4_drvwr(SIE_HCTX4x4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void HCTX4x4_reset(SIE_HCTX4x4 *p);
     SIGN32 HCTX4x4_cmp  (SIE_HCTX4x4 *p, SIE_HCTX4x4 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define HCTX4x4_check(p,pie,pfx,hLOG) HCTX4x4_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define HCTX4x4_print(p,    pfx,hLOG) HCTX4x4_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: HCTX4x4
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CTXI                    biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %signed   16 AC0                       
///                                    ###
///                                    * DC or horizontal/vertical AC coefficient
///                                    ###
///               %signed   13 AC1                       
///                                    ###
///                                    * 2nd horizontal/vertical AC coefficient
///                                    ###
///               %unsigned 1  cbpcy                     
///                                    ###
///                                    * Flatten all 4x4s in a 8x8 block, coded or not
///                                    ###
///               %unsigned 2  mquantL                   
///                                    ###
///                                    * Low 2 bits of mquant, flatten all 4x4s in a macroblock
///                                    ###
///               %unsigned 3  mquantH                   
///                                    ###
///                                    * High 3 bits of mquant, flatten all 4x4s in a macroblock
///                                    ###
///               %signed   13 AC2                       
///                                    ###
///                                    * 3rd horizontal/vertical AC coefficient
///                                    ###
///               %unsigned 3  type                      
///                                    ###
///                                    * Sub-set of mb_type, see MBPROP.type above
///                                    * = intra16x16
///                                    ###
///               %signed   13 AC3                       
///                                    ###
///                                    * 4th horizontal/vertical AC coefficient
///                                    * End of CTXI
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CTXI
#define h_CTXI (){}

    #define     BA_CTXI_AC0                                    0x0000
    #define     B16CTXI_AC0                                    0x0000
    #define   LSb32CTXI_AC0                                       0
    #define   LSb16CTXI_AC0                                       0
    #define       bCTXI_AC0                                    16
    #define   MSK32CTXI_AC0                                       0x0000FFFF

    #define     BA_CTXI_AC1                                    0x0002
    #define     B16CTXI_AC1                                    0x0002
    #define   LSb32CTXI_AC1                                       16
    #define   LSb16CTXI_AC1                                       0
    #define       bCTXI_AC1                                    13
    #define   MSK32CTXI_AC1                                       0x1FFF0000

    #define     BA_CTXI_cbpcy                                  0x0003
    #define     B16CTXI_cbpcy                                  0x0002
    #define   LSb32CTXI_cbpcy                                     29
    #define   LSb16CTXI_cbpcy                                     13
    #define       bCTXI_cbpcy                                  1
    #define   MSK32CTXI_cbpcy                                     0x20000000

    #define     BA_CTXI_mquantL                                0x0003
    #define     B16CTXI_mquantL                                0x0002
    #define   LSb32CTXI_mquantL                                   30
    #define   LSb16CTXI_mquantL                                   14
    #define       bCTXI_mquantL                                2
    #define   MSK32CTXI_mquantL                                   0xC0000000

    #define     BA_CTXI_mquantH                                0x0004
    #define     B16CTXI_mquantH                                0x0004
    #define   LSb32CTXI_mquantH                                   0
    #define   LSb16CTXI_mquantH                                   0
    #define       bCTXI_mquantH                                3
    #define   MSK32CTXI_mquantH                                   0x00000007

    #define     BA_CTXI_AC2                                    0x0004
    #define     B16CTXI_AC2                                    0x0004
    #define   LSb32CTXI_AC2                                       3
    #define   LSb16CTXI_AC2                                       3
    #define       bCTXI_AC2                                    13
    #define   MSK32CTXI_AC2                                       0x0000FFF8

    #define     BA_CTXI_type                                   0x0006
    #define     B16CTXI_type                                   0x0006
    #define   LSb32CTXI_type                                      16
    #define   LSb16CTXI_type                                      0
    #define       bCTXI_type                                   3
    #define   MSK32CTXI_type                                      0x00070000

    #define     BA_CTXI_AC3                                    0x0006
    #define     B16CTXI_AC3                                    0x0006
    #define   LSb32CTXI_AC3                                       19
    #define   LSb16CTXI_AC3                                       3
    #define       bCTXI_AC3                                    13
    #define   MSK32CTXI_AC3                                       0xFFF80000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CTXI {
    ///////////////////////////////////////////////////////////
    #define   GET32CTXI_AC0(r32)                               _BFGET_(r32,15, 0)
    #define   SET32CTXI_AC0(r32,v)                             _BFSET_(r32,15, 0,v)
    #define   GET16CTXI_AC0(r16)                               _BFGET_(r16,15, 0)
    #define   SET16CTXI_AC0(r16,v)                             _BFSET_(r16,15, 0,v)

    #define   GET32CTXI_AC1(r32)                               _BFGET_(r32,28,16)
    #define   SET32CTXI_AC1(r32,v)                             _BFSET_(r32,28,16,v)
    #define   GET16CTXI_AC1(r16)                               _BFGET_(r16,12, 0)
    #define   SET16CTXI_AC1(r16,v)                             _BFSET_(r16,12, 0,v)

    #define   GET32CTXI_cbpcy(r32)                             _BFGET_(r32,29,29)
    #define   SET32CTXI_cbpcy(r32,v)                           _BFSET_(r32,29,29,v)
    #define   GET16CTXI_cbpcy(r16)                             _BFGET_(r16,13,13)
    #define   SET16CTXI_cbpcy(r16,v)                           _BFSET_(r16,13,13,v)

    #define   GET32CTXI_mquantL(r32)                           _BFGET_(r32,31,30)
    #define   SET32CTXI_mquantL(r32,v)                         _BFSET_(r32,31,30,v)
    #define   GET16CTXI_mquantL(r16)                           _BFGET_(r16,15,14)
    #define   SET16CTXI_mquantL(r16,v)                         _BFSET_(r16,15,14,v)

            UNSG32 s_AC0                                       : 16;
            UNSG32 s_AC1                                       : 13;
            UNSG32 u_cbpcy                                     :  1;
            UNSG32 u_mquantL                                   :  2;
    ///////////////////////////////////////////////////////////

    #define   GET32CTXI_mquantH(r32)                           _BFGET_(r32, 2, 0)
    #define   SET32CTXI_mquantH(r32,v)                         _BFSET_(r32, 2, 0,v)
    #define   GET16CTXI_mquantH(r16)                           _BFGET_(r16, 2, 0)
    #define   SET16CTXI_mquantH(r16,v)                         _BFSET_(r16, 2, 0,v)

    #define   GET32CTXI_AC2(r32)                               _BFGET_(r32,15, 3)
    #define   SET32CTXI_AC2(r32,v)                             _BFSET_(r32,15, 3,v)
    #define   GET16CTXI_AC2(r16)                               _BFGET_(r16,15, 3)
    #define   SET16CTXI_AC2(r16,v)                             _BFSET_(r16,15, 3,v)

    #define   GET32CTXI_type(r32)                              _BFGET_(r32,18,16)
    #define   SET32CTXI_type(r32,v)                            _BFSET_(r32,18,16,v)
    #define   GET16CTXI_type(r16)                              _BFGET_(r16, 2, 0)
    #define   SET16CTXI_type(r16,v)                            _BFSET_(r16, 2, 0,v)

    #define   GET32CTXI_AC3(r32)                               _BFGET_(r32,31,19)
    #define   SET32CTXI_AC3(r32,v)                             _BFSET_(r32,31,19,v)
    #define   GET16CTXI_AC3(r16)                               _BFGET_(r16,15, 3)
    #define   SET16CTXI_AC3(r16,v)                             _BFSET_(r16,15, 3,v)

            UNSG32 u_mquantH                                   :  3;
            UNSG32 s_AC2                                       : 13;
            UNSG32 u_type                                      :  3;
            UNSG32 s_AC3                                       : 13;
    ///////////////////////////////////////////////////////////
    } SIE_CTXI;

    ///////////////////////////////////////////////////////////
     SIGN32 CTXI_drvrd(SIE_CTXI *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CTXI_drvwr(SIE_CTXI *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CTXI_reset(SIE_CTXI *p);
     SIGN32 CTXI_cmp  (SIE_CTXI *p, SIE_CTXI *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CTXI_check(p,pie,pfx,hLOG) CTXI_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CTXI_print(p,    pfx,hLOG) CTXI_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CTXI
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CTXI4x4                                  (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 luma                 
///               $CTXI                luma              REG          
///                                    ###
///                                    * DC/AC for Y
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 chroma               
///               $CTXI                chroma            REG          
///                                    ###
///                                    * DC/AC for UV
///                                    * End of CTXI4x4
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:     128b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CTXI4x4
#define h_CTXI4x4 (){}

    #define     RA_CTXI4x4_luma                                0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_CTXI4x4_chroma                              0x0008
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CTXI4x4 {
    ///////////////////////////////////////////////////////////
              SIE_CTXI                                         ie_luma;
    ///////////////////////////////////////////////////////////
              SIE_CTXI                                         ie_chroma;
    ///////////////////////////////////////////////////////////
    } SIE_CTXI4x4;

    ///////////////////////////////////////////////////////////
     SIGN32 CTXI4x4_drvrd(SIE_CTXI4x4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CTXI4x4_drvwr(SIE_CTXI4x4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CTXI4x4_reset(SIE_CTXI4x4 *p);
     SIGN32 CTXI4x4_cmp  (SIE_CTXI4x4 *p, SIE_CTXI4x4 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CTXI4x4_check(p,pie,pfx,hLOG) CTXI4x4_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CTXI4x4_print(p,    pfx,hLOG) CTXI4x4_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CTXI4x4
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE IDX2BID                                  (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 frmIDX2BID           
///               $LUT8b               frmIDX2BID        REG      [16]
///                                    ###
///                                    * Cast to 8b rBID[32:rIDX][2:L0/L1]
///                                    * Note: field picture use this table (32 rIDX)!
///                                    ###
///     @ 0x00040                      (P)
///     # 0x00040 topIDX2BID           
///               $LUT8b               topIDX2BID        REG      [16]
///                                    ###
///                                    * Cast to 8b rBID[32:rIDX][2:L0/L1]
///                                    ###
///     @ 0x00080                      (P)
///     # 0x00080 btmIDX2BID           
///               $LUT8b               btmIDX2BID        REG      [16]
///                                    ###
///                                    * Cast to 8b rBID[32:rIDX][2:L0/L1]
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     192B, bits:    1536b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_IDX2BID
#define h_IDX2BID (){}

    #define     RA_IDX2BID_frmIDX2BID                          0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_IDX2BID_topIDX2BID                          0x0040
    ///////////////////////////////////////////////////////////
    #define     RA_IDX2BID_btmIDX2BID                          0x0080
    ///////////////////////////////////////////////////////////

    typedef struct SIE_IDX2BID {
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_frmIDX2BID[16];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_topIDX2BID[16];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_btmIDX2BID[16];
    ///////////////////////////////////////////////////////////
    } SIE_IDX2BID;

    ///////////////////////////////////////////////////////////
     SIGN32 IDX2BID_drvrd(SIE_IDX2BID *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 IDX2BID_drvwr(SIE_IDX2BID *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void IDX2BID_reset(SIE_IDX2BID *p);
     SIGN32 IDX2BID_cmp  (SIE_IDX2BID *p, SIE_IDX2BID *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define IDX2BID_check(p,pie,pfx,hLOG) IDX2BID_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define IDX2BID_print(p,    pfx,hLOG) IDX2BID_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: IDX2BID
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BID2IDX                                  (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 frmBID2IDX           
///               $LUT8b               frmBID2IDX        REG      [10]
///                                    ###
///                                    * Cast to 8b L0.min.rIDX[34:rBID]
///                                    * Note: field picture use this table (32 rIDX)!
///                                    ###
///     @ 0x00028                      (P)
///     # 0x00028 topBID2IDX           
///               $LUT8b               topBID2IDX        REG      [10]
///                                    ###
///                                    * Cast to 8b L0.min.rIDX[34:rBID]
///                                    ###
///     @ 0x00050                      (P)
///     # 0x00050 btmBID2IDX           
///               $LUT8b               btmBID2IDX        REG      [10]
///                                    ###
///                                    * Cast to 8b L0.min.rIDX[34:rBID]
///                                    * Note: direct mode corner case
///                                    * Alternative method (not used) if not adjust rIDX:
///                                    * rBID = CoL.rBID | (CoL.Frm & Cur.Btm)
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     120B, bits:     960b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BID2IDX
#define h_BID2IDX (){}

    #define     RA_BID2IDX_frmBID2IDX                          0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_BID2IDX_topBID2IDX                          0x0028
    ///////////////////////////////////////////////////////////
    #define     RA_BID2IDX_btmBID2IDX                          0x0050
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BID2IDX {
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_frmBID2IDX[10];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_topBID2IDX[10];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_btmBID2IDX[10];
    ///////////////////////////////////////////////////////////
    } SIE_BID2IDX;

    ///////////////////////////////////////////////////////////
     SIGN32 BID2IDX_drvrd(SIE_BID2IDX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BID2IDX_drvwr(SIE_BID2IDX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BID2IDX_reset(SIE_BID2IDX *p);
     SIGN32 BID2IDX_cmp  (SIE_BID2IDX *p, SIE_BID2IDX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BID2IDX_check(p,pie,pfx,hLOG) BID2IDX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BID2IDX_print(p,    pfx,hLOG) BID2IDX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BID2IDX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ASPSET                  biu              (4,4)
///     ###
///     * [0:31]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 3  type                      
///                                    ###
///                                    * MB type
///                                    ###
///               %unsigned 2  chroma                    
///                                    ###
///                                    * Intra MB only: intra_chroma_pred
///                                    ###
///               %unsigned 1  t8x8                      
///                                    ###
///                                    * 8x8 transform; used by AspInit & residual.
///                                    * End of ASPSET
///                                    ###
///               %%        26         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       6b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ASPSET
#define h_ASPSET (){}

    #define     BA_ASPSET_type                                 0x0000
    #define     B16ASPSET_type                                 0x0000
    #define   LSb32ASPSET_type                                    0
    #define   LSb16ASPSET_type                                    0
    #define       bASPSET_type                                 3
    #define   MSK32ASPSET_type                                    0x00000007

    #define     BA_ASPSET_chroma                               0x0000
    #define     B16ASPSET_chroma                               0x0000
    #define   LSb32ASPSET_chroma                                  3
    #define   LSb16ASPSET_chroma                                  3
    #define       bASPSET_chroma                               2
    #define   MSK32ASPSET_chroma                                  0x00000018

    #define     BA_ASPSET_t8x8                                 0x0000
    #define     B16ASPSET_t8x8                                 0x0000
    #define   LSb32ASPSET_t8x8                                    5
    #define   LSb16ASPSET_t8x8                                    5
    #define       bASPSET_t8x8                                 1
    #define   MSK32ASPSET_t8x8                                    0x00000020
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ASPSET {
    ///////////////////////////////////////////////////////////
    #define   GET32ASPSET_type(r32)                            _BFGET_(r32, 2, 0)
    #define   SET32ASPSET_type(r32,v)                          _BFSET_(r32, 2, 0,v)
    #define   GET16ASPSET_type(r16)                            _BFGET_(r16, 2, 0)
    #define   SET16ASPSET_type(r16,v)                          _BFSET_(r16, 2, 0,v)

    #define   GET32ASPSET_chroma(r32)                          _BFGET_(r32, 4, 3)
    #define   SET32ASPSET_chroma(r32,v)                        _BFSET_(r32, 4, 3,v)
    #define   GET16ASPSET_chroma(r16)                          _BFGET_(r16, 4, 3)
    #define   SET16ASPSET_chroma(r16,v)                        _BFSET_(r16, 4, 3,v)

    #define   GET32ASPSET_t8x8(r32)                            _BFGET_(r32, 5, 5)
    #define   SET32ASPSET_t8x8(r32,v)                          _BFSET_(r32, 5, 5,v)
    #define   GET16ASPSET_t8x8(r16)                            _BFGET_(r16, 5, 5)
    #define   SET16ASPSET_t8x8(r16,v)                          _BFSET_(r16, 5, 5,v)

            UNSG32 u_type                                      :  3;
            UNSG32 u_chroma                                    :  2;
            UNSG32 u_t8x8                                      :  1;
            UNSG32 RSVDx0_b6                                   : 26;
    ///////////////////////////////////////////////////////////
    } SIE_ASPSET;

    ///////////////////////////////////////////////////////////
     SIGN32 ASPSET_drvrd(SIE_ASPSET *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ASPSET_drvwr(SIE_ASPSET *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ASPSET_reset(SIE_ASPSET *p);
     SIGN32 ASPSET_cmp  (SIE_ASPSET *p, SIE_ASPSET *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ASPSET_check(p,pie,pfx,hLOG) ASPSET_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ASPSET_print(p,    pfx,hLOG) ASPSET_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ASPSET
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE IntraPROP                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 3  type                      
///                                    ###
///                                    * See BLK.type above,
///                                    * LUT: IPCM or intraNxN or intra16x16
///                                    ###
///               %unsigned 1  8x8IDX0                   
///                                    ###
///                                    * LUT: 0 (P_8x8ref0)
///                                    ###
///               %unsigned 1  t8x8I                     
///                                    ###
///                                    * LUT: MB.transform8x8 & intraNxN
///                                    ###
///               %unsigned 1  t8x8PB                    
///                                    ###
///                                    * LUT: 0
///                                    ###
///               %unsigned 2  luma16x16                 
///                                    ###
///                                    * LUT: intra 16x16 prediction mode
///                                    ###
///               %unsigned 6  CBP                       
///                                    ###
///                                    * LUT: intra 16x16 coded block pattern
///                                    * MPEG4 LUT: Chroma cbp
///                                    * End of IntraPROP
///                                    ###
///               %%        18         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      14b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_IntraPROP
#define h_IntraPROP (){}

    #define     BA_IntraPROP_type                              0x0000
    #define     B16IntraPROP_type                              0x0000
    #define   LSb32IntraPROP_type                                 0
    #define   LSb16IntraPROP_type                                 0
    #define       bIntraPROP_type                              3
    #define   MSK32IntraPROP_type                                 0x00000007

    #define     BA_IntraPROP_8x8IDX0                           0x0000
    #define     B16IntraPROP_8x8IDX0                           0x0000
    #define   LSb32IntraPROP_8x8IDX0                              3
    #define   LSb16IntraPROP_8x8IDX0                              3
    #define       bIntraPROP_8x8IDX0                           1
    #define   MSK32IntraPROP_8x8IDX0                              0x00000008

    #define     BA_IntraPROP_t8x8I                             0x0000
    #define     B16IntraPROP_t8x8I                             0x0000
    #define   LSb32IntraPROP_t8x8I                                4
    #define   LSb16IntraPROP_t8x8I                                4
    #define       bIntraPROP_t8x8I                             1
    #define   MSK32IntraPROP_t8x8I                                0x00000010

    #define     BA_IntraPROP_t8x8PB                            0x0000
    #define     B16IntraPROP_t8x8PB                            0x0000
    #define   LSb32IntraPROP_t8x8PB                               5
    #define   LSb16IntraPROP_t8x8PB                               5
    #define       bIntraPROP_t8x8PB                            1
    #define   MSK32IntraPROP_t8x8PB                               0x00000020

    #define     BA_IntraPROP_luma16x16                         0x0000
    #define     B16IntraPROP_luma16x16                         0x0000
    #define   LSb32IntraPROP_luma16x16                            6
    #define   LSb16IntraPROP_luma16x16                            6
    #define       bIntraPROP_luma16x16                         2
    #define   MSK32IntraPROP_luma16x16                            0x000000C0

    #define     BA_IntraPROP_CBP                               0x0001
    #define     B16IntraPROP_CBP                               0x0000
    #define   LSb32IntraPROP_CBP                                  8
    #define   LSb16IntraPROP_CBP                                  8
    #define       bIntraPROP_CBP                               6
    #define   MSK32IntraPROP_CBP                                  0x00003F00
    ///////////////////////////////////////////////////////////

    typedef struct SIE_IntraPROP {
    ///////////////////////////////////////////////////////////
    #define   GET32IntraPROP_type(r32)                         _BFGET_(r32, 2, 0)
    #define   SET32IntraPROP_type(r32,v)                       _BFSET_(r32, 2, 0,v)
    #define   GET16IntraPROP_type(r16)                         _BFGET_(r16, 2, 0)
    #define   SET16IntraPROP_type(r16,v)                       _BFSET_(r16, 2, 0,v)

    #define   GET32IntraPROP_8x8IDX0(r32)                      _BFGET_(r32, 3, 3)
    #define   SET32IntraPROP_8x8IDX0(r32,v)                    _BFSET_(r32, 3, 3,v)
    #define   GET16IntraPROP_8x8IDX0(r16)                      _BFGET_(r16, 3, 3)
    #define   SET16IntraPROP_8x8IDX0(r16,v)                    _BFSET_(r16, 3, 3,v)

    #define   GET32IntraPROP_t8x8I(r32)                        _BFGET_(r32, 4, 4)
    #define   SET32IntraPROP_t8x8I(r32,v)                      _BFSET_(r32, 4, 4,v)
    #define   GET16IntraPROP_t8x8I(r16)                        _BFGET_(r16, 4, 4)
    #define   SET16IntraPROP_t8x8I(r16,v)                      _BFSET_(r16, 4, 4,v)

    #define   GET32IntraPROP_t8x8PB(r32)                       _BFGET_(r32, 5, 5)
    #define   SET32IntraPROP_t8x8PB(r32,v)                     _BFSET_(r32, 5, 5,v)
    #define   GET16IntraPROP_t8x8PB(r16)                       _BFGET_(r16, 5, 5)
    #define   SET16IntraPROP_t8x8PB(r16,v)                     _BFSET_(r16, 5, 5,v)

    #define   GET32IntraPROP_luma16x16(r32)                    _BFGET_(r32, 7, 6)
    #define   SET32IntraPROP_luma16x16(r32,v)                  _BFSET_(r32, 7, 6,v)
    #define   GET16IntraPROP_luma16x16(r16)                    _BFGET_(r16, 7, 6)
    #define   SET16IntraPROP_luma16x16(r16,v)                  _BFSET_(r16, 7, 6,v)

    #define   GET32IntraPROP_CBP(r32)                          _BFGET_(r32,13, 8)
    #define   SET32IntraPROP_CBP(r32,v)                        _BFSET_(r32,13, 8,v)
    #define   GET16IntraPROP_CBP(r16)                          _BFGET_(r16,13, 8)
    #define   SET16IntraPROP_CBP(r16,v)                        _BFSET_(r16,13, 8,v)

            UNSG32 u_type                                      :  3;
            UNSG32 u_8x8IDX0                                   :  1;
            UNSG32 u_t8x8I                                     :  1;
            UNSG32 u_t8x8PB                                    :  1;
            UNSG32 u_luma16x16                                 :  2;
            UNSG32 u_CBP                                       :  6;
            UNSG32 RSVDx0_b14                                  : 18;
    ///////////////////////////////////////////////////////////
    } SIE_IntraPROP;

    ///////////////////////////////////////////////////////////
     SIGN32 IntraPROP_drvrd(SIE_IntraPROP *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 IntraPROP_drvwr(SIE_IntraPROP *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void IntraPROP_reset(SIE_IntraPROP *p);
     SIGN32 IntraPROP_cmp  (SIE_IntraPROP *p, SIE_IntraPROP *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define IntraPROP_check(p,pie,pfx,hLOG) IntraPROP_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define IntraPROP_print(p,    pfx,hLOG) IntraPROP_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: IntraPROP
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE InterPROP                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 3  type                      
///                                    ###
///                                    * See MBPROP.type above,
///                                    * LUT: inter or 8x8PB or 8x8IDX0 or direct16x16
///                                    ###
///               %unsigned 1  8x8IDX0                   
///                                    ###
///                                    * LUT: P_8x8ref0
///                                    ###
///               %unsigned 1  t8x8I                     
///                                    ###
///                                    * LUT: 0
///                                    ###
///               %unsigned 1  t8x8PB                    
///                                    ###
///                                    * LUT: MB.transform8x8 & inter &
///                                    * (MB.direct8x8 | !direct16x16)
///                                    ###
///               %unsigned 2  partition                 
///                                    ###
///                                    * See MBPROP.partition above
///                                    ###
///               %unsigned 2  motion_0i                 
///               %unsigned 2  motion_1i                 
///                                    ###
///                                    * LUT: intra/forward/backward/bi, see BLK.motion above
///                                    ###
///               %unsigned 2  mvs_0i                    
///               %unsigned 2  mvs_1i                    
///                                    ###
///                                    * Number of motion vectors for each directions
///                                    * End of InterPROP
///                                    ###
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_InterPROP
#define h_InterPROP (){}

    #define     BA_InterPROP_type                              0x0000
    #define     B16InterPROP_type                              0x0000
    #define   LSb32InterPROP_type                                 0
    #define   LSb16InterPROP_type                                 0
    #define       bInterPROP_type                              3
    #define   MSK32InterPROP_type                                 0x00000007

    #define     BA_InterPROP_8x8IDX0                           0x0000
    #define     B16InterPROP_8x8IDX0                           0x0000
    #define   LSb32InterPROP_8x8IDX0                              3
    #define   LSb16InterPROP_8x8IDX0                              3
    #define       bInterPROP_8x8IDX0                           1
    #define   MSK32InterPROP_8x8IDX0                              0x00000008

    #define     BA_InterPROP_t8x8I                             0x0000
    #define     B16InterPROP_t8x8I                             0x0000
    #define   LSb32InterPROP_t8x8I                                4
    #define   LSb16InterPROP_t8x8I                                4
    #define       bInterPROP_t8x8I                             1
    #define   MSK32InterPROP_t8x8I                                0x00000010

    #define     BA_InterPROP_t8x8PB                            0x0000
    #define     B16InterPROP_t8x8PB                            0x0000
    #define   LSb32InterPROP_t8x8PB                               5
    #define   LSb16InterPROP_t8x8PB                               5
    #define       bInterPROP_t8x8PB                            1
    #define   MSK32InterPROP_t8x8PB                               0x00000020

    #define     BA_InterPROP_partition                         0x0000
    #define     B16InterPROP_partition                         0x0000
    #define   LSb32InterPROP_partition                            6
    #define   LSb16InterPROP_partition                            6
    #define       bInterPROP_partition                         2
    #define   MSK32InterPROP_partition                            0x000000C0

    #define     BA_InterPROP_motion_0i                         0x0001
    #define     B16InterPROP_motion_0i                         0x0000
    #define   LSb32InterPROP_motion_0i                            8
    #define   LSb16InterPROP_motion_0i                            8
    #define       bInterPROP_motion_0i                         2
    #define   MSK32InterPROP_motion_0i                            0x00000300

    #define     BA_InterPROP_motion_1i                         0x0001
    #define     B16InterPROP_motion_1i                         0x0000
    #define   LSb32InterPROP_motion_1i                            10
    #define   LSb16InterPROP_motion_1i                            10
    #define       bInterPROP_motion_1i                         2
    #define   MSK32InterPROP_motion_1i                            0x00000C00

    #define     BA_InterPROP_mvs_0i                            0x0001
    #define     B16InterPROP_mvs_0i                            0x0000
    #define   LSb32InterPROP_mvs_0i                               12
    #define   LSb16InterPROP_mvs_0i                               12
    #define       bInterPROP_mvs_0i                            2
    #define   MSK32InterPROP_mvs_0i                               0x00003000

    #define     BA_InterPROP_mvs_1i                            0x0001
    #define     B16InterPROP_mvs_1i                            0x0000
    #define   LSb32InterPROP_mvs_1i                               14
    #define   LSb16InterPROP_mvs_1i                               14
    #define       bInterPROP_mvs_1i                            2
    #define   MSK32InterPROP_mvs_1i                               0x0000C000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_InterPROP {
    ///////////////////////////////////////////////////////////
    #define   GET32InterPROP_type(r32)                         _BFGET_(r32, 2, 0)
    #define   SET32InterPROP_type(r32,v)                       _BFSET_(r32, 2, 0,v)
    #define   GET16InterPROP_type(r16)                         _BFGET_(r16, 2, 0)
    #define   SET16InterPROP_type(r16,v)                       _BFSET_(r16, 2, 0,v)

    #define   GET32InterPROP_8x8IDX0(r32)                      _BFGET_(r32, 3, 3)
    #define   SET32InterPROP_8x8IDX0(r32,v)                    _BFSET_(r32, 3, 3,v)
    #define   GET16InterPROP_8x8IDX0(r16)                      _BFGET_(r16, 3, 3)
    #define   SET16InterPROP_8x8IDX0(r16,v)                    _BFSET_(r16, 3, 3,v)

    #define   GET32InterPROP_t8x8I(r32)                        _BFGET_(r32, 4, 4)
    #define   SET32InterPROP_t8x8I(r32,v)                      _BFSET_(r32, 4, 4,v)
    #define   GET16InterPROP_t8x8I(r16)                        _BFGET_(r16, 4, 4)
    #define   SET16InterPROP_t8x8I(r16,v)                      _BFSET_(r16, 4, 4,v)

    #define   GET32InterPROP_t8x8PB(r32)                       _BFGET_(r32, 5, 5)
    #define   SET32InterPROP_t8x8PB(r32,v)                     _BFSET_(r32, 5, 5,v)
    #define   GET16InterPROP_t8x8PB(r16)                       _BFGET_(r16, 5, 5)
    #define   SET16InterPROP_t8x8PB(r16,v)                     _BFSET_(r16, 5, 5,v)

    #define   GET32InterPROP_partition(r32)                    _BFGET_(r32, 7, 6)
    #define   SET32InterPROP_partition(r32,v)                  _BFSET_(r32, 7, 6,v)
    #define   GET16InterPROP_partition(r16)                    _BFGET_(r16, 7, 6)
    #define   SET16InterPROP_partition(r16,v)                  _BFSET_(r16, 7, 6,v)

    #define   GET32InterPROP_motion_0i(r32)                    _BFGET_(r32, 9, 8)
    #define   SET32InterPROP_motion_0i(r32,v)                  _BFSET_(r32, 9, 8,v)
    #define   GET16InterPROP_motion_0i(r16)                    _BFGET_(r16, 9, 8)
    #define   SET16InterPROP_motion_0i(r16,v)                  _BFSET_(r16, 9, 8,v)

    #define   GET32InterPROP_motion_1i(r32)                    _BFGET_(r32,11,10)
    #define   SET32InterPROP_motion_1i(r32,v)                  _BFSET_(r32,11,10,v)
    #define   GET16InterPROP_motion_1i(r16)                    _BFGET_(r16,11,10)
    #define   SET16InterPROP_motion_1i(r16,v)                  _BFSET_(r16,11,10,v)

    #define   GET32InterPROP_mvs_0i(r32)                       _BFGET_(r32,13,12)
    #define   SET32InterPROP_mvs_0i(r32,v)                     _BFSET_(r32,13,12,v)
    #define   GET16InterPROP_mvs_0i(r16)                       _BFGET_(r16,13,12)
    #define   SET16InterPROP_mvs_0i(r16,v)                     _BFSET_(r16,13,12,v)

    #define   GET32InterPROP_mvs_1i(r32)                       _BFGET_(r32,15,14)
    #define   SET32InterPROP_mvs_1i(r32,v)                     _BFSET_(r32,15,14,v)
    #define   GET16InterPROP_mvs_1i(r16)                       _BFGET_(r16,15,14)
    #define   SET16InterPROP_mvs_1i(r16,v)                     _BFSET_(r16,15,14,v)

            UNSG32 u_type                                      :  3;
            UNSG32 u_8x8IDX0                                   :  1;
            UNSG32 u_t8x8I                                     :  1;
            UNSG32 u_t8x8PB                                    :  1;
            UNSG32 u_partition                                 :  2;
            UNSG32 u_motion_0i                                 :  2;
            UNSG32 u_motion_1i                                 :  2;
            UNSG32 u_mvs_0i                                    :  2;
            UNSG32 u_mvs_1i                                    :  2;
            UNSG32 RSVDx0_b16                                  : 16;
    ///////////////////////////////////////////////////////////
    } SIE_InterPROP;

    ///////////////////////////////////////////////////////////
     SIGN32 InterPROP_drvrd(SIE_InterPROP *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 InterPROP_drvwr(SIE_InterPROP *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void InterPROP_reset(SIE_InterPROP *p);
     SIGN32 InterPROP_cmp  (SIE_InterPROP *p, SIE_InterPROP *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define InterPROP_check(p,pie,pfx,hLOG) InterPROP_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define InterPROP_print(p,    pfx,hLOG) InterPROP_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: InterPROP
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ResPROP_VC1                              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 8  MaxNumCoeff               
///                                    ###
///                                    * Maximal number of coefficients to decode,
///                                    * The valid number is: 16, 32, 63, and 64
///                                    ###
///               %unsigned 3  eBlk                      
///                                    ###
///                                    * 8x8 Block index. 0~3 for Y, 4 for Cb, 5 for Cr
///                                    ###
///               %unsigned 1  IsIntra                   
///                                    ###
///                                    * 1: intra block
///                                    * 0: inter block
///                                    ###
///               %unsigned 2  SubBlkIdx                 
///                                    ###
///                                    * Sub-block index in 8x8 block. Unit is 4x4 regardless of transform type.
///                                    ###
///               %unsigned 2  TransTypeOrIpMode         
///                                    ###
///                                    * For inter block, this field contain transform type information.
///                                    ###
///                                    : TRANS_4x4                 0x0
///                                    : TRANS_4x8                 0x1
///                                    : TRANS_8x4                 0x2
///                                    : TRANS_8x8                 0x3
///                                                 ###
///                                                 * For intra block, this field is intra prediction mode.
///                                                 ###
///                                    : IP_NORMAL                 0x0
///                                    : IP_HORIZONTAL             0x1
///                                    : IP_VERTICAL               0x2
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ResPROP_VC1
#define h_ResPROP_VC1 (){}

    #define     BA_ResPROP_VC1_MaxNumCoeff                     0x0000
    #define     B16ResPROP_VC1_MaxNumCoeff                     0x0000
    #define   LSb32ResPROP_VC1_MaxNumCoeff                        0
    #define   LSb16ResPROP_VC1_MaxNumCoeff                        0
    #define       bResPROP_VC1_MaxNumCoeff                     8
    #define   MSK32ResPROP_VC1_MaxNumCoeff                        0x000000FF

    #define     BA_ResPROP_VC1_eBlk                            0x0001
    #define     B16ResPROP_VC1_eBlk                            0x0000
    #define   LSb32ResPROP_VC1_eBlk                               8
    #define   LSb16ResPROP_VC1_eBlk                               8
    #define       bResPROP_VC1_eBlk                            3
    #define   MSK32ResPROP_VC1_eBlk                               0x00000700

    #define     BA_ResPROP_VC1_IsIntra                         0x0001
    #define     B16ResPROP_VC1_IsIntra                         0x0000
    #define   LSb32ResPROP_VC1_IsIntra                            11
    #define   LSb16ResPROP_VC1_IsIntra                            11
    #define       bResPROP_VC1_IsIntra                         1
    #define   MSK32ResPROP_VC1_IsIntra                            0x00000800

    #define     BA_ResPROP_VC1_SubBlkIdx                       0x0001
    #define     B16ResPROP_VC1_SubBlkIdx                       0x0000
    #define   LSb32ResPROP_VC1_SubBlkIdx                          12
    #define   LSb16ResPROP_VC1_SubBlkIdx                          12
    #define       bResPROP_VC1_SubBlkIdx                       2
    #define   MSK32ResPROP_VC1_SubBlkIdx                          0x00003000

    #define     BA_ResPROP_VC1_TransTypeOrIpMode               0x0001
    #define     B16ResPROP_VC1_TransTypeOrIpMode               0x0000
    #define   LSb32ResPROP_VC1_TransTypeOrIpMode                  14
    #define   LSb16ResPROP_VC1_TransTypeOrIpMode                  14
    #define       bResPROP_VC1_TransTypeOrIpMode               2
    #define   MSK32ResPROP_VC1_TransTypeOrIpMode                  0x0000C000
    #define        ResPROP_VC1_TransTypeOrIpMode_TRANS_4x4                  0x0
    #define        ResPROP_VC1_TransTypeOrIpMode_TRANS_4x8                  0x1
    #define        ResPROP_VC1_TransTypeOrIpMode_TRANS_8x4                  0x2
    #define        ResPROP_VC1_TransTypeOrIpMode_TRANS_8x8                  0x3
    #define        ResPROP_VC1_TransTypeOrIpMode_IP_NORMAL                  0x0
    #define        ResPROP_VC1_TransTypeOrIpMode_IP_HORIZONTAL              0x1
    #define        ResPROP_VC1_TransTypeOrIpMode_IP_VERTICAL                0x2
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ResPROP_VC1 {
    ///////////////////////////////////////////////////////////
    #define   GET32ResPROP_VC1_MaxNumCoeff(r32)                _BFGET_(r32, 7, 0)
    #define   SET32ResPROP_VC1_MaxNumCoeff(r32,v)              _BFSET_(r32, 7, 0,v)
    #define   GET16ResPROP_VC1_MaxNumCoeff(r16)                _BFGET_(r16, 7, 0)
    #define   SET16ResPROP_VC1_MaxNumCoeff(r16,v)              _BFSET_(r16, 7, 0,v)

    #define   GET32ResPROP_VC1_eBlk(r32)                       _BFGET_(r32,10, 8)
    #define   SET32ResPROP_VC1_eBlk(r32,v)                     _BFSET_(r32,10, 8,v)
    #define   GET16ResPROP_VC1_eBlk(r16)                       _BFGET_(r16,10, 8)
    #define   SET16ResPROP_VC1_eBlk(r16,v)                     _BFSET_(r16,10, 8,v)

    #define   GET32ResPROP_VC1_IsIntra(r32)                    _BFGET_(r32,11,11)
    #define   SET32ResPROP_VC1_IsIntra(r32,v)                  _BFSET_(r32,11,11,v)
    #define   GET16ResPROP_VC1_IsIntra(r16)                    _BFGET_(r16,11,11)
    #define   SET16ResPROP_VC1_IsIntra(r16,v)                  _BFSET_(r16,11,11,v)

    #define   GET32ResPROP_VC1_SubBlkIdx(r32)                  _BFGET_(r32,13,12)
    #define   SET32ResPROP_VC1_SubBlkIdx(r32,v)                _BFSET_(r32,13,12,v)
    #define   GET16ResPROP_VC1_SubBlkIdx(r16)                  _BFGET_(r16,13,12)
    #define   SET16ResPROP_VC1_SubBlkIdx(r16,v)                _BFSET_(r16,13,12,v)

    #define   GET32ResPROP_VC1_TransTypeOrIpMode(r32)          _BFGET_(r32,15,14)
    #define   SET32ResPROP_VC1_TransTypeOrIpMode(r32,v)        _BFSET_(r32,15,14,v)
    #define   GET16ResPROP_VC1_TransTypeOrIpMode(r16)          _BFGET_(r16,15,14)
    #define   SET16ResPROP_VC1_TransTypeOrIpMode(r16,v)        _BFSET_(r16,15,14,v)

            UNSG32 u_MaxNumCoeff                               :  8;
            UNSG32 u_eBlk                                      :  3;
            UNSG32 u_IsIntra                                   :  1;
            UNSG32 u_SubBlkIdx                                 :  2;
            UNSG32 u_TransTypeOrIpMode                         :  2;
            UNSG32 RSVDx0_b16                                  : 16;
    ///////////////////////////////////////////////////////////
    } SIE_ResPROP_VC1;

    ///////////////////////////////////////////////////////////
     SIGN32 ResPROP_VC1_drvrd(SIE_ResPROP_VC1 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ResPROP_VC1_drvwr(SIE_ResPROP_VC1 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ResPROP_VC1_reset(SIE_ResPROP_VC1 *p);
     SIGN32 ResPROP_VC1_cmp  (SIE_ResPROP_VC1 *p, SIE_ResPROP_VC1 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ResPROP_VC1_check(p,pie,pfx,hLOG) ResPROP_VC1_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ResPROP_VC1_print(p,    pfx,hLOG) ResPROP_VC1_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ResPROP_VC1
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ResPROP_MPEG2                            (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 1  Intra_MB                  
///                                    : inter                     0x0
///                                    : intra                     0x1
///                                                 ###
///                                                 * Indicate current MB is inter-coded or intra-coded
///                                                 ###
///               %unsigned 1  CC                        
///                                    : luma                      0x0
///                                    : chroma                    0x1
///                                                 ###
///                                                 * Color component (to select VLC table)
///                                                 ###
///               %unsigned 1  intra_vlc_format          
///                                    ###
///                                    * Whether to use intra VLC DC table or inter table
///                                    * End of ResProp_MPEG2
///                                    ###
///               %%        29         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       3b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ResPROP_MPEG2
#define h_ResPROP_MPEG2 (){}

    #define     BA_ResPROP_MPEG2_Intra_MB                      0x0000
    #define     B16ResPROP_MPEG2_Intra_MB                      0x0000
    #define   LSb32ResPROP_MPEG2_Intra_MB                         0
    #define   LSb16ResPROP_MPEG2_Intra_MB                         0
    #define       bResPROP_MPEG2_Intra_MB                      1
    #define   MSK32ResPROP_MPEG2_Intra_MB                         0x00000001
    #define        ResPROP_MPEG2_Intra_MB_inter                             0x0
    #define        ResPROP_MPEG2_Intra_MB_intra                             0x1

    #define     BA_ResPROP_MPEG2_CC                            0x0000
    #define     B16ResPROP_MPEG2_CC                            0x0000
    #define   LSb32ResPROP_MPEG2_CC                               1
    #define   LSb16ResPROP_MPEG2_CC                               1
    #define       bResPROP_MPEG2_CC                            1
    #define   MSK32ResPROP_MPEG2_CC                               0x00000002
    #define        ResPROP_MPEG2_CC_luma                                    0x0
    #define        ResPROP_MPEG2_CC_chroma                                  0x1

    #define     BA_ResPROP_MPEG2_intra_vlc_format              0x0000
    #define     B16ResPROP_MPEG2_intra_vlc_format              0x0000
    #define   LSb32ResPROP_MPEG2_intra_vlc_format                 2
    #define   LSb16ResPROP_MPEG2_intra_vlc_format                 2
    #define       bResPROP_MPEG2_intra_vlc_format              1
    #define   MSK32ResPROP_MPEG2_intra_vlc_format                 0x00000004
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ResPROP_MPEG2 {
    ///////////////////////////////////////////////////////////
    #define   GET32ResPROP_MPEG2_Intra_MB(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32ResPROP_MPEG2_Intra_MB(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16ResPROP_MPEG2_Intra_MB(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16ResPROP_MPEG2_Intra_MB(r16,v)               _BFSET_(r16, 0, 0,v)

    #define   GET32ResPROP_MPEG2_CC(r32)                       _BFGET_(r32, 1, 1)
    #define   SET32ResPROP_MPEG2_CC(r32,v)                     _BFSET_(r32, 1, 1,v)
    #define   GET16ResPROP_MPEG2_CC(r16)                       _BFGET_(r16, 1, 1)
    #define   SET16ResPROP_MPEG2_CC(r16,v)                     _BFSET_(r16, 1, 1,v)

    #define   GET32ResPROP_MPEG2_intra_vlc_format(r32)         _BFGET_(r32, 2, 2)
    #define   SET32ResPROP_MPEG2_intra_vlc_format(r32,v)       _BFSET_(r32, 2, 2,v)
    #define   GET16ResPROP_MPEG2_intra_vlc_format(r16)         _BFGET_(r16, 2, 2)
    #define   SET16ResPROP_MPEG2_intra_vlc_format(r16,v)       _BFSET_(r16, 2, 2,v)

            UNSG32 u_Intra_MB                                  :  1;
            UNSG32 u_CC                                        :  1;
            UNSG32 u_intra_vlc_format                          :  1;
            UNSG32 RSVDx0_b3                                   : 29;
    ///////////////////////////////////////////////////////////
    } SIE_ResPROP_MPEG2;

    ///////////////////////////////////////////////////////////
     SIGN32 ResPROP_MPEG2_drvrd(SIE_ResPROP_MPEG2 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ResPROP_MPEG2_drvwr(SIE_ResPROP_MPEG2 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ResPROP_MPEG2_reset(SIE_ResPROP_MPEG2 *p);
     SIGN32 ResPROP_MPEG2_cmp  (SIE_ResPROP_MPEG2 *p, SIE_ResPROP_MPEG2 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ResPROP_MPEG2_check(p,pie,pfx,hLOG) ResPROP_MPEG2_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ResPROP_MPEG2_print(p,    pfx,hLOG) ResPROP_MPEG2_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ResPROP_MPEG2
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ResPROP_MPEG4                            (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 1  Intra_MB                  
///                                    : inter                     0x0
///                                    : intra                     0x1
///                                                 ###
///                                                 * Indicate current MB is inter-coded or intra-coded
///                                                 ###
///               %unsigned 1  CC                        
///                                    : luma                      0x0
///                                    : chroma                    0x1
///                                                 ###
///                                                 * Color component (to select VLC table)
///                                                 ###
///               %unsigned 1  use_intra_dc_vlc          
///                                    ###
///                                    * Whether to use intra VLC DC table or inter table
///                                    ###
///               %unsigned 1  pattern_code              
///                                    ###
///                                    * Indicate whether to encode AC coefficients
///                                    ###
///               %unsigned 2  scan_order                
///                                    : normal                    0x0
///                                    : horizontal                0x1
///                                    : vertical                  0x2
///                                                 ###
///                                                 * Indicate zigzag scan order of 8x8 coefficients
///                                                 * End of ResProp_MPEG4
///                                                 ###
///               %%        26         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       6b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ResPROP_MPEG4
#define h_ResPROP_MPEG4 (){}

    #define     BA_ResPROP_MPEG4_Intra_MB                      0x0000
    #define     B16ResPROP_MPEG4_Intra_MB                      0x0000
    #define   LSb32ResPROP_MPEG4_Intra_MB                         0
    #define   LSb16ResPROP_MPEG4_Intra_MB                         0
    #define       bResPROP_MPEG4_Intra_MB                      1
    #define   MSK32ResPROP_MPEG4_Intra_MB                         0x00000001
    #define        ResPROP_MPEG4_Intra_MB_inter                             0x0
    #define        ResPROP_MPEG4_Intra_MB_intra                             0x1

    #define     BA_ResPROP_MPEG4_CC                            0x0000
    #define     B16ResPROP_MPEG4_CC                            0x0000
    #define   LSb32ResPROP_MPEG4_CC                               1
    #define   LSb16ResPROP_MPEG4_CC                               1
    #define       bResPROP_MPEG4_CC                            1
    #define   MSK32ResPROP_MPEG4_CC                               0x00000002
    #define        ResPROP_MPEG4_CC_luma                                    0x0
    #define        ResPROP_MPEG4_CC_chroma                                  0x1

    #define     BA_ResPROP_MPEG4_use_intra_dc_vlc              0x0000
    #define     B16ResPROP_MPEG4_use_intra_dc_vlc              0x0000
    #define   LSb32ResPROP_MPEG4_use_intra_dc_vlc                 2
    #define   LSb16ResPROP_MPEG4_use_intra_dc_vlc                 2
    #define       bResPROP_MPEG4_use_intra_dc_vlc              1
    #define   MSK32ResPROP_MPEG4_use_intra_dc_vlc                 0x00000004

    #define     BA_ResPROP_MPEG4_pattern_code                  0x0000
    #define     B16ResPROP_MPEG4_pattern_code                  0x0000
    #define   LSb32ResPROP_MPEG4_pattern_code                     3
    #define   LSb16ResPROP_MPEG4_pattern_code                     3
    #define       bResPROP_MPEG4_pattern_code                  1
    #define   MSK32ResPROP_MPEG4_pattern_code                     0x00000008

    #define     BA_ResPROP_MPEG4_scan_order                    0x0000
    #define     B16ResPROP_MPEG4_scan_order                    0x0000
    #define   LSb32ResPROP_MPEG4_scan_order                       4
    #define   LSb16ResPROP_MPEG4_scan_order                       4
    #define       bResPROP_MPEG4_scan_order                    2
    #define   MSK32ResPROP_MPEG4_scan_order                       0x00000030
    #define        ResPROP_MPEG4_scan_order_normal                          0x0
    #define        ResPROP_MPEG4_scan_order_horizontal                      0x1
    #define        ResPROP_MPEG4_scan_order_vertical                        0x2
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ResPROP_MPEG4 {
    ///////////////////////////////////////////////////////////
    #define   GET32ResPROP_MPEG4_Intra_MB(r32)                 _BFGET_(r32, 0, 0)
    #define   SET32ResPROP_MPEG4_Intra_MB(r32,v)               _BFSET_(r32, 0, 0,v)
    #define   GET16ResPROP_MPEG4_Intra_MB(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16ResPROP_MPEG4_Intra_MB(r16,v)               _BFSET_(r16, 0, 0,v)

    #define   GET32ResPROP_MPEG4_CC(r32)                       _BFGET_(r32, 1, 1)
    #define   SET32ResPROP_MPEG4_CC(r32,v)                     _BFSET_(r32, 1, 1,v)
    #define   GET16ResPROP_MPEG4_CC(r16)                       _BFGET_(r16, 1, 1)
    #define   SET16ResPROP_MPEG4_CC(r16,v)                     _BFSET_(r16, 1, 1,v)

    #define   GET32ResPROP_MPEG4_use_intra_dc_vlc(r32)         _BFGET_(r32, 2, 2)
    #define   SET32ResPROP_MPEG4_use_intra_dc_vlc(r32,v)       _BFSET_(r32, 2, 2,v)
    #define   GET16ResPROP_MPEG4_use_intra_dc_vlc(r16)         _BFGET_(r16, 2, 2)
    #define   SET16ResPROP_MPEG4_use_intra_dc_vlc(r16,v)       _BFSET_(r16, 2, 2,v)

    #define   GET32ResPROP_MPEG4_pattern_code(r32)             _BFGET_(r32, 3, 3)
    #define   SET32ResPROP_MPEG4_pattern_code(r32,v)           _BFSET_(r32, 3, 3,v)
    #define   GET16ResPROP_MPEG4_pattern_code(r16)             _BFGET_(r16, 3, 3)
    #define   SET16ResPROP_MPEG4_pattern_code(r16,v)           _BFSET_(r16, 3, 3,v)

    #define   GET32ResPROP_MPEG4_scan_order(r32)               _BFGET_(r32, 5, 4)
    #define   SET32ResPROP_MPEG4_scan_order(r32,v)             _BFSET_(r32, 5, 4,v)
    #define   GET16ResPROP_MPEG4_scan_order(r16)               _BFGET_(r16, 5, 4)
    #define   SET16ResPROP_MPEG4_scan_order(r16,v)             _BFSET_(r16, 5, 4,v)

            UNSG32 u_Intra_MB                                  :  1;
            UNSG32 u_CC                                        :  1;
            UNSG32 u_use_intra_dc_vlc                          :  1;
            UNSG32 u_pattern_code                              :  1;
            UNSG32 u_scan_order                                :  2;
            UNSG32 RSVDx0_b6                                   : 26;
    ///////////////////////////////////////////////////////////
    } SIE_ResPROP_MPEG4;

    ///////////////////////////////////////////////////////////
     SIGN32 ResPROP_MPEG4_drvrd(SIE_ResPROP_MPEG4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ResPROP_MPEG4_drvwr(SIE_ResPROP_MPEG4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ResPROP_MPEG4_reset(SIE_ResPROP_MPEG4 *p);
     SIGN32 ResPROP_MPEG4_cmp  (SIE_ResPROP_MPEG4 *p, SIE_ResPROP_MPEG4 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ResPROP_MPEG4_check(p,pie,pfx,hLOG) ResPROP_MPEG4_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ResPROP_MPEG4_print(p,    pfx,hLOG) ResPROP_MPEG4_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ResPROP_MPEG4
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ResPROP_JPEG                             (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 1  DCTblId                   
///                                    : luma                      0x0
///                                    : chroma                    0x1
///                                                 ###
///                                                 * Selects Huffman table used to decode or encode DC coefficients
///                                                 ###
///               %unsigned 1  ACTblId                   
///                                    : luma                      0x0
///                                    : chroma                    0x1
///                                                 ###
///                                                 * Selects Huffman table used to decode or encode AC coefficients
///                                                 * End of ResPROP_JPEG
///                                                 ###
///               %%        30         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       2b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ResPROP_JPEG
#define h_ResPROP_JPEG (){}

    #define     BA_ResPROP_JPEG_DCTblId                        0x0000
    #define     B16ResPROP_JPEG_DCTblId                        0x0000
    #define   LSb32ResPROP_JPEG_DCTblId                           0
    #define   LSb16ResPROP_JPEG_DCTblId                           0
    #define       bResPROP_JPEG_DCTblId                        1
    #define   MSK32ResPROP_JPEG_DCTblId                           0x00000001
    #define        ResPROP_JPEG_DCTblId_luma                                0x0
    #define        ResPROP_JPEG_DCTblId_chroma                              0x1

    #define     BA_ResPROP_JPEG_ACTblId                        0x0000
    #define     B16ResPROP_JPEG_ACTblId                        0x0000
    #define   LSb32ResPROP_JPEG_ACTblId                           1
    #define   LSb16ResPROP_JPEG_ACTblId                           1
    #define       bResPROP_JPEG_ACTblId                        1
    #define   MSK32ResPROP_JPEG_ACTblId                           0x00000002
    #define        ResPROP_JPEG_ACTblId_luma                                0x0
    #define        ResPROP_JPEG_ACTblId_chroma                              0x1
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ResPROP_JPEG {
    ///////////////////////////////////////////////////////////
    #define   GET32ResPROP_JPEG_DCTblId(r32)                   _BFGET_(r32, 0, 0)
    #define   SET32ResPROP_JPEG_DCTblId(r32,v)                 _BFSET_(r32, 0, 0,v)
    #define   GET16ResPROP_JPEG_DCTblId(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16ResPROP_JPEG_DCTblId(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define   GET32ResPROP_JPEG_ACTblId(r32)                   _BFGET_(r32, 1, 1)
    #define   SET32ResPROP_JPEG_ACTblId(r32,v)                 _BFSET_(r32, 1, 1,v)
    #define   GET16ResPROP_JPEG_ACTblId(r16)                   _BFGET_(r16, 1, 1)
    #define   SET16ResPROP_JPEG_ACTblId(r16,v)                 _BFSET_(r16, 1, 1,v)

            UNSG32 u_DCTblId                                   :  1;
            UNSG32 u_ACTblId                                   :  1;
            UNSG32 RSVDx0_b2                                   : 30;
    ///////////////////////////////////////////////////////////
    } SIE_ResPROP_JPEG;

    ///////////////////////////////////////////////////////////
     SIGN32 ResPROP_JPEG_drvrd(SIE_ResPROP_JPEG *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ResPROP_JPEG_drvwr(SIE_ResPROP_JPEG *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ResPROP_JPEG_reset(SIE_ResPROP_JPEG *p);
     SIGN32 ResPROP_JPEG_cmp  (SIE_ResPROP_JPEG *p, SIE_ResPROP_JPEG *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ResPROP_JPEG_check(p,pie,pfx,hLOG) ResPROP_JPEG_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ResPROP_JPEG_print(p,    pfx,hLOG) ResPROP_JPEG_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ResPROP_JPEG
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TotalCoeff6                              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 5  nc_0i                     
///               %unsigned 5  nc_1i                     
///               %unsigned 5  nc_2i                     
///                                    ###
///                                    * The number of non-zero transform coefficients in a 4x4 Y or UV coefficient block. Totally 3 blocks are in order 0 ~ 2.
///                                    ###
///               %%        1          # Stuffing bits...
///               %unsigned 5  nc1_0i                    
///               %unsigned 5  nc1_1i                    
///               %unsigned 5  nc1_2i                    
///               %%        1          # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      30b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TotalCoeff6
#define h_TotalCoeff6 (){}

    #define     BA_TotalCoeff6_nc_0i                           0x0000
    #define     B16TotalCoeff6_nc_0i                           0x0000
    #define   LSb32TotalCoeff6_nc_0i                              0
    #define   LSb16TotalCoeff6_nc_0i                              0
    #define       bTotalCoeff6_nc_0i                           5
    #define   MSK32TotalCoeff6_nc_0i                              0x0000001F

    #define     BA_TotalCoeff6_nc_1i                           0x0000
    #define     B16TotalCoeff6_nc_1i                           0x0000
    #define   LSb32TotalCoeff6_nc_1i                              5
    #define   LSb16TotalCoeff6_nc_1i                              5
    #define       bTotalCoeff6_nc_1i                           5
    #define   MSK32TotalCoeff6_nc_1i                              0x000003E0

    #define     BA_TotalCoeff6_nc_2i                           0x0001
    #define     B16TotalCoeff6_nc_2i                           0x0000
    #define   LSb32TotalCoeff6_nc_2i                              10
    #define   LSb16TotalCoeff6_nc_2i                              10
    #define       bTotalCoeff6_nc_2i                           5
    #define   MSK32TotalCoeff6_nc_2i                              0x00007C00

    #define     BA_TotalCoeff6_nc1_0i                          0x0002
    #define     B16TotalCoeff6_nc1_0i                          0x0002
    #define   LSb32TotalCoeff6_nc1_0i                             16
    #define   LSb16TotalCoeff6_nc1_0i                             0
    #define       bTotalCoeff6_nc1_0i                          5
    #define   MSK32TotalCoeff6_nc1_0i                             0x001F0000

    #define     BA_TotalCoeff6_nc1_1i                          0x0002
    #define     B16TotalCoeff6_nc1_1i                          0x0002
    #define   LSb32TotalCoeff6_nc1_1i                             21
    #define   LSb16TotalCoeff6_nc1_1i                             5
    #define       bTotalCoeff6_nc1_1i                          5
    #define   MSK32TotalCoeff6_nc1_1i                             0x03E00000

    #define     BA_TotalCoeff6_nc1_2i                          0x0003
    #define     B16TotalCoeff6_nc1_2i                          0x0002
    #define   LSb32TotalCoeff6_nc1_2i                             26
    #define   LSb16TotalCoeff6_nc1_2i                             10
    #define       bTotalCoeff6_nc1_2i                          5
    #define   MSK32TotalCoeff6_nc1_2i                             0x7C000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TotalCoeff6 {
    ///////////////////////////////////////////////////////////
    #define   GET32TotalCoeff6_nc_0i(r32)                      _BFGET_(r32, 4, 0)
    #define   SET32TotalCoeff6_nc_0i(r32,v)                    _BFSET_(r32, 4, 0,v)
    #define   GET16TotalCoeff6_nc_0i(r16)                      _BFGET_(r16, 4, 0)
    #define   SET16TotalCoeff6_nc_0i(r16,v)                    _BFSET_(r16, 4, 0,v)

    #define   GET32TotalCoeff6_nc_1i(r32)                      _BFGET_(r32, 9, 5)
    #define   SET32TotalCoeff6_nc_1i(r32,v)                    _BFSET_(r32, 9, 5,v)
    #define   GET16TotalCoeff6_nc_1i(r16)                      _BFGET_(r16, 9, 5)
    #define   SET16TotalCoeff6_nc_1i(r16,v)                    _BFSET_(r16, 9, 5,v)

    #define   GET32TotalCoeff6_nc_2i(r32)                      _BFGET_(r32,14,10)
    #define   SET32TotalCoeff6_nc_2i(r32,v)                    _BFSET_(r32,14,10,v)
    #define   GET16TotalCoeff6_nc_2i(r16)                      _BFGET_(r16,14,10)
    #define   SET16TotalCoeff6_nc_2i(r16,v)                    _BFSET_(r16,14,10,v)

    #define   GET32TotalCoeff6_nc1_0i(r32)                     _BFGET_(r32,20,16)
    #define   SET32TotalCoeff6_nc1_0i(r32,v)                   _BFSET_(r32,20,16,v)
    #define   GET16TotalCoeff6_nc1_0i(r16)                     _BFGET_(r16, 4, 0)
    #define   SET16TotalCoeff6_nc1_0i(r16,v)                   _BFSET_(r16, 4, 0,v)

    #define   GET32TotalCoeff6_nc1_1i(r32)                     _BFGET_(r32,25,21)
    #define   SET32TotalCoeff6_nc1_1i(r32,v)                   _BFSET_(r32,25,21,v)
    #define   GET16TotalCoeff6_nc1_1i(r16)                     _BFGET_(r16, 9, 5)
    #define   SET16TotalCoeff6_nc1_1i(r16,v)                   _BFSET_(r16, 9, 5,v)

    #define   GET32TotalCoeff6_nc1_2i(r32)                     _BFGET_(r32,30,26)
    #define   SET32TotalCoeff6_nc1_2i(r32,v)                   _BFSET_(r32,30,26,v)
    #define   GET16TotalCoeff6_nc1_2i(r16)                     _BFGET_(r16,14,10)
    #define   SET16TotalCoeff6_nc1_2i(r16,v)                   _BFSET_(r16,14,10,v)

            UNSG32 u_nc_0i                                     :  5;
            UNSG32 u_nc_1i                                     :  5;
            UNSG32 u_nc_2i                                     :  5;
            UNSG32 RSVDx0_b15                                  :  1;
            UNSG32 u_nc1_0i                                    :  5;
            UNSG32 u_nc1_1i                                    :  5;
            UNSG32 u_nc1_2i                                    :  5;
            UNSG32 RSVDx0_b31                                  :  1;
    ///////////////////////////////////////////////////////////
    } SIE_TotalCoeff6;

    ///////////////////////////////////////////////////////////
     SIGN32 TotalCoeff6_drvrd(SIE_TotalCoeff6 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TotalCoeff6_drvwr(SIE_TotalCoeff6 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TotalCoeff6_reset(SIE_TotalCoeff6 *p);
     SIGN32 TotalCoeff6_cmp  (SIE_TotalCoeff6 *p, SIE_TotalCoeff6 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TotalCoeff6_check(p,pie,pfx,hLOG) TotalCoeff6_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TotalCoeff6_print(p,    pfx,hLOG) TotalCoeff6_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TotalCoeff6
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ASEPopTotalCoeff                         (4,2)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 TotalCoeff           
///               $TotalCoeff6         TotalCoeff        REG       [2]
///                                    ###
///                                    * The number of non-zero transform coefficients in a 4x4 Y or UV coefficient block in 3 block group. Totally 12 blocks in 4 groups are in order 0 ~ 11.
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      60b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ASEPopTotalCoeff
#define h_ASEPopTotalCoeff (){}

    #define     RA_ASEPopTotalCoeff_TotalCoeff                 0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ASEPopTotalCoeff {
    ///////////////////////////////////////////////////////////
              SIE_TotalCoeff6                                  ie_TotalCoeff[2];
    ///////////////////////////////////////////////////////////
    } SIE_ASEPopTotalCoeff;

    ///////////////////////////////////////////////////////////
     SIGN32 ASEPopTotalCoeff_drvrd(SIE_ASEPopTotalCoeff *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ASEPopTotalCoeff_drvwr(SIE_ASEPopTotalCoeff *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ASEPopTotalCoeff_reset(SIE_ASEPopTotalCoeff *p);
     SIGN32 ASEPopTotalCoeff_cmp  (SIE_ASEPopTotalCoeff *p, SIE_ASEPopTotalCoeff *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ASEPopTotalCoeff_check(p,pie,pfx,hLOG) ASEPopTotalCoeff_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ASEPopTotalCoeff_print(p,    pfx,hLOG) ASEPopTotalCoeff_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ASEPopTotalCoeff
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE RF64PIC                 biu              (4,4)
///     ###
///     * RF64 picture-level information for ALU64 extensions; padded to 64b. Used in placed of BIU register for efficiency. Parameters in this interface should only be updated at the slice boundary.
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 3  format                    
///                                    : h264                      0x0
///                                    : wmv                       0x1
///                                                 ###
///                                                 * VC-1 Main Profile
///                                                 ###
///                                    : mpg2                      0x2
///                                    : other                     0x3
///                                    : mpg4                      0x4
///                                    : vc1ap                     0x5
///                                                 ###
///                                                 * VC-1 Advanced Profile
///                                                 ###
///                                    : h263                      0x6
///                                    : avs                       0x7
///                                                 ###
///                                                 * Format of the current video stream
///                                                 ###
///               %unsigned 1  cabac                     
///                                    ###
///                                    * Whether current slice is coded in CABAC
///                                    ###
///               %unsigned 2  picType                   
///                                    : I                         0x0
///                                    : P                         0x1
///                                    : B                         0x2
///                                                 ###
///                                                 * Used by PMV to qualify between P_skip & B_skip
///                                                 ###
///               %unsigned 5  maxL0                     
///                                    ###
///                                    * H264: num_ref_idx_l0_active_minus1
///                                    ###
///               %unsigned 5  maxL1                     
///                                    ###
///                                    * H264: num_ref_idx_l1_active_minus1
///                                    ###
///               %unsigned 1  MbaffPic                  
///                                    ###
///                                    * Whether current picture is Mbaff pic or not; for FOP
///                                    * For VC-1:
///                                    * (~Mbaffpic && ~fieldPic) -> progressive
///                                    * (Mbaffpic && ~fieldPic) -> interlace frame
///                                    ###
///               %unsigned 1  fieldPic                  
///                                    ###
///                                    * Whether current picture is field coded or not; for FOP
///                                    * For VC-1:
///                                    * (~MbaffPic && fieldPic) -> interlace field, one ref;
///                                    * (MbaffPic && fieldPic) -> interlace field, two ref
///                                    ###
///               %unsigned 1  spatialPred               
///                                    ###
///                                    * Spatial direct prediction modee; for dirMV.
///                                    ###
///               %unsigned 1  colPicMbaff               
///                                    ###
///                                    * Whether colocated pic is Mbaff pic or not; for dirMV
///                                    ###
///               %unsigned 1  colPicField               
///                                    ###
///                                    * Whether colocated picture is field pic or not; for dirMV
///                                    ###
///               %unsigned 1  colPicST                  
///                                    ###
///                                    * Co-located picture is a long-term (0) or short-term (1) reference picture; for dirMV.
///                                    ###
///               %signed   5  AC0Offset                 
///                                    ###
///                                    * = slice_alpha_c0_offset_div2<<1, -12 ~ +12, inclusive, even numbers only. For FOP only.
///                                    ###
///               %signed   5  BetaOffset                
///                                    ###
///                                    * = slice_beta_offset_div2<<1, -12 ~ +12, inclusive, even numbers only. For FOP only.
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 16 dqAcLimit                 
///                                    ###
///                                    * Saturation limit for AC dequantization
///                                    * Also apply for universal dequantization
///                                    ###
///               %unsigned 14 dqDcLimit                 
///                                    ###
///                                    * Saturation limit for DC dequantization
///                                    ###
///               %unsigned 2  mismatch                  
///                                    : none                      0x0
///                                    : mpeg1                     0x1
///                                    : mpeg2                     0x2
///                                                 ###
///                                                 * mismatch control, for AC dequant only
///                                                 ###
///     @ 0x00008                      (P)
///               %unsigned 16 picW                      
///                                    ###
///                                    * Width of current picture; up to 2047
///                                    ###
///               %unsigned 13 picH                      
///                                    ###
///                                    * Height of current picture; up to 2047. For vcMsg only
///                                    ###
///               %unsigned 1  btmFldPic                 
///                                    ###
///                                    * H.264: Current picture is bottom field; for vcMsg. Valid only when fieldPic==1.
///                                    ###
///               %unsigned 2  hint                      
///                                    ###
///                                    * Same as CacheMsg.hint; for vcMsg only
///                                    ###
///     @ 0x0000C                      (P)
///               %unsigned 8  shiftLumaX                
///                                    ###
///                                    * (For vcMsg only) Shift amount lookup table for Luma X direction. 4 entries, 2-bit per entry, indexed by mvx[1:0] in little-endian format
///                                    ###
///               %unsigned 8  shiftLumaY                
///                                    ###
///                                    * (For vcMsg only) Shift amount lookup table for Luma Y direction. 4 entries, 2-bit per entry, indexed by mvy[1:0] in little-endian format
///                                    ###
///               %unsigned 8  shiftChromaX              
///                                    ###
///                                    * (For vcMsg only) Shift amount lookup table for Chroma X direction. 4 entries, 2-bit per entry, indexed by mvx[1:0] in little-endian format
///                                    ###
///               %unsigned 8  shiftChromaY              
///                                    ###
///                                    * (For vcMsg only) Shift amount lookup table for Chroma Y direction. 4 entries, 2-bit per entry, indexed by mvy[1:0] in little-endian format
///                                    ###
///     @ 0x00010                      (P)
///               %unsigned 4  fracTapDiv2Y              
///                                    ###
///                                    * (Tap size / 2) for luma fractional MV interpolation
///                                    ###
///               %unsigned 4  fracTapDiv2C              
///                                    ###
///                                    * (Tap size / 2) for chroma fractional MV interpolation
///                                    ###
///               %unsigned 6  IPCM_QPU                  
///                                    ###
///                                    * QPU for IPCM coded MBs; for H.264 FOP
///                                    ###
///               %unsigned 6  IPCM_QPV                  
///                                    ###
///                                    * QPV for IPCM coded MBs; for H.264 FOP
///                                    ###
///               %unsigned 12 RSVD12                    
///                                    ###
///                                    * padding to 32 bits
///                                    ###
///     @ 0x00014                      (P)
///               %unsigned 5  PQUANT                    
///                                    ###
///                                    * picture-level quantization factor
///                                    ###
///               %unsigned 2  FRFD                      
///                                    ###
///                                    * Forward reference picture distance, 0~3.
///                                    * Used by VC1 for interlace P field PMV, or for interlace B field forward PMV
///                                    ###
///               %unsigned 2  BRFD                      
///                                    ###
///                                    * Backward reference picture distance, 0~3.
///                                    * Used by VC1 for interlace B field backward PMV
///                                    ###
///               %unsigned 1  secondFld                 
///                                    ###
///                                    * Used by PMV for interlace field picture: whether current field is 1st field or 2nd field of display picture
///                                    ###
///               %unsigned 2  mvRange                   
///                                    ###
///                                    * 0~3; used to lookup range_x & range_y for PMV; see VC-1 spec table 75.
///                                    ###
///               %unsigned 1  hybridMvThres             
///                                    ###
///                                    * 0: threshold = 16; 1: threshold = 32
///                                    ###
///               %unsigned 1  firstMbIntra              
///                                    ###
///                                    * 0: first MB or block is inter coded; 1: intra coded; used for VC-1 Fop
///                                    ###
///               %unsigned 1  halfPixel                 
///                                    ###
///                                    * Half pixel flag, for VC-1 PMV interlace field mode.
///                                    ###
///               %unsigned 1  forwRefInterlace          
///                                    ###
///                                    * For VC-1 interlace frame picture in VCMSG extension forward reference is 0: progressive coded; 1: interlace coded
///                                    ###
///               %unsigned 1  backRefInterlace          
///                                    ###
///                                    * For VC-1 interlace frame picture in VCMSG extension backward reference is 0: progressive coded; 1: interlace coded
///                                    ###
///               %unsigned 2  FrmTransACSet             
///                                    ###
///                                    * For VC-1 frame-level transform AC coding set selection (for Cb and Cr block; and inter Y block).
///                                    * Valid values are 0, 1, and 2
///                                    ###
///               %unsigned 2  FrmTransACSet2            
///                                    ###
///                                    * For VC-1 frame-level transform AC table-2 index selection (for I-frame Y block)
///                                    * Valid values are 0, 1, and 2
///                                    ###
///               %unsigned 1  PQIndexGT8                
///                                    ###
///                                    * Indicator to represent whether Picture Quantized Index (PQIndexG8, defined in Table 36 in VC-1 spec) is greater than 8.
///                                    * 0: value of PQIndex is less than or equal to 8
///                                    * 1: value of PQIndex is greater than 8
///                                    ###
///               %unsigned 1  EscapeTBL                 
///                                    ###
///                                    * For VC-1 to select escape table in residual decoding
///                                    ###
///               %unsigned 4  format1                   
///                                    : RV9                       0x0
///                                    : RV8                       0x1
///                                    : vp8                       0x2
///                                    : jpeg                      0x3
///               %unsigned 1  noReorder                 
///                                    ###
///                                    * For ASE, disable coefficient reorder.
///                                    ###
///               %unsigned 1  iplusModeOn               
///                                    ###
///                                    * For ASE, IPLUS mode is on or not.
///                                    ###
///               %unsigned 3  RSVD3                     
///                                    ###
///                                    * padding to 32 bits
///                                    ###
///     @ 0x00018                      (P)
///     # 0x00018 RSVD                 
///               $LUT64b              RSVD              REG       [5]
///                                    ###
///                                    * Reserved for alignment
///                                    ###
///     @ 0x00040                      (P)
///     # 0x00040 rIDX2BID             
///               $IDX2BID             rIDX2BID          REG          
///                                    ###
///                                    * Defined in 'decHal_mbLvl.sxw.txt.txt'
///                                    * End of RF64PIC
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     256B, bits:    2048b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_RF64PIC
#define h_RF64PIC (){}

    #define     BA_RF64PIC_format                              0x0000
    #define     B16RF64PIC_format                              0x0000
    #define   LSb32RF64PIC_format                                 0
    #define   LSb16RF64PIC_format                                 0
    #define       bRF64PIC_format                              3
    #define   MSK32RF64PIC_format                                 0x00000007
    #define        RF64PIC_format_h264                                      0x0
    #define        RF64PIC_format_wmv                                       0x1
    #define        RF64PIC_format_mpg2                                      0x2
    #define        RF64PIC_format_other                                     0x3
    #define        RF64PIC_format_mpg4                                      0x4
    #define        RF64PIC_format_vc1ap                                     0x5
    #define        RF64PIC_format_h263                                      0x6
    #define        RF64PIC_format_avs                                       0x7

    #define     BA_RF64PIC_cabac                               0x0000
    #define     B16RF64PIC_cabac                               0x0000
    #define   LSb32RF64PIC_cabac                                  3
    #define   LSb16RF64PIC_cabac                                  3
    #define       bRF64PIC_cabac                               1
    #define   MSK32RF64PIC_cabac                                  0x00000008

    #define     BA_RF64PIC_picType                             0x0000
    #define     B16RF64PIC_picType                             0x0000
    #define   LSb32RF64PIC_picType                                4
    #define   LSb16RF64PIC_picType                                4
    #define       bRF64PIC_picType                             2
    #define   MSK32RF64PIC_picType                                0x00000030
    #define        RF64PIC_picType_I                                        0x0
    #define        RF64PIC_picType_P                                        0x1
    #define        RF64PIC_picType_B                                        0x2

    #define     BA_RF64PIC_maxL0                               0x0000
    #define     B16RF64PIC_maxL0                               0x0000
    #define   LSb32RF64PIC_maxL0                                  6
    #define   LSb16RF64PIC_maxL0                                  6
    #define       bRF64PIC_maxL0                               5
    #define   MSK32RF64PIC_maxL0                                  0x000007C0

    #define     BA_RF64PIC_maxL1                               0x0001
    #define     B16RF64PIC_maxL1                               0x0000
    #define   LSb32RF64PIC_maxL1                                  11
    #define   LSb16RF64PIC_maxL1                                  11
    #define       bRF64PIC_maxL1                               5
    #define   MSK32RF64PIC_maxL1                                  0x0000F800

    #define     BA_RF64PIC_MbaffPic                            0x0002
    #define     B16RF64PIC_MbaffPic                            0x0002
    #define   LSb32RF64PIC_MbaffPic                               16
    #define   LSb16RF64PIC_MbaffPic                               0
    #define       bRF64PIC_MbaffPic                            1
    #define   MSK32RF64PIC_MbaffPic                               0x00010000

    #define     BA_RF64PIC_fieldPic                            0x0002
    #define     B16RF64PIC_fieldPic                            0x0002
    #define   LSb32RF64PIC_fieldPic                               17
    #define   LSb16RF64PIC_fieldPic                               1
    #define       bRF64PIC_fieldPic                            1
    #define   MSK32RF64PIC_fieldPic                               0x00020000

    #define     BA_RF64PIC_spatialPred                         0x0002
    #define     B16RF64PIC_spatialPred                         0x0002
    #define   LSb32RF64PIC_spatialPred                            18
    #define   LSb16RF64PIC_spatialPred                            2
    #define       bRF64PIC_spatialPred                         1
    #define   MSK32RF64PIC_spatialPred                            0x00040000

    #define     BA_RF64PIC_colPicMbaff                         0x0002
    #define     B16RF64PIC_colPicMbaff                         0x0002
    #define   LSb32RF64PIC_colPicMbaff                            19
    #define   LSb16RF64PIC_colPicMbaff                            3
    #define       bRF64PIC_colPicMbaff                         1
    #define   MSK32RF64PIC_colPicMbaff                            0x00080000

    #define     BA_RF64PIC_colPicField                         0x0002
    #define     B16RF64PIC_colPicField                         0x0002
    #define   LSb32RF64PIC_colPicField                            20
    #define   LSb16RF64PIC_colPicField                            4
    #define       bRF64PIC_colPicField                         1
    #define   MSK32RF64PIC_colPicField                            0x00100000

    #define     BA_RF64PIC_colPicST                            0x0002
    #define     B16RF64PIC_colPicST                            0x0002
    #define   LSb32RF64PIC_colPicST                               21
    #define   LSb16RF64PIC_colPicST                               5
    #define       bRF64PIC_colPicST                            1
    #define   MSK32RF64PIC_colPicST                               0x00200000

    #define     BA_RF64PIC_AC0Offset                           0x0002
    #define     B16RF64PIC_AC0Offset                           0x0002
    #define   LSb32RF64PIC_AC0Offset                              22
    #define   LSb16RF64PIC_AC0Offset                              6
    #define       bRF64PIC_AC0Offset                           5
    #define   MSK32RF64PIC_AC0Offset                              0x07C00000

    #define     BA_RF64PIC_BetaOffset                          0x0003
    #define     B16RF64PIC_BetaOffset                          0x0002
    #define   LSb32RF64PIC_BetaOffset                             27
    #define   LSb16RF64PIC_BetaOffset                             11
    #define       bRF64PIC_BetaOffset                          5
    #define   MSK32RF64PIC_BetaOffset                             0xF8000000
    ///////////////////////////////////////////////////////////

    #define     BA_RF64PIC_dqAcLimit                           0x0004
    #define     B16RF64PIC_dqAcLimit                           0x0004
    #define   LSb32RF64PIC_dqAcLimit                              0
    #define   LSb16RF64PIC_dqAcLimit                              0
    #define       bRF64PIC_dqAcLimit                           16
    #define   MSK32RF64PIC_dqAcLimit                              0x0000FFFF

    #define     BA_RF64PIC_dqDcLimit                           0x0006
    #define     B16RF64PIC_dqDcLimit                           0x0006
    #define   LSb32RF64PIC_dqDcLimit                              16
    #define   LSb16RF64PIC_dqDcLimit                              0
    #define       bRF64PIC_dqDcLimit                           14
    #define   MSK32RF64PIC_dqDcLimit                              0x3FFF0000

    #define     BA_RF64PIC_mismatch                            0x0007
    #define     B16RF64PIC_mismatch                            0x0006
    #define   LSb32RF64PIC_mismatch                               30
    #define   LSb16RF64PIC_mismatch                               14
    #define       bRF64PIC_mismatch                            2
    #define   MSK32RF64PIC_mismatch                               0xC0000000
    #define        RF64PIC_mismatch_none                                    0x0
    #define        RF64PIC_mismatch_mpeg1                                   0x1
    #define        RF64PIC_mismatch_mpeg2                                   0x2
    ///////////////////////////////////////////////////////////

    #define     BA_RF64PIC_picW                                0x0008
    #define     B16RF64PIC_picW                                0x0008
    #define   LSb32RF64PIC_picW                                   0
    #define   LSb16RF64PIC_picW                                   0
    #define       bRF64PIC_picW                                16
    #define   MSK32RF64PIC_picW                                   0x0000FFFF

    #define     BA_RF64PIC_picH                                0x000A
    #define     B16RF64PIC_picH                                0x000A
    #define   LSb32RF64PIC_picH                                   16
    #define   LSb16RF64PIC_picH                                   0
    #define       bRF64PIC_picH                                13
    #define   MSK32RF64PIC_picH                                   0x1FFF0000

    #define     BA_RF64PIC_btmFldPic                           0x000B
    #define     B16RF64PIC_btmFldPic                           0x000A
    #define   LSb32RF64PIC_btmFldPic                              29
    #define   LSb16RF64PIC_btmFldPic                              13
    #define       bRF64PIC_btmFldPic                           1
    #define   MSK32RF64PIC_btmFldPic                              0x20000000

    #define     BA_RF64PIC_hint                                0x000B
    #define     B16RF64PIC_hint                                0x000A
    #define   LSb32RF64PIC_hint                                   30
    #define   LSb16RF64PIC_hint                                   14
    #define       bRF64PIC_hint                                2
    #define   MSK32RF64PIC_hint                                   0xC0000000
    ///////////////////////////////////////////////////////////

    #define     BA_RF64PIC_shiftLumaX                          0x000C
    #define     B16RF64PIC_shiftLumaX                          0x000C
    #define   LSb32RF64PIC_shiftLumaX                             0
    #define   LSb16RF64PIC_shiftLumaX                             0
    #define       bRF64PIC_shiftLumaX                          8
    #define   MSK32RF64PIC_shiftLumaX                             0x000000FF

    #define     BA_RF64PIC_shiftLumaY                          0x000D
    #define     B16RF64PIC_shiftLumaY                          0x000C
    #define   LSb32RF64PIC_shiftLumaY                             8
    #define   LSb16RF64PIC_shiftLumaY                             8
    #define       bRF64PIC_shiftLumaY                          8
    #define   MSK32RF64PIC_shiftLumaY                             0x0000FF00

    #define     BA_RF64PIC_shiftChromaX                        0x000E
    #define     B16RF64PIC_shiftChromaX                        0x000E
    #define   LSb32RF64PIC_shiftChromaX                           16
    #define   LSb16RF64PIC_shiftChromaX                           0
    #define       bRF64PIC_shiftChromaX                        8
    #define   MSK32RF64PIC_shiftChromaX                           0x00FF0000

    #define     BA_RF64PIC_shiftChromaY                        0x000F
    #define     B16RF64PIC_shiftChromaY                        0x000E
    #define   LSb32RF64PIC_shiftChromaY                           24
    #define   LSb16RF64PIC_shiftChromaY                           8
    #define       bRF64PIC_shiftChromaY                        8
    #define   MSK32RF64PIC_shiftChromaY                           0xFF000000
    ///////////////////////////////////////////////////////////

    #define     BA_RF64PIC_fracTapDiv2Y                        0x0010
    #define     B16RF64PIC_fracTapDiv2Y                        0x0010
    #define   LSb32RF64PIC_fracTapDiv2Y                           0
    #define   LSb16RF64PIC_fracTapDiv2Y                           0
    #define       bRF64PIC_fracTapDiv2Y                        4
    #define   MSK32RF64PIC_fracTapDiv2Y                           0x0000000F

    #define     BA_RF64PIC_fracTapDiv2C                        0x0010
    #define     B16RF64PIC_fracTapDiv2C                        0x0010
    #define   LSb32RF64PIC_fracTapDiv2C                           4
    #define   LSb16RF64PIC_fracTapDiv2C                           4
    #define       bRF64PIC_fracTapDiv2C                        4
    #define   MSK32RF64PIC_fracTapDiv2C                           0x000000F0

    #define     BA_RF64PIC_IPCM_QPU                            0x0011
    #define     B16RF64PIC_IPCM_QPU                            0x0010
    #define   LSb32RF64PIC_IPCM_QPU                               8
    #define   LSb16RF64PIC_IPCM_QPU                               8
    #define       bRF64PIC_IPCM_QPU                            6
    #define   MSK32RF64PIC_IPCM_QPU                               0x00003F00

    #define     BA_RF64PIC_IPCM_QPV                            0x0011
    #define     B16RF64PIC_IPCM_QPV                            0x0010
    #define   LSb32RF64PIC_IPCM_QPV                               14
    #define   LSb16RF64PIC_IPCM_QPV                               14
    #define       bRF64PIC_IPCM_QPV                            6
    #define   MSK32RF64PIC_IPCM_QPV                               0x000FC000

    #define     BA_RF64PIC_RSVD12                              0x0012
    #define     B16RF64PIC_RSVD12                              0x0012
    #define   LSb32RF64PIC_RSVD12                                 20
    #define   LSb16RF64PIC_RSVD12                                 4
    #define       bRF64PIC_RSVD12                              12
    #define   MSK32RF64PIC_RSVD12                                 0xFFF00000
    ///////////////////////////////////////////////////////////

    #define     BA_RF64PIC_PQUANT                              0x0014
    #define     B16RF64PIC_PQUANT                              0x0014
    #define   LSb32RF64PIC_PQUANT                                 0
    #define   LSb16RF64PIC_PQUANT                                 0
    #define       bRF64PIC_PQUANT                              5
    #define   MSK32RF64PIC_PQUANT                                 0x0000001F

    #define     BA_RF64PIC_FRFD                                0x0014
    #define     B16RF64PIC_FRFD                                0x0014
    #define   LSb32RF64PIC_FRFD                                   5
    #define   LSb16RF64PIC_FRFD                                   5
    #define       bRF64PIC_FRFD                                2
    #define   MSK32RF64PIC_FRFD                                   0x00000060

    #define     BA_RF64PIC_BRFD                                0x0014
    #define     B16RF64PIC_BRFD                                0x0014
    #define   LSb32RF64PIC_BRFD                                   7
    #define   LSb16RF64PIC_BRFD                                   7
    #define       bRF64PIC_BRFD                                2
    #define   MSK32RF64PIC_BRFD                                   0x00000180

    #define     BA_RF64PIC_secondFld                           0x0015
    #define     B16RF64PIC_secondFld                           0x0014
    #define   LSb32RF64PIC_secondFld                              9
    #define   LSb16RF64PIC_secondFld                              9
    #define       bRF64PIC_secondFld                           1
    #define   MSK32RF64PIC_secondFld                              0x00000200

    #define     BA_RF64PIC_mvRange                             0x0015
    #define     B16RF64PIC_mvRange                             0x0014
    #define   LSb32RF64PIC_mvRange                                10
    #define   LSb16RF64PIC_mvRange                                10
    #define       bRF64PIC_mvRange                             2
    #define   MSK32RF64PIC_mvRange                                0x00000C00

    #define     BA_RF64PIC_hybridMvThres                       0x0015
    #define     B16RF64PIC_hybridMvThres                       0x0014
    #define   LSb32RF64PIC_hybridMvThres                          12
    #define   LSb16RF64PIC_hybridMvThres                          12
    #define       bRF64PIC_hybridMvThres                       1
    #define   MSK32RF64PIC_hybridMvThres                          0x00001000

    #define     BA_RF64PIC_firstMbIntra                        0x0015
    #define     B16RF64PIC_firstMbIntra                        0x0014
    #define   LSb32RF64PIC_firstMbIntra                           13
    #define   LSb16RF64PIC_firstMbIntra                           13
    #define       bRF64PIC_firstMbIntra                        1
    #define   MSK32RF64PIC_firstMbIntra                           0x00002000

    #define     BA_RF64PIC_halfPixel                           0x0015
    #define     B16RF64PIC_halfPixel                           0x0014
    #define   LSb32RF64PIC_halfPixel                              14
    #define   LSb16RF64PIC_halfPixel                              14
    #define       bRF64PIC_halfPixel                           1
    #define   MSK32RF64PIC_halfPixel                              0x00004000

    #define     BA_RF64PIC_forwRefInterlace                    0x0015
    #define     B16RF64PIC_forwRefInterlace                    0x0014
    #define   LSb32RF64PIC_forwRefInterlace                       15
    #define   LSb16RF64PIC_forwRefInterlace                       15
    #define       bRF64PIC_forwRefInterlace                    1
    #define   MSK32RF64PIC_forwRefInterlace                       0x00008000

    #define     BA_RF64PIC_backRefInterlace                    0x0016
    #define     B16RF64PIC_backRefInterlace                    0x0016
    #define   LSb32RF64PIC_backRefInterlace                       16
    #define   LSb16RF64PIC_backRefInterlace                       0
    #define       bRF64PIC_backRefInterlace                    1
    #define   MSK32RF64PIC_backRefInterlace                       0x00010000

    #define     BA_RF64PIC_FrmTransACSet                       0x0016
    #define     B16RF64PIC_FrmTransACSet                       0x0016
    #define   LSb32RF64PIC_FrmTransACSet                          17
    #define   LSb16RF64PIC_FrmTransACSet                          1
    #define       bRF64PIC_FrmTransACSet                       2
    #define   MSK32RF64PIC_FrmTransACSet                          0x00060000

    #define     BA_RF64PIC_FrmTransACSet2                      0x0016
    #define     B16RF64PIC_FrmTransACSet2                      0x0016
    #define   LSb32RF64PIC_FrmTransACSet2                         19
    #define   LSb16RF64PIC_FrmTransACSet2                         3
    #define       bRF64PIC_FrmTransACSet2                      2
    #define   MSK32RF64PIC_FrmTransACSet2                         0x00180000

    #define     BA_RF64PIC_PQIndexGT8                          0x0016
    #define     B16RF64PIC_PQIndexGT8                          0x0016
    #define   LSb32RF64PIC_PQIndexGT8                             21
    #define   LSb16RF64PIC_PQIndexGT8                             5
    #define       bRF64PIC_PQIndexGT8                          1
    #define   MSK32RF64PIC_PQIndexGT8                             0x00200000

    #define     BA_RF64PIC_EscapeTBL                           0x0016
    #define     B16RF64PIC_EscapeTBL                           0x0016
    #define   LSb32RF64PIC_EscapeTBL                              22
    #define   LSb16RF64PIC_EscapeTBL                              6
    #define       bRF64PIC_EscapeTBL                           1
    #define   MSK32RF64PIC_EscapeTBL                              0x00400000

    #define     BA_RF64PIC_format1                             0x0016
    #define     B16RF64PIC_format1                             0x0016
    #define   LSb32RF64PIC_format1                                23
    #define   LSb16RF64PIC_format1                                7
    #define       bRF64PIC_format1                             4
    #define   MSK32RF64PIC_format1                                0x07800000
    #define        RF64PIC_format1_RV9                                      0x0
    #define        RF64PIC_format1_RV8                                      0x1
    #define        RF64PIC_format1_vp8                                      0x2
    #define        RF64PIC_format1_jpeg                                     0x3

    #define     BA_RF64PIC_noReorder                           0x0017
    #define     B16RF64PIC_noReorder                           0x0016
    #define   LSb32RF64PIC_noReorder                              27
    #define   LSb16RF64PIC_noReorder                              11
    #define       bRF64PIC_noReorder                           1
    #define   MSK32RF64PIC_noReorder                              0x08000000

    #define     BA_RF64PIC_iplusModeOn                         0x0017
    #define     B16RF64PIC_iplusModeOn                         0x0016
    #define   LSb32RF64PIC_iplusModeOn                            28
    #define   LSb16RF64PIC_iplusModeOn                            12
    #define       bRF64PIC_iplusModeOn                         1
    #define   MSK32RF64PIC_iplusModeOn                            0x10000000

    #define     BA_RF64PIC_RSVD3                               0x0017
    #define     B16RF64PIC_RSVD3                               0x0016
    #define   LSb32RF64PIC_RSVD3                                  29
    #define   LSb16RF64PIC_RSVD3                                  13
    #define       bRF64PIC_RSVD3                               3
    #define   MSK32RF64PIC_RSVD3                                  0xE0000000
    ///////////////////////////////////////////////////////////
    #define     RA_RF64PIC_RSVD                                0x0018
    ///////////////////////////////////////////////////////////
    #define     RA_RF64PIC_rIDX2BID                            0x0040
    ///////////////////////////////////////////////////////////

    typedef struct SIE_RF64PIC {
    ///////////////////////////////////////////////////////////
    #define   GET32RF64PIC_format(r32)                         _BFGET_(r32, 2, 0)
    #define   SET32RF64PIC_format(r32,v)                       _BFSET_(r32, 2, 0,v)
    #define   GET16RF64PIC_format(r16)                         _BFGET_(r16, 2, 0)
    #define   SET16RF64PIC_format(r16,v)                       _BFSET_(r16, 2, 0,v)

    #define   GET32RF64PIC_cabac(r32)                          _BFGET_(r32, 3, 3)
    #define   SET32RF64PIC_cabac(r32,v)                        _BFSET_(r32, 3, 3,v)
    #define   GET16RF64PIC_cabac(r16)                          _BFGET_(r16, 3, 3)
    #define   SET16RF64PIC_cabac(r16,v)                        _BFSET_(r16, 3, 3,v)

    #define   GET32RF64PIC_picType(r32)                        _BFGET_(r32, 5, 4)
    #define   SET32RF64PIC_picType(r32,v)                      _BFSET_(r32, 5, 4,v)
    #define   GET16RF64PIC_picType(r16)                        _BFGET_(r16, 5, 4)
    #define   SET16RF64PIC_picType(r16,v)                      _BFSET_(r16, 5, 4,v)

    #define   GET32RF64PIC_maxL0(r32)                          _BFGET_(r32,10, 6)
    #define   SET32RF64PIC_maxL0(r32,v)                        _BFSET_(r32,10, 6,v)
    #define   GET16RF64PIC_maxL0(r16)                          _BFGET_(r16,10, 6)
    #define   SET16RF64PIC_maxL0(r16,v)                        _BFSET_(r16,10, 6,v)

    #define   GET32RF64PIC_maxL1(r32)                          _BFGET_(r32,15,11)
    #define   SET32RF64PIC_maxL1(r32,v)                        _BFSET_(r32,15,11,v)
    #define   GET16RF64PIC_maxL1(r16)                          _BFGET_(r16,15,11)
    #define   SET16RF64PIC_maxL1(r16,v)                        _BFSET_(r16,15,11,v)

    #define   GET32RF64PIC_MbaffPic(r32)                       _BFGET_(r32,16,16)
    #define   SET32RF64PIC_MbaffPic(r32,v)                     _BFSET_(r32,16,16,v)
    #define   GET16RF64PIC_MbaffPic(r16)                       _BFGET_(r16, 0, 0)
    #define   SET16RF64PIC_MbaffPic(r16,v)                     _BFSET_(r16, 0, 0,v)

    #define   GET32RF64PIC_fieldPic(r32)                       _BFGET_(r32,17,17)
    #define   SET32RF64PIC_fieldPic(r32,v)                     _BFSET_(r32,17,17,v)
    #define   GET16RF64PIC_fieldPic(r16)                       _BFGET_(r16, 1, 1)
    #define   SET16RF64PIC_fieldPic(r16,v)                     _BFSET_(r16, 1, 1,v)

    #define   GET32RF64PIC_spatialPred(r32)                    _BFGET_(r32,18,18)
    #define   SET32RF64PIC_spatialPred(r32,v)                  _BFSET_(r32,18,18,v)
    #define   GET16RF64PIC_spatialPred(r16)                    _BFGET_(r16, 2, 2)
    #define   SET16RF64PIC_spatialPred(r16,v)                  _BFSET_(r16, 2, 2,v)

    #define   GET32RF64PIC_colPicMbaff(r32)                    _BFGET_(r32,19,19)
    #define   SET32RF64PIC_colPicMbaff(r32,v)                  _BFSET_(r32,19,19,v)
    #define   GET16RF64PIC_colPicMbaff(r16)                    _BFGET_(r16, 3, 3)
    #define   SET16RF64PIC_colPicMbaff(r16,v)                  _BFSET_(r16, 3, 3,v)

    #define   GET32RF64PIC_colPicField(r32)                    _BFGET_(r32,20,20)
    #define   SET32RF64PIC_colPicField(r32,v)                  _BFSET_(r32,20,20,v)
    #define   GET16RF64PIC_colPicField(r16)                    _BFGET_(r16, 4, 4)
    #define   SET16RF64PIC_colPicField(r16,v)                  _BFSET_(r16, 4, 4,v)

    #define   GET32RF64PIC_colPicST(r32)                       _BFGET_(r32,21,21)
    #define   SET32RF64PIC_colPicST(r32,v)                     _BFSET_(r32,21,21,v)
    #define   GET16RF64PIC_colPicST(r16)                       _BFGET_(r16, 5, 5)
    #define   SET16RF64PIC_colPicST(r16,v)                     _BFSET_(r16, 5, 5,v)

    #define   GET32RF64PIC_AC0Offset(r32)                      _BFGET_(r32,26,22)
    #define   SET32RF64PIC_AC0Offset(r32,v)                    _BFSET_(r32,26,22,v)
    #define   GET16RF64PIC_AC0Offset(r16)                      _BFGET_(r16,10, 6)
    #define   SET16RF64PIC_AC0Offset(r16,v)                    _BFSET_(r16,10, 6,v)

    #define   GET32RF64PIC_BetaOffset(r32)                     _BFGET_(r32,31,27)
    #define   SET32RF64PIC_BetaOffset(r32,v)                   _BFSET_(r32,31,27,v)
    #define   GET16RF64PIC_BetaOffset(r16)                     _BFGET_(r16,15,11)
    #define   SET16RF64PIC_BetaOffset(r16,v)                   _BFSET_(r16,15,11,v)

            UNSG32 u_format                                    :  3;
            UNSG32 u_cabac                                     :  1;
            UNSG32 u_picType                                   :  2;
            UNSG32 u_maxL0                                     :  5;
            UNSG32 u_maxL1                                     :  5;
            UNSG32 u_MbaffPic                                  :  1;
            UNSG32 u_fieldPic                                  :  1;
            UNSG32 u_spatialPred                               :  1;
            UNSG32 u_colPicMbaff                               :  1;
            UNSG32 u_colPicField                               :  1;
            UNSG32 u_colPicST                                  :  1;
            UNSG32 s_AC0Offset                                 :  5;
            UNSG32 s_BetaOffset                                :  5;
    ///////////////////////////////////////////////////////////
    #define   GET32RF64PIC_dqAcLimit(r32)                      _BFGET_(r32,15, 0)
    #define   SET32RF64PIC_dqAcLimit(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16RF64PIC_dqAcLimit(r16)                      _BFGET_(r16,15, 0)
    #define   SET16RF64PIC_dqAcLimit(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32RF64PIC_dqDcLimit(r32)                      _BFGET_(r32,29,16)
    #define   SET32RF64PIC_dqDcLimit(r32,v)                    _BFSET_(r32,29,16,v)
    #define   GET16RF64PIC_dqDcLimit(r16)                      _BFGET_(r16,13, 0)
    #define   SET16RF64PIC_dqDcLimit(r16,v)                    _BFSET_(r16,13, 0,v)

    #define   GET32RF64PIC_mismatch(r32)                       _BFGET_(r32,31,30)
    #define   SET32RF64PIC_mismatch(r32,v)                     _BFSET_(r32,31,30,v)
    #define   GET16RF64PIC_mismatch(r16)                       _BFGET_(r16,15,14)
    #define   SET16RF64PIC_mismatch(r16,v)                     _BFSET_(r16,15,14,v)

            UNSG32 u_dqAcLimit                                 : 16;
            UNSG32 u_dqDcLimit                                 : 14;
            UNSG32 u_mismatch                                  :  2;
    ///////////////////////////////////////////////////////////
    #define   GET32RF64PIC_picW(r32)                           _BFGET_(r32,15, 0)
    #define   SET32RF64PIC_picW(r32,v)                         _BFSET_(r32,15, 0,v)
    #define   GET16RF64PIC_picW(r16)                           _BFGET_(r16,15, 0)
    #define   SET16RF64PIC_picW(r16,v)                         _BFSET_(r16,15, 0,v)

    #define   GET32RF64PIC_picH(r32)                           _BFGET_(r32,28,16)
    #define   SET32RF64PIC_picH(r32,v)                         _BFSET_(r32,28,16,v)
    #define   GET16RF64PIC_picH(r16)                           _BFGET_(r16,12, 0)
    #define   SET16RF64PIC_picH(r16,v)                         _BFSET_(r16,12, 0,v)

    #define   GET32RF64PIC_btmFldPic(r32)                      _BFGET_(r32,29,29)
    #define   SET32RF64PIC_btmFldPic(r32,v)                    _BFSET_(r32,29,29,v)
    #define   GET16RF64PIC_btmFldPic(r16)                      _BFGET_(r16,13,13)
    #define   SET16RF64PIC_btmFldPic(r16,v)                    _BFSET_(r16,13,13,v)

    #define   GET32RF64PIC_hint(r32)                           _BFGET_(r32,31,30)
    #define   SET32RF64PIC_hint(r32,v)                         _BFSET_(r32,31,30,v)
    #define   GET16RF64PIC_hint(r16)                           _BFGET_(r16,15,14)
    #define   SET16RF64PIC_hint(r16,v)                         _BFSET_(r16,15,14,v)

            UNSG32 u_picW                                      : 16;
            UNSG32 u_picH                                      : 13;
            UNSG32 u_btmFldPic                                 :  1;
            UNSG32 u_hint                                      :  2;
    ///////////////////////////////////////////////////////////
    #define   GET32RF64PIC_shiftLumaX(r32)                     _BFGET_(r32, 7, 0)
    #define   SET32RF64PIC_shiftLumaX(r32,v)                   _BFSET_(r32, 7, 0,v)
    #define   GET16RF64PIC_shiftLumaX(r16)                     _BFGET_(r16, 7, 0)
    #define   SET16RF64PIC_shiftLumaX(r16,v)                   _BFSET_(r16, 7, 0,v)

    #define   GET32RF64PIC_shiftLumaY(r32)                     _BFGET_(r32,15, 8)
    #define   SET32RF64PIC_shiftLumaY(r32,v)                   _BFSET_(r32,15, 8,v)
    #define   GET16RF64PIC_shiftLumaY(r16)                     _BFGET_(r16,15, 8)
    #define   SET16RF64PIC_shiftLumaY(r16,v)                   _BFSET_(r16,15, 8,v)

    #define   GET32RF64PIC_shiftChromaX(r32)                   _BFGET_(r32,23,16)
    #define   SET32RF64PIC_shiftChromaX(r32,v)                 _BFSET_(r32,23,16,v)
    #define   GET16RF64PIC_shiftChromaX(r16)                   _BFGET_(r16, 7, 0)
    #define   SET16RF64PIC_shiftChromaX(r16,v)                 _BFSET_(r16, 7, 0,v)

    #define   GET32RF64PIC_shiftChromaY(r32)                   _BFGET_(r32,31,24)
    #define   SET32RF64PIC_shiftChromaY(r32,v)                 _BFSET_(r32,31,24,v)
    #define   GET16RF64PIC_shiftChromaY(r16)                   _BFGET_(r16,15, 8)
    #define   SET16RF64PIC_shiftChromaY(r16,v)                 _BFSET_(r16,15, 8,v)

            UNSG32 u_shiftLumaX                                :  8;
            UNSG32 u_shiftLumaY                                :  8;
            UNSG32 u_shiftChromaX                              :  8;
            UNSG32 u_shiftChromaY                              :  8;
    ///////////////////////////////////////////////////////////
    #define   GET32RF64PIC_fracTapDiv2Y(r32)                   _BFGET_(r32, 3, 0)
    #define   SET32RF64PIC_fracTapDiv2Y(r32,v)                 _BFSET_(r32, 3, 0,v)
    #define   GET16RF64PIC_fracTapDiv2Y(r16)                   _BFGET_(r16, 3, 0)
    #define   SET16RF64PIC_fracTapDiv2Y(r16,v)                 _BFSET_(r16, 3, 0,v)

    #define   GET32RF64PIC_fracTapDiv2C(r32)                   _BFGET_(r32, 7, 4)
    #define   SET32RF64PIC_fracTapDiv2C(r32,v)                 _BFSET_(r32, 7, 4,v)
    #define   GET16RF64PIC_fracTapDiv2C(r16)                   _BFGET_(r16, 7, 4)
    #define   SET16RF64PIC_fracTapDiv2C(r16,v)                 _BFSET_(r16, 7, 4,v)

    #define   GET32RF64PIC_IPCM_QPU(r32)                       _BFGET_(r32,13, 8)
    #define   SET32RF64PIC_IPCM_QPU(r32,v)                     _BFSET_(r32,13, 8,v)
    #define   GET16RF64PIC_IPCM_QPU(r16)                       _BFGET_(r16,13, 8)
    #define   SET16RF64PIC_IPCM_QPU(r16,v)                     _BFSET_(r16,13, 8,v)

    #define   GET32RF64PIC_IPCM_QPV(r32)                       _BFGET_(r32,19,14)
    #define   SET32RF64PIC_IPCM_QPV(r32,v)                     _BFSET_(r32,19,14,v)

    #define   GET32RF64PIC_RSVD12(r32)                         _BFGET_(r32,31,20)
    #define   SET32RF64PIC_RSVD12(r32,v)                       _BFSET_(r32,31,20,v)
    #define   GET16RF64PIC_RSVD12(r16)                         _BFGET_(r16,15, 4)
    #define   SET16RF64PIC_RSVD12(r16,v)                       _BFSET_(r16,15, 4,v)

            UNSG32 u_fracTapDiv2Y                              :  4;
            UNSG32 u_fracTapDiv2C                              :  4;
            UNSG32 u_IPCM_QPU                                  :  6;
            UNSG32 u_IPCM_QPV                                  :  6;
            UNSG32 u_RSVD12                                    : 12;
    ///////////////////////////////////////////////////////////
    #define   GET32RF64PIC_PQUANT(r32)                         _BFGET_(r32, 4, 0)
    #define   SET32RF64PIC_PQUANT(r32,v)                       _BFSET_(r32, 4, 0,v)
    #define   GET16RF64PIC_PQUANT(r16)                         _BFGET_(r16, 4, 0)
    #define   SET16RF64PIC_PQUANT(r16,v)                       _BFSET_(r16, 4, 0,v)

    #define   GET32RF64PIC_FRFD(r32)                           _BFGET_(r32, 6, 5)
    #define   SET32RF64PIC_FRFD(r32,v)                         _BFSET_(r32, 6, 5,v)
    #define   GET16RF64PIC_FRFD(r16)                           _BFGET_(r16, 6, 5)
    #define   SET16RF64PIC_FRFD(r16,v)                         _BFSET_(r16, 6, 5,v)

    #define   GET32RF64PIC_BRFD(r32)                           _BFGET_(r32, 8, 7)
    #define   SET32RF64PIC_BRFD(r32,v)                         _BFSET_(r32, 8, 7,v)
    #define   GET16RF64PIC_BRFD(r16)                           _BFGET_(r16, 8, 7)
    #define   SET16RF64PIC_BRFD(r16,v)                         _BFSET_(r16, 8, 7,v)

    #define   GET32RF64PIC_secondFld(r32)                      _BFGET_(r32, 9, 9)
    #define   SET32RF64PIC_secondFld(r32,v)                    _BFSET_(r32, 9, 9,v)
    #define   GET16RF64PIC_secondFld(r16)                      _BFGET_(r16, 9, 9)
    #define   SET16RF64PIC_secondFld(r16,v)                    _BFSET_(r16, 9, 9,v)

    #define   GET32RF64PIC_mvRange(r32)                        _BFGET_(r32,11,10)
    #define   SET32RF64PIC_mvRange(r32,v)                      _BFSET_(r32,11,10,v)
    #define   GET16RF64PIC_mvRange(r16)                        _BFGET_(r16,11,10)
    #define   SET16RF64PIC_mvRange(r16,v)                      _BFSET_(r16,11,10,v)

    #define   GET32RF64PIC_hybridMvThres(r32)                  _BFGET_(r32,12,12)
    #define   SET32RF64PIC_hybridMvThres(r32,v)                _BFSET_(r32,12,12,v)
    #define   GET16RF64PIC_hybridMvThres(r16)                  _BFGET_(r16,12,12)
    #define   SET16RF64PIC_hybridMvThres(r16,v)                _BFSET_(r16,12,12,v)

    #define   GET32RF64PIC_firstMbIntra(r32)                   _BFGET_(r32,13,13)
    #define   SET32RF64PIC_firstMbIntra(r32,v)                 _BFSET_(r32,13,13,v)
    #define   GET16RF64PIC_firstMbIntra(r16)                   _BFGET_(r16,13,13)
    #define   SET16RF64PIC_firstMbIntra(r16,v)                 _BFSET_(r16,13,13,v)

    #define   GET32RF64PIC_halfPixel(r32)                      _BFGET_(r32,14,14)
    #define   SET32RF64PIC_halfPixel(r32,v)                    _BFSET_(r32,14,14,v)
    #define   GET16RF64PIC_halfPixel(r16)                      _BFGET_(r16,14,14)
    #define   SET16RF64PIC_halfPixel(r16,v)                    _BFSET_(r16,14,14,v)

    #define   GET32RF64PIC_forwRefInterlace(r32)               _BFGET_(r32,15,15)
    #define   SET32RF64PIC_forwRefInterlace(r32,v)             _BFSET_(r32,15,15,v)
    #define   GET16RF64PIC_forwRefInterlace(r16)               _BFGET_(r16,15,15)
    #define   SET16RF64PIC_forwRefInterlace(r16,v)             _BFSET_(r16,15,15,v)

    #define   GET32RF64PIC_backRefInterlace(r32)               _BFGET_(r32,16,16)
    #define   SET32RF64PIC_backRefInterlace(r32,v)             _BFSET_(r32,16,16,v)
    #define   GET16RF64PIC_backRefInterlace(r16)               _BFGET_(r16, 0, 0)
    #define   SET16RF64PIC_backRefInterlace(r16,v)             _BFSET_(r16, 0, 0,v)

    #define   GET32RF64PIC_FrmTransACSet(r32)                  _BFGET_(r32,18,17)
    #define   SET32RF64PIC_FrmTransACSet(r32,v)                _BFSET_(r32,18,17,v)
    #define   GET16RF64PIC_FrmTransACSet(r16)                  _BFGET_(r16, 2, 1)
    #define   SET16RF64PIC_FrmTransACSet(r16,v)                _BFSET_(r16, 2, 1,v)

    #define   GET32RF64PIC_FrmTransACSet2(r32)                 _BFGET_(r32,20,19)
    #define   SET32RF64PIC_FrmTransACSet2(r32,v)               _BFSET_(r32,20,19,v)
    #define   GET16RF64PIC_FrmTransACSet2(r16)                 _BFGET_(r16, 4, 3)
    #define   SET16RF64PIC_FrmTransACSet2(r16,v)               _BFSET_(r16, 4, 3,v)

    #define   GET32RF64PIC_PQIndexGT8(r32)                     _BFGET_(r32,21,21)
    #define   SET32RF64PIC_PQIndexGT8(r32,v)                   _BFSET_(r32,21,21,v)
    #define   GET16RF64PIC_PQIndexGT8(r16)                     _BFGET_(r16, 5, 5)
    #define   SET16RF64PIC_PQIndexGT8(r16,v)                   _BFSET_(r16, 5, 5,v)

    #define   GET32RF64PIC_EscapeTBL(r32)                      _BFGET_(r32,22,22)
    #define   SET32RF64PIC_EscapeTBL(r32,v)                    _BFSET_(r32,22,22,v)
    #define   GET16RF64PIC_EscapeTBL(r16)                      _BFGET_(r16, 6, 6)
    #define   SET16RF64PIC_EscapeTBL(r16,v)                    _BFSET_(r16, 6, 6,v)

    #define   GET32RF64PIC_format1(r32)                        _BFGET_(r32,26,23)
    #define   SET32RF64PIC_format1(r32,v)                      _BFSET_(r32,26,23,v)
    #define   GET16RF64PIC_format1(r16)                        _BFGET_(r16,10, 7)
    #define   SET16RF64PIC_format1(r16,v)                      _BFSET_(r16,10, 7,v)

    #define   GET32RF64PIC_noReorder(r32)                      _BFGET_(r32,27,27)
    #define   SET32RF64PIC_noReorder(r32,v)                    _BFSET_(r32,27,27,v)
    #define   GET16RF64PIC_noReorder(r16)                      _BFGET_(r16,11,11)
    #define   SET16RF64PIC_noReorder(r16,v)                    _BFSET_(r16,11,11,v)

    #define   GET32RF64PIC_iplusModeOn(r32)                    _BFGET_(r32,28,28)
    #define   SET32RF64PIC_iplusModeOn(r32,v)                  _BFSET_(r32,28,28,v)
    #define   GET16RF64PIC_iplusModeOn(r16)                    _BFGET_(r16,12,12)
    #define   SET16RF64PIC_iplusModeOn(r16,v)                  _BFSET_(r16,12,12,v)

    #define   GET32RF64PIC_RSVD3(r32)                          _BFGET_(r32,31,29)
    #define   SET32RF64PIC_RSVD3(r32,v)                        _BFSET_(r32,31,29,v)
    #define   GET16RF64PIC_RSVD3(r16)                          _BFGET_(r16,15,13)
    #define   SET16RF64PIC_RSVD3(r16,v)                        _BFSET_(r16,15,13,v)

            UNSG32 u_PQUANT                                    :  5;
            UNSG32 u_FRFD                                      :  2;
            UNSG32 u_BRFD                                      :  2;
            UNSG32 u_secondFld                                 :  1;
            UNSG32 u_mvRange                                   :  2;
            UNSG32 u_hybridMvThres                             :  1;
            UNSG32 u_firstMbIntra                              :  1;
            UNSG32 u_halfPixel                                 :  1;
            UNSG32 u_forwRefInterlace                          :  1;
            UNSG32 u_backRefInterlace                          :  1;
            UNSG32 u_FrmTransACSet                             :  2;
            UNSG32 u_FrmTransACSet2                            :  2;
            UNSG32 u_PQIndexGT8                                :  1;
            UNSG32 u_EscapeTBL                                 :  1;
            UNSG32 u_format1                                   :  4;
            UNSG32 u_noReorder                                 :  1;
            UNSG32 u_iplusModeOn                               :  1;
            UNSG32 u_RSVD3                                     :  3;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[5];
    ///////////////////////////////////////////////////////////
              SIE_IDX2BID                                      ie_rIDX2BID;
    ///////////////////////////////////////////////////////////
    } SIE_RF64PIC;

    ///////////////////////////////////////////////////////////
     SIGN32 RF64PIC_drvrd(SIE_RF64PIC *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 RF64PIC_drvwr(SIE_RF64PIC *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void RF64PIC_reset(SIE_RF64PIC *p);
     SIGN32 RF64PIC_cmp  (SIE_RF64PIC *p, SIE_RF64PIC *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define RF64PIC_check(p,pie,pfx,hLOG) RF64PIC_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define RF64PIC_print(p,    pfx,hLOG) RF64PIC_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: RF64PIC
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE RF64MB                  biu              (4,4)
///     ###
///     * RF64 macroblock-level information for ALU64 extensions; padded to 64b
///     * [0:31]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               ###
///               * [0:15] casted from MBPROP[0:15] in decHal_mbLvl.sxw.txt.txt
///               ###
///               %unsigned 3  BANK                      
///                                    ###
///                                    * Bank[0] indicates whether current MB is even or odd in an MB pair.
///                                    ###
///               %unsigned 1  Inter                     
///                                    ###
///                                    * Intra (0) or inter (1) macroblock, for DQmatrix selection in dQuant only
///                                    ###
///               %unsigned 1  lastMbRow                 
///                                    ###
///                                    * Current MB row is the last in slice; for VC-1 FOP
///                                    ###
///               %unsigned 1  lastMbRowPic              
///                                    ###
///                                    * Current MB row is the last in picture; for VC-1 FOP
///                                    ###
///               %unsigned 1  RSVD                      
///                                    ###
///                                    * reserved for bitfield alignment. Removed RF64MB.Mbaff.
///                                    ###
///               %unsigned 1  FLD                       
///                                    ###
///                                    * - if current MB is MBAFF field MB. Only valid when RF64PIC.MbaffPic = 1.
///                                    ###
///               %unsigned 1  FLDNeighborA              
///                                    ###
///                                    * - if left MB is MBAFF field MB. Only valid when RF64PIC.MbaffPic = 1.
///                                    ###
///               %unsigned 1  FLDNeighborB              
///                                    ###
///                                    * - if upper MB is MBAFF field MB. Only valid when RF64PIC.MbaffPic = 1.
///                                    ###
///               %unsigned 1  FLDNeighborC              
///                                    ###
///                                    * - if upper-right MB is MBAFF field MB. Only valid when RF64PIC.MbaffPic = 1.
///                                    ###
///               %unsigned 1  FLDNeighborD              
///                                    ###
///                                    * - if upper-left MB is MBAFF field MB. Only valid when RF64PIC.MbaffPic = 1.
///                                    ###
///               %unsigned 1  NeighborA                 
///                                    ###
///                                    * From stream-parser to syntax-processor:
///                                    * - if left MB is available
///                                    * From vScope to PCube:
///                                    * - if left MB is available as intra predictor
///                                    ###
///               %unsigned 1  NeighborB                 
///                                    ###
///                                    * From stream-parser to syntax-processor:
///                                    * - if upper MB is available
///                                    * From vScope to PCube:
///                                    * - if upper MB is available as intra predictor
///                                    ###
///               %unsigned 1  NeighborC                 
///                                    ###
///                                    * From stream-parser to syntax-processor:
///                                    * - if upper-right MB is available
///                                    * From vScope to PCube:
///                                    * - if upper-right MB is available as intra predictor
///                                    ###
///               %unsigned 1  NeighborD                 
///                                    ###
///                                    * From stream-parser to syntax-processor:
///                                    * - if upper-left MB is available
///                                    * From vScope to PCube:
///                                    * - if upper-left MB is available as intra predictor
///                                    ###
///               %unsigned 8  FopAddr2                  
///                                    ###
///                                    * VC-1: base addr 2 for FOP output, 16-byte based
///                                    ###
///               %unsigned 8  FopAddr3                  
///                                    ###
///                                    * VC-1: base addr 3 for FOP output, 16-byte based
///                                    * [32:63]
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 8  FopAddr                   
///                                    ###
///                                    * H.264: FOP output addr
///                                    * VC-1: base addr 0 for FOP output, 16-byte based
///                                    ###
///               %unsigned 8  FopAddr1                  
///                                    ###
///                                    * VC-1: base addr 1 for FOP output, 16-byte based
///                                    ###
///               %unsigned 8  MbX                       
///                                    ###
///                                    * Current MB index in X direction;
///                                    * from 0 up to ((picW+15)>>4) -1
///                                    ###
///               %unsigned 8  MbY                       
///                                    ###
///                                    * Current MB index in Y direction;
///                                    * from 0 up to ((picH+15)>>4) -1
///                                    * End of RF64MB
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_RF64MB
#define h_RF64MB (){}

    #define     BA_RF64MB_BANK                                 0x0000
    #define     B16RF64MB_BANK                                 0x0000
    #define   LSb32RF64MB_BANK                                    0
    #define   LSb16RF64MB_BANK                                    0
    #define       bRF64MB_BANK                                 3
    #define   MSK32RF64MB_BANK                                    0x00000007

    #define     BA_RF64MB_Inter                                0x0000
    #define     B16RF64MB_Inter                                0x0000
    #define   LSb32RF64MB_Inter                                   3
    #define   LSb16RF64MB_Inter                                   3
    #define       bRF64MB_Inter                                1
    #define   MSK32RF64MB_Inter                                   0x00000008

    #define     BA_RF64MB_lastMbRow                            0x0000
    #define     B16RF64MB_lastMbRow                            0x0000
    #define   LSb32RF64MB_lastMbRow                               4
    #define   LSb16RF64MB_lastMbRow                               4
    #define       bRF64MB_lastMbRow                            1
    #define   MSK32RF64MB_lastMbRow                               0x00000010

    #define     BA_RF64MB_lastMbRowPic                         0x0000
    #define     B16RF64MB_lastMbRowPic                         0x0000
    #define   LSb32RF64MB_lastMbRowPic                            5
    #define   LSb16RF64MB_lastMbRowPic                            5
    #define       bRF64MB_lastMbRowPic                         1
    #define   MSK32RF64MB_lastMbRowPic                            0x00000020

    #define     BA_RF64MB_RSVD                                 0x0000
    #define     B16RF64MB_RSVD                                 0x0000
    #define   LSb32RF64MB_RSVD                                    6
    #define   LSb16RF64MB_RSVD                                    6
    #define       bRF64MB_RSVD                                 1
    #define   MSK32RF64MB_RSVD                                    0x00000040

    #define     BA_RF64MB_FLD                                  0x0000
    #define     B16RF64MB_FLD                                  0x0000
    #define   LSb32RF64MB_FLD                                     7
    #define   LSb16RF64MB_FLD                                     7
    #define       bRF64MB_FLD                                  1
    #define   MSK32RF64MB_FLD                                     0x00000080

    #define     BA_RF64MB_FLDNeighborA                         0x0001
    #define     B16RF64MB_FLDNeighborA                         0x0000
    #define   LSb32RF64MB_FLDNeighborA                            8
    #define   LSb16RF64MB_FLDNeighborA                            8
    #define       bRF64MB_FLDNeighborA                         1
    #define   MSK32RF64MB_FLDNeighborA                            0x00000100

    #define     BA_RF64MB_FLDNeighborB                         0x0001
    #define     B16RF64MB_FLDNeighborB                         0x0000
    #define   LSb32RF64MB_FLDNeighborB                            9
    #define   LSb16RF64MB_FLDNeighborB                            9
    #define       bRF64MB_FLDNeighborB                         1
    #define   MSK32RF64MB_FLDNeighborB                            0x00000200

    #define     BA_RF64MB_FLDNeighborC                         0x0001
    #define     B16RF64MB_FLDNeighborC                         0x0000
    #define   LSb32RF64MB_FLDNeighborC                            10
    #define   LSb16RF64MB_FLDNeighborC                            10
    #define       bRF64MB_FLDNeighborC                         1
    #define   MSK32RF64MB_FLDNeighborC                            0x00000400

    #define     BA_RF64MB_FLDNeighborD                         0x0001
    #define     B16RF64MB_FLDNeighborD                         0x0000
    #define   LSb32RF64MB_FLDNeighborD                            11
    #define   LSb16RF64MB_FLDNeighborD                            11
    #define       bRF64MB_FLDNeighborD                         1
    #define   MSK32RF64MB_FLDNeighborD                            0x00000800

    #define     BA_RF64MB_NeighborA                            0x0001
    #define     B16RF64MB_NeighborA                            0x0000
    #define   LSb32RF64MB_NeighborA                               12
    #define   LSb16RF64MB_NeighborA                               12
    #define       bRF64MB_NeighborA                            1
    #define   MSK32RF64MB_NeighborA                               0x00001000

    #define     BA_RF64MB_NeighborB                            0x0001
    #define     B16RF64MB_NeighborB                            0x0000
    #define   LSb32RF64MB_NeighborB                               13
    #define   LSb16RF64MB_NeighborB                               13
    #define       bRF64MB_NeighborB                            1
    #define   MSK32RF64MB_NeighborB                               0x00002000

    #define     BA_RF64MB_NeighborC                            0x0001
    #define     B16RF64MB_NeighborC                            0x0000
    #define   LSb32RF64MB_NeighborC                               14
    #define   LSb16RF64MB_NeighborC                               14
    #define       bRF64MB_NeighborC                            1
    #define   MSK32RF64MB_NeighborC                               0x00004000

    #define     BA_RF64MB_NeighborD                            0x0001
    #define     B16RF64MB_NeighborD                            0x0000
    #define   LSb32RF64MB_NeighborD                               15
    #define   LSb16RF64MB_NeighborD                               15
    #define       bRF64MB_NeighborD                            1
    #define   MSK32RF64MB_NeighborD                               0x00008000

    #define     BA_RF64MB_FopAddr2                             0x0002
    #define     B16RF64MB_FopAddr2                             0x0002
    #define   LSb32RF64MB_FopAddr2                                16
    #define   LSb16RF64MB_FopAddr2                                0
    #define       bRF64MB_FopAddr2                             8
    #define   MSK32RF64MB_FopAddr2                                0x00FF0000

    #define     BA_RF64MB_FopAddr3                             0x0003
    #define     B16RF64MB_FopAddr3                             0x0002
    #define   LSb32RF64MB_FopAddr3                                24
    #define   LSb16RF64MB_FopAddr3                                8
    #define       bRF64MB_FopAddr3                             8
    #define   MSK32RF64MB_FopAddr3                                0xFF000000
    ///////////////////////////////////////////////////////////

    #define     BA_RF64MB_FopAddr                              0x0004
    #define     B16RF64MB_FopAddr                              0x0004
    #define   LSb32RF64MB_FopAddr                                 0
    #define   LSb16RF64MB_FopAddr                                 0
    #define       bRF64MB_FopAddr                              8
    #define   MSK32RF64MB_FopAddr                                 0x000000FF

    #define     BA_RF64MB_FopAddr1                             0x0005
    #define     B16RF64MB_FopAddr1                             0x0004
    #define   LSb32RF64MB_FopAddr1                                8
    #define   LSb16RF64MB_FopAddr1                                8
    #define       bRF64MB_FopAddr1                             8
    #define   MSK32RF64MB_FopAddr1                                0x0000FF00

    #define     BA_RF64MB_MbX                                  0x0006
    #define     B16RF64MB_MbX                                  0x0006
    #define   LSb32RF64MB_MbX                                     16
    #define   LSb16RF64MB_MbX                                     0
    #define       bRF64MB_MbX                                  8
    #define   MSK32RF64MB_MbX                                     0x00FF0000

    #define     BA_RF64MB_MbY                                  0x0007
    #define     B16RF64MB_MbY                                  0x0006
    #define   LSb32RF64MB_MbY                                     24
    #define   LSb16RF64MB_MbY                                     8
    #define       bRF64MB_MbY                                  8
    #define   MSK32RF64MB_MbY                                     0xFF000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_RF64MB {
    ///////////////////////////////////////////////////////////
    #define   GET32RF64MB_BANK(r32)                            _BFGET_(r32, 2, 0)
    #define   SET32RF64MB_BANK(r32,v)                          _BFSET_(r32, 2, 0,v)
    #define   GET16RF64MB_BANK(r16)                            _BFGET_(r16, 2, 0)
    #define   SET16RF64MB_BANK(r16,v)                          _BFSET_(r16, 2, 0,v)

    #define   GET32RF64MB_Inter(r32)                           _BFGET_(r32, 3, 3)
    #define   SET32RF64MB_Inter(r32,v)                         _BFSET_(r32, 3, 3,v)
    #define   GET16RF64MB_Inter(r16)                           _BFGET_(r16, 3, 3)
    #define   SET16RF64MB_Inter(r16,v)                         _BFSET_(r16, 3, 3,v)

    #define   GET32RF64MB_lastMbRow(r32)                       _BFGET_(r32, 4, 4)
    #define   SET32RF64MB_lastMbRow(r32,v)                     _BFSET_(r32, 4, 4,v)
    #define   GET16RF64MB_lastMbRow(r16)                       _BFGET_(r16, 4, 4)
    #define   SET16RF64MB_lastMbRow(r16,v)                     _BFSET_(r16, 4, 4,v)

    #define   GET32RF64MB_lastMbRowPic(r32)                    _BFGET_(r32, 5, 5)
    #define   SET32RF64MB_lastMbRowPic(r32,v)                  _BFSET_(r32, 5, 5,v)
    #define   GET16RF64MB_lastMbRowPic(r16)                    _BFGET_(r16, 5, 5)
    #define   SET16RF64MB_lastMbRowPic(r16,v)                  _BFSET_(r16, 5, 5,v)

    #define   GET32RF64MB_RSVD(r32)                            _BFGET_(r32, 6, 6)
    #define   SET32RF64MB_RSVD(r32,v)                          _BFSET_(r32, 6, 6,v)
    #define   GET16RF64MB_RSVD(r16)                            _BFGET_(r16, 6, 6)
    #define   SET16RF64MB_RSVD(r16,v)                          _BFSET_(r16, 6, 6,v)

    #define   GET32RF64MB_FLD(r32)                             _BFGET_(r32, 7, 7)
    #define   SET32RF64MB_FLD(r32,v)                           _BFSET_(r32, 7, 7,v)
    #define   GET16RF64MB_FLD(r16)                             _BFGET_(r16, 7, 7)
    #define   SET16RF64MB_FLD(r16,v)                           _BFSET_(r16, 7, 7,v)

    #define   GET32RF64MB_FLDNeighborA(r32)                    _BFGET_(r32, 8, 8)
    #define   SET32RF64MB_FLDNeighborA(r32,v)                  _BFSET_(r32, 8, 8,v)
    #define   GET16RF64MB_FLDNeighborA(r16)                    _BFGET_(r16, 8, 8)
    #define   SET16RF64MB_FLDNeighborA(r16,v)                  _BFSET_(r16, 8, 8,v)

    #define   GET32RF64MB_FLDNeighborB(r32)                    _BFGET_(r32, 9, 9)
    #define   SET32RF64MB_FLDNeighborB(r32,v)                  _BFSET_(r32, 9, 9,v)
    #define   GET16RF64MB_FLDNeighborB(r16)                    _BFGET_(r16, 9, 9)
    #define   SET16RF64MB_FLDNeighborB(r16,v)                  _BFSET_(r16, 9, 9,v)

    #define   GET32RF64MB_FLDNeighborC(r32)                    _BFGET_(r32,10,10)
    #define   SET32RF64MB_FLDNeighborC(r32,v)                  _BFSET_(r32,10,10,v)
    #define   GET16RF64MB_FLDNeighborC(r16)                    _BFGET_(r16,10,10)
    #define   SET16RF64MB_FLDNeighborC(r16,v)                  _BFSET_(r16,10,10,v)

    #define   GET32RF64MB_FLDNeighborD(r32)                    _BFGET_(r32,11,11)
    #define   SET32RF64MB_FLDNeighborD(r32,v)                  _BFSET_(r32,11,11,v)
    #define   GET16RF64MB_FLDNeighborD(r16)                    _BFGET_(r16,11,11)
    #define   SET16RF64MB_FLDNeighborD(r16,v)                  _BFSET_(r16,11,11,v)

    #define   GET32RF64MB_NeighborA(r32)                       _BFGET_(r32,12,12)
    #define   SET32RF64MB_NeighborA(r32,v)                     _BFSET_(r32,12,12,v)
    #define   GET16RF64MB_NeighborA(r16)                       _BFGET_(r16,12,12)
    #define   SET16RF64MB_NeighborA(r16,v)                     _BFSET_(r16,12,12,v)

    #define   GET32RF64MB_NeighborB(r32)                       _BFGET_(r32,13,13)
    #define   SET32RF64MB_NeighborB(r32,v)                     _BFSET_(r32,13,13,v)
    #define   GET16RF64MB_NeighborB(r16)                       _BFGET_(r16,13,13)
    #define   SET16RF64MB_NeighborB(r16,v)                     _BFSET_(r16,13,13,v)

    #define   GET32RF64MB_NeighborC(r32)                       _BFGET_(r32,14,14)
    #define   SET32RF64MB_NeighborC(r32,v)                     _BFSET_(r32,14,14,v)
    #define   GET16RF64MB_NeighborC(r16)                       _BFGET_(r16,14,14)
    #define   SET16RF64MB_NeighborC(r16,v)                     _BFSET_(r16,14,14,v)

    #define   GET32RF64MB_NeighborD(r32)                       _BFGET_(r32,15,15)
    #define   SET32RF64MB_NeighborD(r32,v)                     _BFSET_(r32,15,15,v)
    #define   GET16RF64MB_NeighborD(r16)                       _BFGET_(r16,15,15)
    #define   SET16RF64MB_NeighborD(r16,v)                     _BFSET_(r16,15,15,v)

    #define   GET32RF64MB_FopAddr2(r32)                        _BFGET_(r32,23,16)
    #define   SET32RF64MB_FopAddr2(r32,v)                      _BFSET_(r32,23,16,v)
    #define   GET16RF64MB_FopAddr2(r16)                        _BFGET_(r16, 7, 0)
    #define   SET16RF64MB_FopAddr2(r16,v)                      _BFSET_(r16, 7, 0,v)

    #define   GET32RF64MB_FopAddr3(r32)                        _BFGET_(r32,31,24)
    #define   SET32RF64MB_FopAddr3(r32,v)                      _BFSET_(r32,31,24,v)
    #define   GET16RF64MB_FopAddr3(r16)                        _BFGET_(r16,15, 8)
    #define   SET16RF64MB_FopAddr3(r16,v)                      _BFSET_(r16,15, 8,v)

            UNSG32 u_BANK                                      :  3;
            UNSG32 u_Inter                                     :  1;
            UNSG32 u_lastMbRow                                 :  1;
            UNSG32 u_lastMbRowPic                              :  1;
            UNSG32 u_RSVD                                      :  1;
            UNSG32 u_FLD                                       :  1;
            UNSG32 u_FLDNeighborA                              :  1;
            UNSG32 u_FLDNeighborB                              :  1;
            UNSG32 u_FLDNeighborC                              :  1;
            UNSG32 u_FLDNeighborD                              :  1;
            UNSG32 u_NeighborA                                 :  1;
            UNSG32 u_NeighborB                                 :  1;
            UNSG32 u_NeighborC                                 :  1;
            UNSG32 u_NeighborD                                 :  1;
            UNSG32 u_FopAddr2                                  :  8;
            UNSG32 u_FopAddr3                                  :  8;
    ///////////////////////////////////////////////////////////
    #define   GET32RF64MB_FopAddr(r32)                         _BFGET_(r32, 7, 0)
    #define   SET32RF64MB_FopAddr(r32,v)                       _BFSET_(r32, 7, 0,v)
    #define   GET16RF64MB_FopAddr(r16)                         _BFGET_(r16, 7, 0)
    #define   SET16RF64MB_FopAddr(r16,v)                       _BFSET_(r16, 7, 0,v)

    #define   GET32RF64MB_FopAddr1(r32)                        _BFGET_(r32,15, 8)
    #define   SET32RF64MB_FopAddr1(r32,v)                      _BFSET_(r32,15, 8,v)
    #define   GET16RF64MB_FopAddr1(r16)                        _BFGET_(r16,15, 8)
    #define   SET16RF64MB_FopAddr1(r16,v)                      _BFSET_(r16,15, 8,v)

    #define   GET32RF64MB_MbX(r32)                             _BFGET_(r32,23,16)
    #define   SET32RF64MB_MbX(r32,v)                           _BFSET_(r32,23,16,v)
    #define   GET16RF64MB_MbX(r16)                             _BFGET_(r16, 7, 0)
    #define   SET16RF64MB_MbX(r16,v)                           _BFSET_(r16, 7, 0,v)

    #define   GET32RF64MB_MbY(r32)                             _BFGET_(r32,31,24)
    #define   SET32RF64MB_MbY(r32,v)                           _BFSET_(r32,31,24,v)
    #define   GET16RF64MB_MbY(r16)                             _BFGET_(r16,15, 8)
    #define   SET16RF64MB_MbY(r16,v)                           _BFSET_(r16,15, 8,v)

            UNSG32 u_FopAddr                                   :  8;
            UNSG32 u_FopAddr1                                  :  8;
            UNSG32 u_MbX                                       :  8;
            UNSG32 u_MbY                                       :  8;
    ///////////////////////////////////////////////////////////
    } SIE_RF64MB;

    ///////////////////////////////////////////////////////////
     SIGN32 RF64MB_drvrd(SIE_RF64MB *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 RF64MB_drvwr(SIE_RF64MB *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void RF64MB_reset(SIE_RF64MB *p);
     SIGN32 RF64MB_cmp  (SIE_RF64MB *p, SIE_RF64MB *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define RF64MB_check(p,pie,pfx,hLOG) RF64MB_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define RF64MB_print(p,    pfx,hLOG) RF64MB_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: RF64MB
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE RF64QP                  biu              (4,4)
///     ###
///     * QP for neighboring macroblocks; used by FOP only. Padded to 64b
///     * Same as {BLK,chroma,RSVD,QP,Qu,Qv} in MBPROP in decHal_mbLvl.sxw.txt.txt
///     * Also added DC/ACstep_* for coefficient scaling for DC/AC prediction for MPEG-4/VC-1
///     * [0:31]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 8  DCstep_Y                  
///                                    ###
///                                    * VC-1: DCSTEP for coeff scaling in DC prediction (only 6 bits are used)
///                                    * MPEG-4: qstep luma coeff scaling in DC prediction
///                                    ###
///               %unsigned 8  ACstep_Y                  
///                                    ###
///                                    * VC-1: DCSTEP for coeff scaling in AC prediction (only 6 bits are used)
///                                    * MPEG-4: qstep luma coeff scaling in AC prediction
///                                    ###
///               %unsigned 8  DCstep_C                  
///                                    ###
///                                    * VC-1: not used
///                                    * MPEG-4: qstep chroma coeff scaling in DC prediction
///                                    ###
///               %unsigned 8  ACstep_C                  
///                                    ###
///                                    * VC-1: not used
///                                    * MPEG-4: qstep chroma coeff scaling in AC prediction
///                                    * [32:63]
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 8  RSVD8                     
///               %unsigned 8  QPY                       
///                                    ###
///                                    * H.264: QP for Luma; 0~51 inclusive
///                                    * MPEG-4: QP_AC (used to determine if coeff scaling is required for AC prediction)
///                                    ###
///               %unsigned 8  QPU                       
///                                    ###
///                                    * H.264: QP fo Cb; 0~51 inclusive
///                                    ###
///               %unsigned 8  QPV                       
///                                    ###
///                                    * H.264: QP for Cr; 0~51 inclusive
///                                    * End of RF64QP
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_RF64QP
#define h_RF64QP (){}

    #define     BA_RF64QP_DCstep_Y                             0x0000
    #define     B16RF64QP_DCstep_Y                             0x0000
    #define   LSb32RF64QP_DCstep_Y                                0
    #define   LSb16RF64QP_DCstep_Y                                0
    #define       bRF64QP_DCstep_Y                             8
    #define   MSK32RF64QP_DCstep_Y                                0x000000FF

    #define     BA_RF64QP_ACstep_Y                             0x0001
    #define     B16RF64QP_ACstep_Y                             0x0000
    #define   LSb32RF64QP_ACstep_Y                                8
    #define   LSb16RF64QP_ACstep_Y                                8
    #define       bRF64QP_ACstep_Y                             8
    #define   MSK32RF64QP_ACstep_Y                                0x0000FF00

    #define     BA_RF64QP_DCstep_C                             0x0002
    #define     B16RF64QP_DCstep_C                             0x0002
    #define   LSb32RF64QP_DCstep_C                                16
    #define   LSb16RF64QP_DCstep_C                                0
    #define       bRF64QP_DCstep_C                             8
    #define   MSK32RF64QP_DCstep_C                                0x00FF0000

    #define     BA_RF64QP_ACstep_C                             0x0003
    #define     B16RF64QP_ACstep_C                             0x0002
    #define   LSb32RF64QP_ACstep_C                                24
    #define   LSb16RF64QP_ACstep_C                                8
    #define       bRF64QP_ACstep_C                             8
    #define   MSK32RF64QP_ACstep_C                                0xFF000000
    ///////////////////////////////////////////////////////////

    #define     BA_RF64QP_RSVD8                                0x0004
    #define     B16RF64QP_RSVD8                                0x0004
    #define   LSb32RF64QP_RSVD8                                   0
    #define   LSb16RF64QP_RSVD8                                   0
    #define       bRF64QP_RSVD8                                8
    #define   MSK32RF64QP_RSVD8                                   0x000000FF

    #define     BA_RF64QP_QPY                                  0x0005
    #define     B16RF64QP_QPY                                  0x0004
    #define   LSb32RF64QP_QPY                                     8
    #define   LSb16RF64QP_QPY                                     8
    #define       bRF64QP_QPY                                  8
    #define   MSK32RF64QP_QPY                                     0x0000FF00

    #define     BA_RF64QP_QPU                                  0x0006
    #define     B16RF64QP_QPU                                  0x0006
    #define   LSb32RF64QP_QPU                                     16
    #define   LSb16RF64QP_QPU                                     0
    #define       bRF64QP_QPU                                  8
    #define   MSK32RF64QP_QPU                                     0x00FF0000

    #define     BA_RF64QP_QPV                                  0x0007
    #define     B16RF64QP_QPV                                  0x0006
    #define   LSb32RF64QP_QPV                                     24
    #define   LSb16RF64QP_QPV                                     8
    #define       bRF64QP_QPV                                  8
    #define   MSK32RF64QP_QPV                                     0xFF000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_RF64QP {
    ///////////////////////////////////////////////////////////
    #define   GET32RF64QP_DCstep_Y(r32)                        _BFGET_(r32, 7, 0)
    #define   SET32RF64QP_DCstep_Y(r32,v)                      _BFSET_(r32, 7, 0,v)
    #define   GET16RF64QP_DCstep_Y(r16)                        _BFGET_(r16, 7, 0)
    #define   SET16RF64QP_DCstep_Y(r16,v)                      _BFSET_(r16, 7, 0,v)

    #define   GET32RF64QP_ACstep_Y(r32)                        _BFGET_(r32,15, 8)
    #define   SET32RF64QP_ACstep_Y(r32,v)                      _BFSET_(r32,15, 8,v)
    #define   GET16RF64QP_ACstep_Y(r16)                        _BFGET_(r16,15, 8)
    #define   SET16RF64QP_ACstep_Y(r16,v)                      _BFSET_(r16,15, 8,v)

    #define   GET32RF64QP_DCstep_C(r32)                        _BFGET_(r32,23,16)
    #define   SET32RF64QP_DCstep_C(r32,v)                      _BFSET_(r32,23,16,v)
    #define   GET16RF64QP_DCstep_C(r16)                        _BFGET_(r16, 7, 0)
    #define   SET16RF64QP_DCstep_C(r16,v)                      _BFSET_(r16, 7, 0,v)

    #define   GET32RF64QP_ACstep_C(r32)                        _BFGET_(r32,31,24)
    #define   SET32RF64QP_ACstep_C(r32,v)                      _BFSET_(r32,31,24,v)
    #define   GET16RF64QP_ACstep_C(r16)                        _BFGET_(r16,15, 8)
    #define   SET16RF64QP_ACstep_C(r16,v)                      _BFSET_(r16,15, 8,v)

            UNSG32 u_DCstep_Y                                  :  8;
            UNSG32 u_ACstep_Y                                  :  8;
            UNSG32 u_DCstep_C                                  :  8;
            UNSG32 u_ACstep_C                                  :  8;
    ///////////////////////////////////////////////////////////
    #define   GET32RF64QP_RSVD8(r32)                           _BFGET_(r32, 7, 0)
    #define   SET32RF64QP_RSVD8(r32,v)                         _BFSET_(r32, 7, 0,v)
    #define   GET16RF64QP_RSVD8(r16)                           _BFGET_(r16, 7, 0)
    #define   SET16RF64QP_RSVD8(r16,v)                         _BFSET_(r16, 7, 0,v)

    #define   GET32RF64QP_QPY(r32)                             _BFGET_(r32,15, 8)
    #define   SET32RF64QP_QPY(r32,v)                           _BFSET_(r32,15, 8,v)
    #define   GET16RF64QP_QPY(r16)                             _BFGET_(r16,15, 8)
    #define   SET16RF64QP_QPY(r16,v)                           _BFSET_(r16,15, 8,v)

    #define   GET32RF64QP_QPU(r32)                             _BFGET_(r32,23,16)
    #define   SET32RF64QP_QPU(r32,v)                           _BFSET_(r32,23,16,v)
    #define   GET16RF64QP_QPU(r16)                             _BFGET_(r16, 7, 0)
    #define   SET16RF64QP_QPU(r16,v)                           _BFSET_(r16, 7, 0,v)

    #define   GET32RF64QP_QPV(r32)                             _BFGET_(r32,31,24)
    #define   SET32RF64QP_QPV(r32,v)                           _BFSET_(r32,31,24,v)
    #define   GET16RF64QP_QPV(r16)                             _BFGET_(r16,15, 8)
    #define   SET16RF64QP_QPV(r16,v)                           _BFSET_(r16,15, 8,v)

            UNSG32 u_RSVD8                                     :  8;
            UNSG32 u_QPY                                       :  8;
            UNSG32 u_QPU                                       :  8;
            UNSG32 u_QPV                                       :  8;
    ///////////////////////////////////////////////////////////
    } SIE_RF64QP;

    ///////////////////////////////////////////////////////////
     SIGN32 RF64QP_drvrd(SIE_RF64QP *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 RF64QP_drvwr(SIE_RF64QP *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void RF64QP_reset(SIE_RF64QP *p);
     SIGN32 RF64QP_cmp  (SIE_RF64QP *p, SIE_RF64QP *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define RF64QP_check(p,pie,pfx,hLOG) RF64QP_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define RF64QP_print(p,    pfx,hLOG) RF64QP_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: RF64QP
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE NLUTCTX                 biu              (4,4)
///     ###
///     * RF64 context for nLut
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 MB                   
///               $RF64MB              MB                REG          
///                                    ###
///                                    * Macroblock-level information; reprogrammed by FIGO at the start of every macroblock
///                                    * [64:2047]
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 RSVD                 
///               $LUT64b              RSVD              REG      [31]
///                                    ###
///                                    * padding to 2048-bit boundary
///                                    * [2048:4095]
///                                    ###
///     @ 0x00100                      (P)
///     # 0x00100 PIC                  
///               $RF64PIC             PIC               REG          
///                                    ###
///                                    * Picture-level Parameters for ALU64 extensions.
///                                    * End NLUTCTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_NLUTCTX
#define h_NLUTCTX (){}

    #define     RA_NLUTCTX_MB                                  0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_NLUTCTX_RSVD                                0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_NLUTCTX_PIC                                 0x0100
    ///////////////////////////////////////////////////////////

    typedef struct SIE_NLUTCTX {
    ///////////////////////////////////////////////////////////
              SIE_RF64MB                                       ie_MB;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[31];
    ///////////////////////////////////////////////////////////
              SIE_RF64PIC                                      ie_PIC;
    ///////////////////////////////////////////////////////////
    } SIE_NLUTCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 NLUTCTX_drvrd(SIE_NLUTCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 NLUTCTX_drvwr(SIE_NLUTCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void NLUTCTX_reset(SIE_NLUTCTX *p);
     SIGN32 NLUTCTX_cmp  (SIE_NLUTCTX *p, SIE_NLUTCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define NLUTCTX_check(p,pie,pfx,hLOG) NLUTCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define NLUTCTX_print(p,    pfx,hLOG) NLUTCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: NLUTCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BITOPCTX                biu              (4,4)
///     ###
///     * Operator format for BitOp extension
///     * [0:3583]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 RSVD                 
///               $LUT64b              RSVD              REG      [56]
///                                    ###
///                                    * padding to 3583
///                                    * [3584:3711]
///                                    ###
///     @ 0x001C0                      (P)
///     # 0x001C0 CTX                  
///               $BITOPRF64           CTX               REG          
///                                    ###
///                                    * Four BitOp commands, selected by extension ID
///                                    * End BitOpCtx
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BITOPCTX
#define h_BITOPCTX (){}

    #define     RA_BITOPCTX_RSVD                               0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_BITOPCTX_CTX                                0x01C0
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BITOPCTX {
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[56];
    ///////////////////////////////////////////////////////////
              SIE_BITOPRF64                                    ie_CTX;
    ///////////////////////////////////////////////////////////
    } SIE_BITOPCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 BITOPCTX_drvrd(SIE_BITOPCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BITOPCTX_drvwr(SIE_BITOPCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BITOPCTX_reset(SIE_BITOPCTX *p);
     SIGN32 BITOPCTX_cmp  (SIE_BITOPCTX *p, SIE_BITOPCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BITOPCTX_check(p,pie,pfx,hLOG) BITOPCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BITOPCTX_print(p,    pfx,hLOG) BITOPCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BITOPCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE DQCTX                   biu              (4,4)
///     ###
///     * RF64 context for dQuant
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 MB                   
///               $RF64MB              MB                REG          
///                                    ###
///                                    * Reserved for RF64MB
///                                    * [64:191]
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 QPX                  
///               $RF64QP              QPX               REG          
///                                    ###
///                                    * QP of current block
///                                    ###
///     @ 0x00010                      (P)
///     # 0x00010 QPN                  
///               $RF64QP              QPN               REG          
///                                    ###
///                                    * QP of neighboring block
///                                    * Used for VC-1/MPEG-4 DC/AC prediction
///                                    * [192:2047]
///                                    ###
///     @ 0x00018                      (P)
///     # 0x00018 RSVD                 
///               $LUT64b              RSVD              REG      [29]
///                                    ###
///                                    * padding to 2048-bit boundary
///                                    * [2048:4095]
///                                    ###
///     @ 0x00100                      (P)
///     # 0x00100 PIC                  
///               $RF64PIC             PIC               REG          
///                                    ###
///                                    * Picture-level Parameters for ALU64 extensions.
///                                    * End DQCTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_DQCTX
#define h_DQCTX (){}

    #define     RA_DQCTX_MB                                    0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_DQCTX_QPX                                   0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_DQCTX_QPN                                   0x0010
    ///////////////////////////////////////////////////////////
    #define     RA_DQCTX_RSVD                                  0x0018
    ///////////////////////////////////////////////////////////
    #define     RA_DQCTX_PIC                                   0x0100
    ///////////////////////////////////////////////////////////

    typedef struct SIE_DQCTX {
    ///////////////////////////////////////////////////////////
              SIE_RF64MB                                       ie_MB;
    ///////////////////////////////////////////////////////////
              SIE_RF64QP                                       ie_QPX;
    ///////////////////////////////////////////////////////////
              SIE_RF64QP                                       ie_QPN;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[29];
    ///////////////////////////////////////////////////////////
              SIE_RF64PIC                                      ie_PIC;
    ///////////////////////////////////////////////////////////
    } SIE_DQCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 DQCTX_drvrd(SIE_DQCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 DQCTX_drvwr(SIE_DQCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void DQCTX_reset(SIE_DQCTX *p);
     SIGN32 DQCTX_cmp  (SIE_DQCTX *p, SIE_DQCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define DQCTX_check(p,pie,pfx,hLOG) DQCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define DQCTX_print(p,    pfx,hLOG) DQCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: DQCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ASPCTX                  biu              (4,4)
///     ###
///     * RF64 context for ASP
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 MB                   
///               $RF64MB              MB                REG          
///                                    ###
///                                    * Reserved for RF64MB
///                                    * [64:255]
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 RSVD                 
///               $LUT64b              RSVD              REG       [3]
///                                    ###
///                                    * padding to 2048-bit boundary
///                                    ###
///     @ 0x00020                      (P)
///     # 0x00020 D33                  
///               $HCTX4x4             D33               REG          
///                                    ###
///                                    * Y(-1,-1)
///                                    ###
///     @ 0x00030                      (P)
///     # 0x00030 B30                  
///               $HCTX4x4             B30               REG          
///                                    ###
///                                    * Y(0,-1) or U(0,-1) or DCU(0,-1)
///                                    ###
///     @ 0x00040                      (P)
///     # 0x00040 B31                  
///               $HCTX4x4             B31               REG          
///                                    ###
///                                    * Y(1,-1) or V(0,-1) or DCV(0,-1)
///                                    ###
///     @ 0x00050                      (P)
///     # 0x00050 B32                  
///               $HCTX4x4             B32               REG          
///                                    ###
///                                    * Y(2,-1) or U(1,-1)
///                                    ###
///     @ 0x00060                      (P)
///     # 0x00060 B33                  
///               $HCTX4x4             B33               REG          
///                                    ###
///                                    * Y(3,-1) or V(1,-1) or DCY(0,-1)
///                                    ###
///     @ 0x00070                      (P)
///     # 0x00070 C30                  
///               $HCTX4x4             C30               REG          
///                                    ###
///                                    * Y(4,-1)
///                                    ###
///     @ 0x00080                      (P)
///     # 0x00080 A03                  
///               $HCTX4x4             A03               REG          
///                                    ###
///                                    * Y(-1,0)
///                                    ###
///     @ 0x00090                      (P)
///     # 0x00090 A12                  
///               $HCTX4x4             A12               REG          
///                                    ###
///                                    * U(-1,0) & V(-1,0)
///                                    ###
///     @ 0x000A0                      (P)
///     # 0x000A0 A13                  
///               $HCTX4x4             A13               REG          
///                                    ###
///                                    * Y(-1,1)
///                                    ###
///     @ 0x000B0                      (P)
///     # 0x000B0 A23                  
///               $HCTX4x4             A23               REG          
///                                    ###
///                                    * Y(-1,2)
///                                    ###
///     @ 0x000C0                      (P)
///     # 0x000C0 A30                  
///               $HCTX4x4             A30               REG          
///                                    ###
///                                    * DCU(-1,0) & DCV(-1,0)
///                                    ###
///     @ 0x000D0                      (P)
///     # 0x000D0 A31                  
///               $HCTX4x4             A31               REG          
///                                    ###
///                                    * DCI(-1,0) & DCY(-1,0)
///                                    ###
///     @ 0x000E0                      (P)
///     # 0x000E0 A32                  
///               $HCTX4x4             A32               REG          
///                                    ###
///                                    * U(-1,1) & V(-1,1)
///                                    ###
///     @ 0x000F0                      (P)
///     # 0x000F0 A33                  
///               $HCTX4x4             A33               REG          
///                                    ###
///                                    * Y(-1,3)
///                                    * [2048:4095]
///                                    ###
///     @ 0x00100                      (P)
///     # 0x00100 PIC                  
///               $RF64PIC             PIC               REG          
///                                    ###
///                                    * Picture-level Parameters for ALU64 extensions.
///                                    * End ASPCTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ASPCTX
#define h_ASPCTX (){}

    #define     RA_ASPCTX_MB                                   0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_RSVD                                 0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_D33                                  0x0020
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_B30                                  0x0030
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_B31                                  0x0040
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_B32                                  0x0050
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_B33                                  0x0060
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_C30                                  0x0070
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_A03                                  0x0080
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_A12                                  0x0090
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_A13                                  0x00A0
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_A23                                  0x00B0
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_A30                                  0x00C0
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_A31                                  0x00D0
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_A32                                  0x00E0
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_A33                                  0x00F0
    ///////////////////////////////////////////////////////////
    #define     RA_ASPCTX_PIC                                  0x0100
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ASPCTX {
    ///////////////////////////////////////////////////////////
              SIE_RF64MB                                       ie_MB;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[3];
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_D33;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_B30;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_B31;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_B32;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_B33;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_C30;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A03;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A12;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A13;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A23;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A30;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A31;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A32;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A33;
    ///////////////////////////////////////////////////////////
              SIE_RF64PIC                                      ie_PIC;
    ///////////////////////////////////////////////////////////
    } SIE_ASPCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 ASPCTX_drvrd(SIE_ASPCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ASPCTX_drvwr(SIE_ASPCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ASPCTX_reset(SIE_ASPCTX *p);
     SIGN32 ASPCTX_cmp  (SIE_ASPCTX *p, SIE_ASPCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ASPCTX_check(p,pie,pfx,hLOG) ASPCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ASPCTX_print(p,    pfx,hLOG) ASPCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ASPCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE HCTX_ARR                biu              (4,4)
///     ###
///     * 16 * HCTX4x4 for ASP
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 CTX                  
///               $HCTX4x4             CTX               REG      [16]
///                                    ###
///                                    * HCTX4x4
///                                    * End HCTX_ARR
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     256B, bits:    2048b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_HCTX_ARR
#define h_HCTX_ARR (){}

    #define     RA_HCTX_ARR_CTX                                0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_HCTX_ARR {
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_CTX[16];
    ///////////////////////////////////////////////////////////
    } SIE_HCTX_ARR;

    ///////////////////////////////////////////////////////////
     SIGN32 HCTX_ARR_drvrd(SIE_HCTX_ARR *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 HCTX_ARR_drvwr(SIE_HCTX_ARR *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void HCTX_ARR_reset(SIE_HCTX_ARR *p);
     SIGN32 HCTX_ARR_cmp  (SIE_HCTX_ARR *p, SIE_HCTX_ARR *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define HCTX_ARR_check(p,pie,pfx,hLOG) HCTX_ARR_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define HCTX_ARR_print(p,    pfx,hLOG) HCTX_ARR_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: HCTX_ARR
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ASECTX                  biu              (4,4)
///     ###
///     * RF64 context for ASE
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 MB                   
///               $RF64MB              MB                REG          
///                                    ###
///                                    * Reserved for RF64MB
///                                    * [64:255]
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 RSVD                 
///               $LUT64b              RSVD              REG       [3]
///                                    ###
///                                    * padding to 2048-bit boundary
///                                    ###
///     @ 0x00020                      (P)
///     # 0x00020 D33                  
///               $HCTX4x4             D33               REG          
///                                    ###
///                                    * Y(-1,-1)
///                                    ###
///     @ 0x00030                      (P)
///     # 0x00030 B30                  
///               $HCTX4x4             B30               REG          
///                                    ###
///                                    * Y(0,-1) or U(0,-1) or DCU(0,-1)
///                                    ###
///     @ 0x00040                      (P)
///     # 0x00040 B31                  
///               $HCTX4x4             B31               REG          
///                                    ###
///                                    * Y(1,-1) or V(0,-1) or DCV(0,-1)
///                                    ###
///     @ 0x00050                      (P)
///     # 0x00050 B32                  
///               $HCTX4x4             B32               REG          
///                                    ###
///                                    * Y(2,-1) or U(1,-1)
///                                    ###
///     @ 0x00060                      (P)
///     # 0x00060 B33                  
///               $HCTX4x4             B33               REG          
///                                    ###
///                                    * Y(3,-1) or V(1,-1) or DCY(0,-1)
///                                    ###
///     @ 0x00070                      (P)
///     # 0x00070 C30                  
///               $HCTX4x4             C30               REG          
///                                    ###
///                                    * Y(4,-1)
///                                    ###
///     @ 0x00080                      (P)
///     # 0x00080 A03                  
///               $HCTX4x4             A03               REG          
///                                    ###
///                                    * Y(-1,0)
///                                    ###
///     @ 0x00090                      (P)
///     # 0x00090 A12                  
///               $HCTX4x4             A12               REG          
///                                    ###
///                                    * U(-1,0) & V(-1,0)
///                                    ###
///     @ 0x000A0                      (P)
///     # 0x000A0 A13                  
///               $HCTX4x4             A13               REG          
///                                    ###
///                                    * Y(-1,1)
///                                    ###
///     @ 0x000B0                      (P)
///     # 0x000B0 A23                  
///               $HCTX4x4             A23               REG          
///                                    ###
///                                    * Y(-1,2)
///                                    ###
///     @ 0x000C0                      (P)
///     # 0x000C0 A30                  
///               $HCTX4x4             A30               REG          
///                                    ###
///                                    * DCU(-1,0) & DCV(-1,0)
///                                    ###
///     @ 0x000D0                      (P)
///     # 0x000D0 A31                  
///               $HCTX4x4             A31               REG          
///                                    ###
///                                    * DCI(-1,0) & DCY(-1,0)
///                                    ###
///     @ 0x000E0                      (P)
///     # 0x000E0 A32                  
///               $HCTX4x4             A32               REG          
///                                    ###
///                                    * U(-1,1) & V(-1,1)
///                                    ###
///     @ 0x000F0                      (P)
///     # 0x000F0 A33                  
///               $HCTX4x4             A33               REG          
///                                    ###
///                                    * Y(-1,3)
///                                    * [2048:4095]
///                                    ###
///     @ 0x00100                      (P)
///     # 0x00100 PIC                  
///               $RF64PIC             PIC               REG          
///                                    ###
///                                    * Picture-level Parameters for ALU64 extensions.
///                                    * End ASECTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ASECTX
#define h_ASECTX (){}

    #define     RA_ASECTX_MB                                   0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_RSVD                                 0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_D33                                  0x0020
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_B30                                  0x0030
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_B31                                  0x0040
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_B32                                  0x0050
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_B33                                  0x0060
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_C30                                  0x0070
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_A03                                  0x0080
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_A12                                  0x0090
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_A13                                  0x00A0
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_A23                                  0x00B0
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_A30                                  0x00C0
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_A31                                  0x00D0
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_A32                                  0x00E0
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_A33                                  0x00F0
    ///////////////////////////////////////////////////////////
    #define     RA_ASECTX_PIC                                  0x0100
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ASECTX {
    ///////////////////////////////////////////////////////////
              SIE_RF64MB                                       ie_MB;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[3];
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_D33;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_B30;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_B31;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_B32;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_B33;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_C30;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A03;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A12;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A13;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A23;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A30;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A31;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A32;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A33;
    ///////////////////////////////////////////////////////////
              SIE_RF64PIC                                      ie_PIC;
    ///////////////////////////////////////////////////////////
    } SIE_ASECTX;

    ///////////////////////////////////////////////////////////
     SIGN32 ASECTX_drvrd(SIE_ASECTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ASECTX_drvwr(SIE_ASECTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ASECTX_reset(SIE_ASECTX *p);
     SIGN32 ASECTX_cmp  (SIE_ASECTX *p, SIE_ASECTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ASECTX_check(p,pie,pfx,hLOG) ASECTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ASECTX_print(p,    pfx,hLOG) ASECTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ASECTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ASE_ND_CTX              biu              (4,4)
///     ###
///     * RF64 context for ASE (to store Neighbor D in MBAFF mode)
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 RSVD                 
///               $LUT64b              RSVD              REG          
///                                    ###
///                                    * Reserved for RF64MB
///                                    * [64:191]
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 A03m                 
///               $HCTX4x4             A03m              REG          
///                                    ###
///                                    * Neighbor D for when locating at A03 in MBAFF mode
///                                    * [192:255]
///                                    ###
///     @ 0x00018                      (P)
///     # 0x00018 RSVD1                
///               $LUT64b              RSVD1             REG      [32]
///                                    ###
///                                    * [2240:2367]
///                                    ###
///     @ 0x00118                      (P)
///     # 0x00118 A13m                 
///               $HCTX4x4             A13m              REG          
///                                    ###
///                                    * Neighbor D for when locating at A13 in MBAFF mode
///                                    * [2368:2495]
///                                    ###
///     @ 0x00128                      (P)
///     # 0x00128 A23m                 
///               $HCTX4x4             A23m              REG          
///                                    ###
///                                    * Neighbor D for when locating at A23 in MBAFF mode
///                                    * [2496:4097]
///                                    ###
///     @ 0x00138                      (P)
///     # 0x00138 RSVD2                
///               $LUT64b              RSVD2             REG      [25]
///                                    ###
///                                    * Padding to the end
///                                    * End ASE_ND_CTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ASE_ND_CTX
#define h_ASE_ND_CTX (){}

    #define     RA_ASE_ND_CTX_RSVD                             0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_ASE_ND_CTX_A03m                             0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_ASE_ND_CTX_RSVD1                            0x0018
    ///////////////////////////////////////////////////////////
    #define     RA_ASE_ND_CTX_A13m                             0x0118
    ///////////////////////////////////////////////////////////
    #define     RA_ASE_ND_CTX_A23m                             0x0128
    ///////////////////////////////////////////////////////////
    #define     RA_ASE_ND_CTX_RSVD2                            0x0138
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ASE_ND_CTX {
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A03m;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD1[32];
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A13m;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_A23m;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD2[25];
    ///////////////////////////////////////////////////////////
    } SIE_ASE_ND_CTX;

    ///////////////////////////////////////////////////////////
     SIGN32 ASE_ND_CTX_drvrd(SIE_ASE_ND_CTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ASE_ND_CTX_drvwr(SIE_ASE_ND_CTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ASE_ND_CTX_reset(SIE_ASE_ND_CTX *p);
     SIGN32 ASE_ND_CTX_cmp  (SIE_ASE_ND_CTX *p, SIE_ASE_ND_CTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ASE_ND_CTX_check(p,pie,pfx,hLOG) ASE_ND_CTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ASE_ND_CTX_print(p,    pfx,hLOG) ASE_ND_CTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ASE_ND_CTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FOPCTX                  biu              (4,4)
///     ###
///     * RF64 context for FOP
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 MB                   
///               $RF64MB              MB                REG          
///                                    ###
///                                    * Macroblock-level information; reprogrammed by FIGO at the start of every macroblock
///                                    * [64:447]
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 QPX0                 
///               $RF64QP              QPX0              REG          
///                                    ###
///                                    * QP of current MB
///                                    ###
///     @ 0x00010                      (P)
///     # 0x00010 QPX1                 
///               $RF64QP              QPX1              REG          
///                                    ###
///                                    * QP of current MB
///                                    ###
///     @ 0x00018                      (P)
///     # 0x00018 QPA0                 
///               $RF64QP              QPA0              REG          
///                                    ###
///                                    * QP of even MB of left MB pair
///                                    ###
///     @ 0x00020                      (P)
///     # 0x00020 QPA1                 
///               $RF64QP              QPA1              REG          
///                                    ###
///                                    * QP of odd MB of left MB pair
///                                    ###
///     @ 0x00028                      (P)
///     # 0x00028 QPB0                 
///               $RF64QP              QPB0              REG          
///                                    ###
///                                    * QP of even MB of top MB pair
///                                    ###
///     @ 0x00030                      (P)
///     # 0x00030 QPB1                 
///               $RF64QP              QPB1              REG          
///                                    ###
///                                    * QP of odd MB of top MB pair
///                                    * [448:831]
///                                    ###
///     @ 0x00038                      (P)
///     # 0x00038 BlkX                 
///               $HCTX4x4             BlkX              REG          
///                                    ###
///                                    * Context for current block
///                                    ###
///     @ 0x00048                      (P)
///     # 0x00048 BlkA                 
///               $HCTX4x4             BlkA              REG          
///                                    ###
///                                    * Context for left neighbor
///                                    ###
///     @ 0x00058                      (P)
///     # 0x00058 BlkB                 
///               $HCTX4x4             BlkB              REG          
///                                    ###
///                                    * Context for top block
///                                    ###
///     @ 0x00068                      (P)
///     # 0x00068 BlkC                 
///               $HCTX4x4             BlkC              REG          
///                                    ###
///                                    * Block context used in VC-1 main profile P exception 2.
///                                    * [960:2047]
///                                    ###
///     @ 0x00078                      (P)
///     # 0x00078 RSVD                 
///               $LUT64b              RSVD              REG      [17]
///                                    ###
///                                    * padding to 2048-bit boundary
///                                    * [2048:4095]
///                                    ###
///     @ 0x00100                      (P)
///     # 0x00100 PIC                  
///               $RF64PIC             PIC               REG          
///                                    ###
///                                    * Picture-level Parameters for ALU64 extensions.
///                                    * End RF64CTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FOPCTX
#define h_FOPCTX (){}

    #define     RA_FOPCTX_MB                                   0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_QPX0                                 0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_QPX1                                 0x0010
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_QPA0                                 0x0018
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_QPA1                                 0x0020
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_QPB0                                 0x0028
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_QPB1                                 0x0030
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_BlkX                                 0x0038
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_BlkA                                 0x0048
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_BlkB                                 0x0058
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_BlkC                                 0x0068
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_RSVD                                 0x0078
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCTX_PIC                                  0x0100
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FOPCTX {
    ///////////////////////////////////////////////////////////
              SIE_RF64MB                                       ie_MB;
    ///////////////////////////////////////////////////////////
              SIE_RF64QP                                       ie_QPX0;
    ///////////////////////////////////////////////////////////
              SIE_RF64QP                                       ie_QPX1;
    ///////////////////////////////////////////////////////////
              SIE_RF64QP                                       ie_QPA0;
    ///////////////////////////////////////////////////////////
              SIE_RF64QP                                       ie_QPA1;
    ///////////////////////////////////////////////////////////
              SIE_RF64QP                                       ie_QPB0;
    ///////////////////////////////////////////////////////////
              SIE_RF64QP                                       ie_QPB1;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_BlkX;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_BlkA;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_BlkB;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_BlkC;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[17];
    ///////////////////////////////////////////////////////////
              SIE_RF64PIC                                      ie_PIC;
    ///////////////////////////////////////////////////////////
    } SIE_FOPCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 FOPCTX_drvrd(SIE_FOPCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FOPCTX_drvwr(SIE_FOPCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FOPCTX_reset(SIE_FOPCTX *p);
     SIGN32 FOPCTX_cmp  (SIE_FOPCTX *p, SIE_FOPCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FOPCTX_check(p,pie,pfx,hLOG) FOPCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FOPCTX_print(p,    pfx,hLOG) FOPCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FOPCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE pmvScale                biu              (4,4)
///     ###
///     * Scaling factors for PMV calculation (for AVS)
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 32 scaleA                    
///                                    ###
///                                    * Scaling factor for MVs of block A
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 32 scaleB                    
///                                    ###
///                                    * Scaling factor for MVs of block B
///                                    * [64:127]
///                                    ###
///     @ 0x00008                      (P)
///               %unsigned 32 scaleC                    
///                                    ###
///                                    * Scaling factor for MVs of block C
///                                    ###
///     @ 0x0000C                      (P)
///               %unsigned 32 scaleD                    
///                                    ###
///                                    * Scaling factor for MVs of block D
///                                    * End pmvScale
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:     128b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_pmvScale
#define h_pmvScale (){}

    #define     BA_pmvScale_scaleA                             0x0000
    #define     B16pmvScale_scaleA                             0x0000
    #define   LSb32pmvScale_scaleA                                0
    #define   LSb16pmvScale_scaleA                                0
    #define       bpmvScale_scaleA                             32
    #define   MSK32pmvScale_scaleA                                0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    #define     BA_pmvScale_scaleB                             0x0004
    #define     B16pmvScale_scaleB                             0x0004
    #define   LSb32pmvScale_scaleB                                0
    #define   LSb16pmvScale_scaleB                                0
    #define       bpmvScale_scaleB                             32
    #define   MSK32pmvScale_scaleB                                0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    #define     BA_pmvScale_scaleC                             0x0008
    #define     B16pmvScale_scaleC                             0x0008
    #define   LSb32pmvScale_scaleC                                0
    #define   LSb16pmvScale_scaleC                                0
    #define       bpmvScale_scaleC                             32
    #define   MSK32pmvScale_scaleC                                0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    #define     BA_pmvScale_scaleD                             0x000C
    #define     B16pmvScale_scaleD                             0x000C
    #define   LSb32pmvScale_scaleD                                0
    #define   LSb16pmvScale_scaleD                                0
    #define       bpmvScale_scaleD                             32
    #define   MSK32pmvScale_scaleD                                0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_pmvScale {
    ///////////////////////////////////////////////////////////
    #define   GET32pmvScale_scaleA(r32)                        _BFGET_(r32,31, 0)
    #define   SET32pmvScale_scaleA(r32,v)                      _BFSET_(r32,31, 0,v)

            UNSG32 u_scaleA                                    : 32;
    ///////////////////////////////////////////////////////////
    #define   GET32pmvScale_scaleB(r32)                        _BFGET_(r32,31, 0)
    #define   SET32pmvScale_scaleB(r32,v)                      _BFSET_(r32,31, 0,v)

            UNSG32 u_scaleB                                    : 32;
    ///////////////////////////////////////////////////////////
    #define   GET32pmvScale_scaleC(r32)                        _BFGET_(r32,31, 0)
    #define   SET32pmvScale_scaleC(r32,v)                      _BFSET_(r32,31, 0,v)

            UNSG32 u_scaleC                                    : 32;
    ///////////////////////////////////////////////////////////
    #define   GET32pmvScale_scaleD(r32)                        _BFGET_(r32,31, 0)
    #define   SET32pmvScale_scaleD(r32,v)                      _BFSET_(r32,31, 0,v)

            UNSG32 u_scaleD                                    : 32;
    ///////////////////////////////////////////////////////////
    } SIE_pmvScale;

    ///////////////////////////////////////////////////////////
     SIGN32 pmvScale_drvrd(SIE_pmvScale *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 pmvScale_drvwr(SIE_pmvScale *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void pmvScale_reset(SIE_pmvScale *p);
     SIGN32 pmvScale_cmp  (SIE_pmvScale *p, SIE_pmvScale *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define pmvScale_check(p,pie,pfx,hLOG) pmvScale_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define pmvScale_print(p,    pfx,hLOG) pmvScale_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: pmvScale
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE PMVCTX                  biu              (4,4)
///     ###
///     * RF64 context for PMV
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 MB                   
///               $RF64MB              MB                REG          
///                                    ###
///                                    * Macroblock-level information; reprogrammed by FIGO at the start of every macroblock
///                                    * [64:447]
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 RSVD0                
///               $LUT64b              RSVD0             REG       [6]
///                                    ###
///                                    * padding to align block-level context
///                                    * [448:1087]
///                                    ###
///     @ 0x00038                      (P)
///     # 0x00038 BlkX                 
///               $FCTX                BlkX              REG          
///                                    ###
///                                    * Context for current block
///                                    ###
///     @ 0x00040                      (P)
///     # 0x00040 ChromaMV             
///               $MV                  ChromaMV          REG          
///                                    ###
///                                    * MPEG-4 chroma MV
///                                    ###
///     @ 0x00044                      (P)
///               %unsigned 32 RSVDX                     
///                                    ###
///                                    * padding to 128-bit
///                                    ###
///     @ 0x00048                      (P)
///     # 0x00048 BlkA                 
///               $FCTX                BlkA              REG          
///                                    ###
///                                    * Context for left neighbor
///                                    ###
///     @ 0x00050                      (P)
///     # 0x00050 BlkD                 
///               $FCTX                BlkD              REG          
///                                    ###
///                                    * Context for upper-left neighbor
///                                    ###
///     @ 0x00058                      (P)
///     # 0x00058 BlkB                 
///               $FCTX                BlkB              REG          
///                                    ###
///                                    * Context for top neighbor
///                                    ###
///     @ 0x00060                      (P)
///     # 0x00060 BlkC                 
///               $FCTX                BlkC              REG          
///                                    ###
///                                    * Context for upper-right neighbor
///                                    ###
///     @ 0x00068                      (P)
///     # 0x00068 BlkA1                
///               $FCTX                BlkA1             REG          
///                                    ###
///                                    * Context for 2nd left neighbor, interlace frame
///                                    ###
///     @ 0x00070                      (P)
///     # 0x00070 BlkD1                
///               $FCTX                BlkD1             REG          
///                                    ###
///                                    * Context for 2nd upper-left neighbor, interlace frame
///                                    ###
///     @ 0x00078                      (P)
///     # 0x00078 BlkB1                
///               $FCTX                BlkB1             REG          
///                                    ###
///                                    * Context for 2nd top neighbor, interlace frame
///                                    ###
///     @ 0x00080                      (P)
///     # 0x00080 BlkC1                
///               $FCTX                BlkC1             REG          
///                                    ###
///                                    * Context for 2nd up-right neighbor, interlace frame only
///                                    * [1088:1727]
///                                    ###
///     @ 0x00088                      (P)
///               %unsigned 32 pmvScale_0i               
///               %unsigned 32 pmvScale_1i               
///               %unsigned 32 pmvScale_2i               
///               %unsigned 32 pmvScale_3i               
///               %unsigned 32 pmvScale_4i               
///               %unsigned 32 pmvScale_5i               
///               %unsigned 32 pmvScale_6i               
///               %unsigned 32 pmvScale_7i               
///               %unsigned 32 pmvScale_8i               
///               %unsigned 32 pmvScale_9i               
///               %unsigned 32 pmvScale_10i              
///               %unsigned 32 pmvScale_11i              
///               %unsigned 32 pmvScale_12i              
///               %unsigned 32 pmvScale_13i              
///               %unsigned 32 pmvScale_14i              
///               %unsigned 32 pmvScale_15i              
///               %unsigned 32 pmvScale_16i              
///               %unsigned 32 pmvScale_17i              
///               %unsigned 32 pmvScale_18i              
///               %unsigned 32 pmvScale_19i              
///                                    ###
///                                    * Scale candidates for PMV.
///                                    * [1727:2047]
///                                    ###
///     @ 0x000D8                      (P)
///     # 0x000D8 RSVD                 
///               $LUT64b              RSVD              REG       [5]
///                                    ###
///                                    * padding to 2048-bit boundary
///                                    * [2048:4095]
///                                    ###
///     @ 0x00100                      (P)
///     # 0x00100 PIC                  
///               $RF64PIC             PIC               REG          
///                                    ###
///                                    * Picture-level Parameters for ALU64 extensions.
///                                    * End PMVCTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_PMVCTX
#define h_PMVCTX (){}

    #define     RA_PMVCTX_MB                                   0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_RSVD0                                0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_BlkX                                 0x0038
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_ChromaMV                             0x0040
    ///////////////////////////////////////////////////////////

    #define     BA_PMVCTX_RSVDX                                0x0044
    #define     B16PMVCTX_RSVDX                                0x0044
    #define   LSb32PMVCTX_RSVDX                                   0
    #define   LSb16PMVCTX_RSVDX                                   0
    #define       bPMVCTX_RSVDX                                32
    #define   MSK32PMVCTX_RSVDX                                   0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_BlkA                                 0x0048
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_BlkD                                 0x0050
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_BlkB                                 0x0058
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_BlkC                                 0x0060
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_BlkA1                                0x0068
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_BlkD1                                0x0070
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_BlkB1                                0x0078
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_BlkC1                                0x0080
    ///////////////////////////////////////////////////////////

    #define     BA_PMVCTX_pmvScale_0i                          0x0088
    #define     B16PMVCTX_pmvScale_0i                          0x0088
    #define   LSb32PMVCTX_pmvScale_0i                             0
    #define   LSb16PMVCTX_pmvScale_0i                             0
    #define       bPMVCTX_pmvScale_0i                          32
    #define   MSK32PMVCTX_pmvScale_0i                             0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_1i                          0x008C
    #define     B16PMVCTX_pmvScale_1i                          0x008C
    #define   LSb32PMVCTX_pmvScale_1i                             0
    #define   LSb16PMVCTX_pmvScale_1i                             0
    #define       bPMVCTX_pmvScale_1i                          32
    #define   MSK32PMVCTX_pmvScale_1i                             0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_2i                          0x0090
    #define     B16PMVCTX_pmvScale_2i                          0x0090
    #define   LSb32PMVCTX_pmvScale_2i                             0
    #define   LSb16PMVCTX_pmvScale_2i                             0
    #define       bPMVCTX_pmvScale_2i                          32
    #define   MSK32PMVCTX_pmvScale_2i                             0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_3i                          0x0094
    #define     B16PMVCTX_pmvScale_3i                          0x0094
    #define   LSb32PMVCTX_pmvScale_3i                             0
    #define   LSb16PMVCTX_pmvScale_3i                             0
    #define       bPMVCTX_pmvScale_3i                          32
    #define   MSK32PMVCTX_pmvScale_3i                             0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_4i                          0x0098
    #define     B16PMVCTX_pmvScale_4i                          0x0098
    #define   LSb32PMVCTX_pmvScale_4i                             0
    #define   LSb16PMVCTX_pmvScale_4i                             0
    #define       bPMVCTX_pmvScale_4i                          32
    #define   MSK32PMVCTX_pmvScale_4i                             0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_5i                          0x009C
    #define     B16PMVCTX_pmvScale_5i                          0x009C
    #define   LSb32PMVCTX_pmvScale_5i                             0
    #define   LSb16PMVCTX_pmvScale_5i                             0
    #define       bPMVCTX_pmvScale_5i                          32
    #define   MSK32PMVCTX_pmvScale_5i                             0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_6i                          0x00A0
    #define     B16PMVCTX_pmvScale_6i                          0x00A0
    #define   LSb32PMVCTX_pmvScale_6i                             0
    #define   LSb16PMVCTX_pmvScale_6i                             0
    #define       bPMVCTX_pmvScale_6i                          32
    #define   MSK32PMVCTX_pmvScale_6i                             0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_7i                          0x00A4
    #define     B16PMVCTX_pmvScale_7i                          0x00A4
    #define   LSb32PMVCTX_pmvScale_7i                             0
    #define   LSb16PMVCTX_pmvScale_7i                             0
    #define       bPMVCTX_pmvScale_7i                          32
    #define   MSK32PMVCTX_pmvScale_7i                             0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_8i                          0x00A8
    #define     B16PMVCTX_pmvScale_8i                          0x00A8
    #define   LSb32PMVCTX_pmvScale_8i                             0
    #define   LSb16PMVCTX_pmvScale_8i                             0
    #define       bPMVCTX_pmvScale_8i                          32
    #define   MSK32PMVCTX_pmvScale_8i                             0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_9i                          0x00AC
    #define     B16PMVCTX_pmvScale_9i                          0x00AC
    #define   LSb32PMVCTX_pmvScale_9i                             0
    #define   LSb16PMVCTX_pmvScale_9i                             0
    #define       bPMVCTX_pmvScale_9i                          32
    #define   MSK32PMVCTX_pmvScale_9i                             0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_10i                         0x00B0
    #define     B16PMVCTX_pmvScale_10i                         0x00B0
    #define   LSb32PMVCTX_pmvScale_10i                            0
    #define   LSb16PMVCTX_pmvScale_10i                            0
    #define       bPMVCTX_pmvScale_10i                         32
    #define   MSK32PMVCTX_pmvScale_10i                            0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_11i                         0x00B4
    #define     B16PMVCTX_pmvScale_11i                         0x00B4
    #define   LSb32PMVCTX_pmvScale_11i                            0
    #define   LSb16PMVCTX_pmvScale_11i                            0
    #define       bPMVCTX_pmvScale_11i                         32
    #define   MSK32PMVCTX_pmvScale_11i                            0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_12i                         0x00B8
    #define     B16PMVCTX_pmvScale_12i                         0x00B8
    #define   LSb32PMVCTX_pmvScale_12i                            0
    #define   LSb16PMVCTX_pmvScale_12i                            0
    #define       bPMVCTX_pmvScale_12i                         32
    #define   MSK32PMVCTX_pmvScale_12i                            0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_13i                         0x00BC
    #define     B16PMVCTX_pmvScale_13i                         0x00BC
    #define   LSb32PMVCTX_pmvScale_13i                            0
    #define   LSb16PMVCTX_pmvScale_13i                            0
    #define       bPMVCTX_pmvScale_13i                         32
    #define   MSK32PMVCTX_pmvScale_13i                            0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_14i                         0x00C0
    #define     B16PMVCTX_pmvScale_14i                         0x00C0
    #define   LSb32PMVCTX_pmvScale_14i                            0
    #define   LSb16PMVCTX_pmvScale_14i                            0
    #define       bPMVCTX_pmvScale_14i                         32
    #define   MSK32PMVCTX_pmvScale_14i                            0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_15i                         0x00C4
    #define     B16PMVCTX_pmvScale_15i                         0x00C4
    #define   LSb32PMVCTX_pmvScale_15i                            0
    #define   LSb16PMVCTX_pmvScale_15i                            0
    #define       bPMVCTX_pmvScale_15i                         32
    #define   MSK32PMVCTX_pmvScale_15i                            0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_16i                         0x00C8
    #define     B16PMVCTX_pmvScale_16i                         0x00C8
    #define   LSb32PMVCTX_pmvScale_16i                            0
    #define   LSb16PMVCTX_pmvScale_16i                            0
    #define       bPMVCTX_pmvScale_16i                         32
    #define   MSK32PMVCTX_pmvScale_16i                            0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_17i                         0x00CC
    #define     B16PMVCTX_pmvScale_17i                         0x00CC
    #define   LSb32PMVCTX_pmvScale_17i                            0
    #define   LSb16PMVCTX_pmvScale_17i                            0
    #define       bPMVCTX_pmvScale_17i                         32
    #define   MSK32PMVCTX_pmvScale_17i                            0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_18i                         0x00D0
    #define     B16PMVCTX_pmvScale_18i                         0x00D0
    #define   LSb32PMVCTX_pmvScale_18i                            0
    #define   LSb16PMVCTX_pmvScale_18i                            0
    #define       bPMVCTX_pmvScale_18i                         32
    #define   MSK32PMVCTX_pmvScale_18i                            0xFFFFFFFF

    #define     BA_PMVCTX_pmvScale_19i                         0x00D4
    #define     B16PMVCTX_pmvScale_19i                         0x00D4
    #define   LSb32PMVCTX_pmvScale_19i                            0
    #define   LSb16PMVCTX_pmvScale_19i                            0
    #define       bPMVCTX_pmvScale_19i                         32
    #define   MSK32PMVCTX_pmvScale_19i                            0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_RSVD                                 0x00D8
    ///////////////////////////////////////////////////////////
    #define     RA_PMVCTX_PIC                                  0x0100
    ///////////////////////////////////////////////////////////

    typedef struct SIE_PMVCTX {
    ///////////////////////////////////////////////////////////
              SIE_RF64MB                                       ie_MB;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD0[6];
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_BlkX;
    ///////////////////////////////////////////////////////////
              SIE_MV                                           ie_ChromaMV;
    ///////////////////////////////////////////////////////////
    #define   GET32PMVCTX_RSVDX(r32)                           _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_RSVDX(r32,v)                         _BFSET_(r32,31, 0,v)

            UNSG32 u_RSVDX                                     : 32;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_BlkA;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_BlkD;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_BlkB;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_BlkC;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_BlkA1;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_BlkD1;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_BlkB1;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_BlkC1;
    ///////////////////////////////////////////////////////////
    #define   GET32PMVCTX_pmvScale_0i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_0i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_0i                               : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_1i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_1i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_1i                               : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_2i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_2i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_2i                               : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_3i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_3i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_3i                               : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_4i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_4i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_4i                               : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_5i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_5i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_5i                               : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_6i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_6i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_6i                               : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_7i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_7i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_7i                               : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_8i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_8i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_8i                               : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_9i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_9i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_9i                               : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_10i(r32)                    _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_10i(r32,v)                  _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_10i                              : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_11i(r32)                    _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_11i(r32,v)                  _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_11i                              : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_12i(r32)                    _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_12i(r32,v)                  _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_12i                              : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_13i(r32)                    _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_13i(r32,v)                  _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_13i                              : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_14i(r32)                    _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_14i(r32,v)                  _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_14i                              : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_15i(r32)                    _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_15i(r32,v)                  _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_15i                              : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_16i(r32)                    _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_16i(r32,v)                  _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_16i                              : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_17i(r32)                    _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_17i(r32,v)                  _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_17i                              : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_18i(r32)                    _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_18i(r32,v)                  _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_18i                              : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32PMVCTX_pmvScale_19i(r32)                    _BFGET_(r32,31, 0)
    #define   SET32PMVCTX_pmvScale_19i(r32,v)                  _BFSET_(r32,31, 0,v)

            UNSG32 u_pmvScale_19i                              : 32;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[5];
    ///////////////////////////////////////////////////////////
              SIE_RF64PIC                                      ie_PIC;
    ///////////////////////////////////////////////////////////
    } SIE_PMVCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 PMVCTX_drvrd(SIE_PMVCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 PMVCTX_drvwr(SIE_PMVCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void PMVCTX_reset(SIE_PMVCTX *p);
     SIGN32 PMVCTX_cmp  (SIE_PMVCTX *p, SIE_PMVCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define PMVCTX_check(p,pie,pfx,hLOG) PMVCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define PMVCTX_print(p,    pfx,hLOG) PMVCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: PMVCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dirMvCTX                biu              (4,4)
///     ###
///     * RF64 context for direct mode MV calculation
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 MB                   
///               $RF64MB              MB                REG          
///                                    ###
///                                    * Reserved for RF64MB
///                                    * [64:447]
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 RSVD0                
///               $LUT64b              RSVD0             REG       [6]
///                                    ###
///                                    * padding to align block-level context
///                                    * [448:575]
///                                    ###
///     @ 0x00038                      (P)
///     # 0x00038 BlkX                 
///               $HCTX4x4             BlkX              REG          
///                                    ###
///                                    * Context of the current block; 128-bit.
///                                    * [576:639]
///                                    ###
///     @ 0x00048                      (P)
///     # 0x00048 BlkCol               
///               $FCTX                BlkCol            REG          
///                                    ###
///                                    * Context of co-located block; 64-bit.
///                                    * [640:703]
///                                    ###
///     @ 0x00050                      (P)
///     # 0x00050 mvScale              
///               $dirMvScale          mvScale           REG          
///                                    ###
///                                    * MV scaling factor for temporal direct mode; 64 bits
///                                    * [704:1919]
///                                    ###
///     @ 0x00058                      (P)
///     # 0x00058 RSVD                 
///               $LUT64b              RSVD              REG      [19]
///                                    ###
///                                    * padding to 2048-bit boundary
///                                    * [1920:2047]
///                                    ###
///     @ 0x000F0                      (P)
///     # 0x000F0 MbPMV                
///               $HCTX4x4             MbPMV             REG          
///                                    ###
///                                    * Macroblock PMV, for spatial direct mode only
///                                    * [2048:4095]
///                                    ###
///     @ 0x00100                      (P)
///     # 0x00100 PIC                  
///               $RF64PIC             PIC               REG          
///                                    ###
///                                    * Picture-level Parameters for ALU64 extensions.
///                                    * End dirMvCTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dirMvCTX
#define h_dirMvCTX (){}

    #define     RA_dirMvCTX_MB                                 0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_dirMvCTX_RSVD0                              0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_dirMvCTX_BlkX                               0x0038
    ///////////////////////////////////////////////////////////
    #define     RA_dirMvCTX_BlkCol                             0x0048
    ///////////////////////////////////////////////////////////
    #define     RA_dirMvCTX_mvScale                            0x0050
    ///////////////////////////////////////////////////////////
    #define     RA_dirMvCTX_RSVD                               0x0058
    ///////////////////////////////////////////////////////////
    #define     RA_dirMvCTX_MbPMV                              0x00F0
    ///////////////////////////////////////////////////////////
    #define     RA_dirMvCTX_PIC                                0x0100
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dirMvCTX {
    ///////////////////////////////////////////////////////////
              SIE_RF64MB                                       ie_MB;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD0[6];
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_BlkX;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_BlkCol;
    ///////////////////////////////////////////////////////////
              SIE_dirMvScale                                   ie_mvScale;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[19];
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_MbPMV;
    ///////////////////////////////////////////////////////////
              SIE_RF64PIC                                      ie_PIC;
    ///////////////////////////////////////////////////////////
    } SIE_dirMvCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 dirMvCTX_drvrd(SIE_dirMvCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dirMvCTX_drvwr(SIE_dirMvCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dirMvCTX_reset(SIE_dirMvCTX *p);
     SIGN32 dirMvCTX_cmp  (SIE_dirMvCTX *p, SIE_dirMvCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dirMvCTX_check(p,pie,pfx,hLOG) dirMvCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dirMvCTX_print(p,    pfx,hLOG) dirMvCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dirMvCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vcMsgCTX                biu              (4,4)
///     ###
///     * RF64 context for the vcMsg extension
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 MB                   
///               $RF64MB              MB                REG          
///                                    ###
///                                    * 64b macroblock-level parameter
///                                    * [64:447]
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 RSVD0                
///               $LUT64b              RSVD0             REG       [6]
///                                    ###
///                                    * padding to align block-level context
///                                    * [448:511]
///                                    ###
///     @ 0x00038                      (P)
///     # 0x00038 blkX                 
///               $FCTX                blkX              REG          
///                                    ###
///                                    * Motion information context of current partition
///                                    * [512:2047]
///                                    ###
///     @ 0x00040                      (P)
///     # 0x00040 RSVD                 
///               $LUT64b              RSVD              REG      [24]
///                                    ###
///                                    * padding to 2048-bit boundary
///                                    * [2048:4095]
///                                    ###
///     @ 0x00100                      (P)
///     # 0x00100 PIC                  
///               $RF64PIC             PIC               REG          
///                                    ###
///                                    * Picture-level Parameters for ALU64 extensions.
///                                    * End vcMsgCTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vcMsgCTX
#define h_vcMsgCTX (){}

    #define     RA_vcMsgCTX_MB                                 0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_vcMsgCTX_RSVD0                              0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_vcMsgCTX_blkX                               0x0038
    ///////////////////////////////////////////////////////////
    #define     RA_vcMsgCTX_RSVD                               0x0040
    ///////////////////////////////////////////////////////////
    #define     RA_vcMsgCTX_PIC                                0x0100
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vcMsgCTX {
    ///////////////////////////////////////////////////////////
              SIE_RF64MB                                       ie_MB;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD0[6];
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_blkX;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[24];
    ///////////////////////////////////////////////////////////
              SIE_RF64PIC                                      ie_PIC;
    ///////////////////////////////////////////////////////////
    } SIE_vcMsgCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 vcMsgCTX_drvrd(SIE_vcMsgCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vcMsgCTX_drvwr(SIE_vcMsgCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vcMsgCTX_reset(SIE_vcMsgCTX *p);
     SIGN32 vcMsgCTX_cmp  (SIE_vcMsgCTX *p, SIE_vcMsgCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vcMsgCTX_check(p,pie,pfx,hLOG) vcMsgCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vcMsgCTX_print(p,    pfx,hLOG) vcMsgCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vcMsgCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vldCTX                  biu              (4,4)
///     ###
///     * RF64 context for vld
///     * [0:63]
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 MB                   
///               $RF64MB              MB                REG          
///                                    ###
///                                    * Macroblock-level information; reprogrammed by FIGO at the start of every macroblock
///                                    * [64:2047]
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 RSVD                 
///               $LUT64b              RSVD              REG      [31]
///                                    ###
///                                    * padding to 2048-bit boundary
///                                    * [2048:4095]
///                                    ###
///     @ 0x00100                      (P)
///     # 0x00100 PIC                  
///               $RF64PIC             PIC               REG          
///                                    ###
///                                    * Picture-level Parameters for ALU64 extensions.
///                                    * End vldCTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vldCTX
#define h_vldCTX (){}

    #define     RA_vldCTX_MB                                   0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_vldCTX_RSVD                                 0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_vldCTX_PIC                                  0x0100
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vldCTX {
    ///////////////////////////////////////////////////////////
              SIE_RF64MB                                       ie_MB;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RSVD[31];
    ///////////////////////////////////////////////////////////
              SIE_RF64PIC                                      ie_PIC;
    ///////////////////////////////////////////////////////////
    } SIE_vldCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 vldCTX_drvrd(SIE_vldCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vldCTX_drvwr(SIE_vldCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vldCTX_reset(SIE_vldCTX *p);
     SIGN32 vldCTX_cmp  (SIE_vldCTX *p, SIE_vldCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vldCTX_check(p,pie,pfx,hLOG) vldCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vldCTX_print(p,    pfx,hLOG) vldCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vldCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ClkRstBiu               biu              (4,4)
///     ###
///     * Common Biu Unit used for block level reset and clock gating control
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 CRCtl                (P)
///               ###
///               * Clock Reset Control Register
///               ###
///               %unsigned 1  rst                       0x1
///                                    ###
///                                    * Software reset. The reset signal is active low.
///                                    * 0 -> the block will be under reset.
///                                    * 1-> the block will be out of reset.
///                                    ###
///               %unsigned 1  swClk_en                  0x1
///                                    ###
///                                    * Software controlled clock enable.
///                                    * 0 -> The corresponding block will be disabled (gated)
///                                    * 1 -> The corresponding clock will be enabled (ungated)
///                                    ###
///               %unsigned 1  dyCG_en                   0x1
///                                    ###
///                                    * This is used to control (enalbe/disable) the HW self dynamic clock gating unit.
///                                    * 0 -> the dynamic clock gating will be disabled (the clock can not be turned off by dynamic clock gating unit).
///                                    * 1 -> the dynamic clock gating will be enabled (the clock can be dynamically turned on/off by the dynamic clock control unit).
///                                    * Here is the glue logic to generate the block level clock enable signal.
///                                    * ClkEn = swClk_en & (~dyCG_en | dyClk_en).
///                                    * swClk_en and dyCG_en are from this biu, and dyClk_en is the signal generated by the dynamic clock control unit.
///                                    * End of ClkRstBiu
///                                    ###
///               %%        29         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       3b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ClkRstBiu
#define h_ClkRstBiu (){}

    #define     RA_ClkRstBiu_CRCtl                             0x0000

    #define     BA_ClkRstBiu_CRCtl_rst                         0x0000
    #define     B16ClkRstBiu_CRCtl_rst                         0x0000
    #define   LSb32ClkRstBiu_CRCtl_rst                            0
    #define   LSb16ClkRstBiu_CRCtl_rst                            0
    #define       bClkRstBiu_CRCtl_rst                         1
    #define   MSK32ClkRstBiu_CRCtl_rst                            0x00000001

    #define     BA_ClkRstBiu_CRCtl_swClk_en                    0x0000
    #define     B16ClkRstBiu_CRCtl_swClk_en                    0x0000
    #define   LSb32ClkRstBiu_CRCtl_swClk_en                       1
    #define   LSb16ClkRstBiu_CRCtl_swClk_en                       1
    #define       bClkRstBiu_CRCtl_swClk_en                    1
    #define   MSK32ClkRstBiu_CRCtl_swClk_en                       0x00000002

    #define     BA_ClkRstBiu_CRCtl_dyCG_en                     0x0000
    #define     B16ClkRstBiu_CRCtl_dyCG_en                     0x0000
    #define   LSb32ClkRstBiu_CRCtl_dyCG_en                        2
    #define   LSb16ClkRstBiu_CRCtl_dyCG_en                        2
    #define       bClkRstBiu_CRCtl_dyCG_en                     1
    #define   MSK32ClkRstBiu_CRCtl_dyCG_en                        0x00000004
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ClkRstBiu {
    ///////////////////////////////////////////////////////////
    #define   GET32ClkRstBiu_CRCtl_rst(r32)                    _BFGET_(r32, 0, 0)
    #define   SET32ClkRstBiu_CRCtl_rst(r32,v)                  _BFSET_(r32, 0, 0,v)
    #define   GET16ClkRstBiu_CRCtl_rst(r16)                    _BFGET_(r16, 0, 0)
    #define   SET16ClkRstBiu_CRCtl_rst(r16,v)                  _BFSET_(r16, 0, 0,v)

    #define   GET32ClkRstBiu_CRCtl_swClk_en(r32)               _BFGET_(r32, 1, 1)
    #define   SET32ClkRstBiu_CRCtl_swClk_en(r32,v)             _BFSET_(r32, 1, 1,v)
    #define   GET16ClkRstBiu_CRCtl_swClk_en(r16)               _BFGET_(r16, 1, 1)
    #define   SET16ClkRstBiu_CRCtl_swClk_en(r16,v)             _BFSET_(r16, 1, 1,v)

    #define   GET32ClkRstBiu_CRCtl_dyCG_en(r32)                _BFGET_(r32, 2, 2)
    #define   SET32ClkRstBiu_CRCtl_dyCG_en(r32,v)              _BFSET_(r32, 2, 2,v)
    #define   GET16ClkRstBiu_CRCtl_dyCG_en(r16)                _BFGET_(r16, 2, 2)
    #define   SET16ClkRstBiu_CRCtl_dyCG_en(r16,v)              _BFSET_(r16, 2, 2,v)

    #define     w32ClkRstBiu_CRCtl                             {\
            UNSG32 uCRCtl_rst                                  :  1;\
            UNSG32 uCRCtl_swClk_en                             :  1;\
            UNSG32 uCRCtl_dyCG_en                              :  1;\
            UNSG32 RSVDx0_b3                                   : 29;\
          }
    union { UNSG32 u32ClkRstBiu_CRCtl;
            struct w32ClkRstBiu_CRCtl;
          };
    ///////////////////////////////////////////////////////////
    } SIE_ClkRstBiu;

    typedef union  T32ClkRstBiu_CRCtl
          { UNSG32 u32;
            struct w32ClkRstBiu_CRCtl;
                 } T32ClkRstBiu_CRCtl;
    ///////////////////////////////////////////////////////////

    typedef union  TClkRstBiu_CRCtl
          { UNSG32 u32[1];
            struct {
            struct w32ClkRstBiu_CRCtl;
                   };
                 } TClkRstBiu_CRCtl;

    ///////////////////////////////////////////////////////////
     SIGN32 ClkRstBiu_drvrd(SIE_ClkRstBiu *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ClkRstBiu_drvwr(SIE_ClkRstBiu *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ClkRstBiu_reset(SIE_ClkRstBiu *p);
     SIGN32 ClkRstBiu_cmp  (SIE_ClkRstBiu *p, SIE_ClkRstBiu *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ClkRstBiu_check(p,pie,pfx,hLOG) ClkRstBiu_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ClkRstBiu_print(p,    pfx,hLOG) ClkRstBiu_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ClkRstBiu
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE PA_wCh                                   (4,4)
///     ###
///     * Write channel definition for the premium access BIU
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 WAdr                 (RW-)
///               %unsigned 32 val                       
///     @ 0x00004 W8b                  (W-)
///               %unsigned 8  val                       
///                                    ###
///                                    * write one byte to the write channel
///                                    ###
///               %%        24         # Stuffing bits...
///     @ 0x00008 W16b                 (W-)
///               %unsigned 16 val                       
///                                    ###
///                                    * write two bytes to the write channel
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x0000C W32b                 (W-)
///               %unsigned 32 val                       
///                                    ###
///                                    * write four bytes to the write channel
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:      88b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_PA_wCh
#define h_PA_wCh (){}

    #define     RA_PA_wCh_WAdr                                 0x0000

    #define     BA_PA_wCh_WAdr_val                             0x0000
    #define     B16PA_wCh_WAdr_val                             0x0000
    #define   LSb32PA_wCh_WAdr_val                                0
    #define   LSb16PA_wCh_WAdr_val                                0
    #define       bPA_wCh_WAdr_val                             32
    #define   MSK32PA_wCh_WAdr_val                                0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_PA_wCh_W8b                                  0x0004

    #define     BA_PA_wCh_W8b_val                              0x0004
    #define     B16PA_wCh_W8b_val                              0x0004
    #define   LSb32PA_wCh_W8b_val                                 0
    #define   LSb16PA_wCh_W8b_val                                 0
    #define       bPA_wCh_W8b_val                              8
    #define   MSK32PA_wCh_W8b_val                                 0x000000FF
    ///////////////////////////////////////////////////////////
    #define     RA_PA_wCh_W16b                                 0x0008

    #define     BA_PA_wCh_W16b_val                             0x0008
    #define     B16PA_wCh_W16b_val                             0x0008
    #define   LSb32PA_wCh_W16b_val                                0
    #define   LSb16PA_wCh_W16b_val                                0
    #define       bPA_wCh_W16b_val                             16
    #define   MSK32PA_wCh_W16b_val                                0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_PA_wCh_W32b                                 0x000C

    #define     BA_PA_wCh_W32b_val                             0x000C
    #define     B16PA_wCh_W32b_val                             0x000C
    #define   LSb32PA_wCh_W32b_val                                0
    #define   LSb16PA_wCh_W32b_val                                0
    #define       bPA_wCh_W32b_val                             32
    #define   MSK32PA_wCh_W32b_val                                0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_PA_wCh {
    ///////////////////////////////////////////////////////////
    #define   GET32PA_wCh_WAdr_val(r32)                        _BFGET_(r32,31, 0)
    #define   SET32PA_wCh_WAdr_val(r32,v)                      _BFSET_(r32,31, 0,v)

    #define     w32PA_wCh_WAdr                                 {\
            UNSG32 uWAdr_val                                   : 32;\
          }
    union { UNSG32 u32PA_wCh_WAdr;
            struct w32PA_wCh_WAdr;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32PA_wCh_W8b_val(r32)                         _BFGET_(r32, 7, 0)
    #define   SET32PA_wCh_W8b_val(r32,v)                       _BFSET_(r32, 7, 0,v)
    #define   GET16PA_wCh_W8b_val(r16)                         _BFGET_(r16, 7, 0)
    #define   SET16PA_wCh_W8b_val(r16,v)                       _BFSET_(r16, 7, 0,v)

    #define     w32PA_wCh_W8b                                  {\
            UNSG32 uW8b_val                                    :  8;\
            UNSG32 RSVDx4_b8                                   : 24;\
          }
    union { UNSG32 u32PA_wCh_W8b;
            struct w32PA_wCh_W8b;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32PA_wCh_W16b_val(r32)                        _BFGET_(r32,15, 0)
    #define   SET32PA_wCh_W16b_val(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16PA_wCh_W16b_val(r16)                        _BFGET_(r16,15, 0)
    #define   SET16PA_wCh_W16b_val(r16,v)                      _BFSET_(r16,15, 0,v)

    #define     w32PA_wCh_W16b                                 {\
            UNSG32 uW16b_val                                   : 16;\
            UNSG32 RSVDx8_b16                                  : 16;\
          }
    union { UNSG32 u32PA_wCh_W16b;
            struct w32PA_wCh_W16b;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32PA_wCh_W32b_val(r32)                        _BFGET_(r32,31, 0)
    #define   SET32PA_wCh_W32b_val(r32,v)                      _BFSET_(r32,31, 0,v)

    #define     w32PA_wCh_W32b                                 {\
            UNSG32 uW32b_val                                   : 32;\
          }
    union { UNSG32 u32PA_wCh_W32b;
            struct w32PA_wCh_W32b;
          };
    ///////////////////////////////////////////////////////////
    } SIE_PA_wCh;

    typedef union  T32PA_wCh_WAdr
          { UNSG32 u32;
            struct w32PA_wCh_WAdr;
                 } T32PA_wCh_WAdr;
    typedef union  T32PA_wCh_W8b
          { UNSG32 u32;
            struct w32PA_wCh_W8b;
                 } T32PA_wCh_W8b;
    typedef union  T32PA_wCh_W16b
          { UNSG32 u32;
            struct w32PA_wCh_W16b;
                 } T32PA_wCh_W16b;
    typedef union  T32PA_wCh_W32b
          { UNSG32 u32;
            struct w32PA_wCh_W32b;
                 } T32PA_wCh_W32b;
    ///////////////////////////////////////////////////////////

    typedef union  TPA_wCh_WAdr
          { UNSG32 u32[1];
            struct {
            struct w32PA_wCh_WAdr;
                   };
                 } TPA_wCh_WAdr;
    typedef union  TPA_wCh_W8b
          { UNSG32 u32[1];
            struct {
            struct w32PA_wCh_W8b;
                   };
                 } TPA_wCh_W8b;
    typedef union  TPA_wCh_W16b
          { UNSG32 u32[1];
            struct {
            struct w32PA_wCh_W16b;
                   };
                 } TPA_wCh_W16b;
    typedef union  TPA_wCh_W32b
          { UNSG32 u32[1];
            struct {
            struct w32PA_wCh_W32b;
                   };
                 } TPA_wCh_W32b;

    ///////////////////////////////////////////////////////////
     SIGN32 PA_wCh_drvrd(SIE_PA_wCh *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 PA_wCh_drvwr(SIE_PA_wCh *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void PA_wCh_reset(SIE_PA_wCh *p);
     SIGN32 PA_wCh_cmp  (SIE_PA_wCh *p, SIE_PA_wCh *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define PA_wCh_check(p,pie,pfx,hLOG) PA_wCh_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define PA_wCh_print(p,    pfx,hLOG) PA_wCh_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: PA_wCh
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE PA_rCh                                   (4,4)
///     ###
///     * Read channel definition for the premium access BIU
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 RAdr                 (RW-)
///               %unsigned 32 val                       
///     @ 0x00004 R32b                 (R-)
///               %unsigned 32 val                       
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_PA_rCh
#define h_PA_rCh (){}

    #define     RA_PA_rCh_RAdr                                 0x0000

    #define     BA_PA_rCh_RAdr_val                             0x0000
    #define     B16PA_rCh_RAdr_val                             0x0000
    #define   LSb32PA_rCh_RAdr_val                                0
    #define   LSb16PA_rCh_RAdr_val                                0
    #define       bPA_rCh_RAdr_val                             32
    #define   MSK32PA_rCh_RAdr_val                                0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_PA_rCh_R32b                                 0x0004

    #define     BA_PA_rCh_R32b_val                             0x0004
    #define     B16PA_rCh_R32b_val                             0x0004
    #define   LSb32PA_rCh_R32b_val                                0
    #define   LSb16PA_rCh_R32b_val                                0
    #define       bPA_rCh_R32b_val                             32
    #define   MSK32PA_rCh_R32b_val                                0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_PA_rCh {
    ///////////////////////////////////////////////////////////
    #define   GET32PA_rCh_RAdr_val(r32)                        _BFGET_(r32,31, 0)
    #define   SET32PA_rCh_RAdr_val(r32,v)                      _BFSET_(r32,31, 0,v)

    #define     w32PA_rCh_RAdr                                 {\
            UNSG32 uRAdr_val                                   : 32;\
          }
    union { UNSG32 u32PA_rCh_RAdr;
            struct w32PA_rCh_RAdr;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32PA_rCh_R32b_val(r32)                        _BFGET_(r32,31, 0)
    #define   SET32PA_rCh_R32b_val(r32,v)                      _BFSET_(r32,31, 0,v)

    #define     w32PA_rCh_R32b                                 {\
            UNSG32 uR32b_val                                   : 32;\
          }
    union { UNSG32 u32PA_rCh_R32b;
            struct w32PA_rCh_R32b;
          };
    ///////////////////////////////////////////////////////////
    } SIE_PA_rCh;

    typedef union  T32PA_rCh_RAdr
          { UNSG32 u32;
            struct w32PA_rCh_RAdr;
                 } T32PA_rCh_RAdr;
    typedef union  T32PA_rCh_R32b
          { UNSG32 u32;
            struct w32PA_rCh_R32b;
                 } T32PA_rCh_R32b;
    ///////////////////////////////////////////////////////////

    typedef union  TPA_rCh_RAdr
          { UNSG32 u32[1];
            struct {
            struct w32PA_rCh_RAdr;
                   };
                 } TPA_rCh_RAdr;
    typedef union  TPA_rCh_R32b
          { UNSG32 u32[1];
            struct {
            struct w32PA_rCh_R32b;
                   };
                 } TPA_rCh_R32b;

    ///////////////////////////////////////////////////////////
     SIGN32 PA_rCh_drvrd(SIE_PA_rCh *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 PA_rCh_drvwr(SIE_PA_rCh *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void PA_rCh_reset(SIE_PA_rCh *p);
     SIGN32 PA_rCh_cmp  (SIE_PA_rCh *p, SIE_PA_rCh *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define PA_rCh_check(p,pie,pfx,hLOG) PA_rCh_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define PA_rCh_print(p,    pfx,hLOG) PA_rCh_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: PA_rCh
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FigoDataNT                               (4,4)
///     ###
///     * 64-bit entry for FIGO DTCM; 'NT' == no-test
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (RW-)
///               ###
///               * 32-bit data
///               ###
///               %unsigned 32 data_0i                   
///               %unsigned 32 data_1i                   
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FigoDataNT
#define h_FigoDataNT (){}

    #define     BA_FigoDataNT_data_0i                          0x0000
    #define     B16FigoDataNT_data_0i                          0x0000
    #define   LSb32FigoDataNT_data_0i                             0
    #define   LSb16FigoDataNT_data_0i                             0
    #define       bFigoDataNT_data_0i                          32
    #define   MSK32FigoDataNT_data_0i                             0xFFFFFFFF

    #define     BA_FigoDataNT_data_1i                          0x0004
    #define     B16FigoDataNT_data_1i                          0x0004
    #define   LSb32FigoDataNT_data_1i                             0
    #define   LSb16FigoDataNT_data_1i                             0
    #define       bFigoDataNT_data_1i                          32
    #define   MSK32FigoDataNT_data_1i                             0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FigoDataNT {
    ///////////////////////////////////////////////////////////
    #define   GET32FigoDataNT_data_0i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32FigoDataNT_data_0i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_data_0i                                   : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32FigoDataNT_data_1i(r32)                     _BFGET_(r32,31, 0)
    #define   SET32FigoDataNT_data_1i(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_data_1i                                   : 32;
    ///////////////////////////////////////////////////////////
    } SIE_FigoDataNT;

    ///////////////////////////////////////////////////////////
     SIGN32 FigoDataNT_drvrd(SIE_FigoDataNT *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FigoDataNT_drvwr(SIE_FigoDataNT *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FigoDataNT_reset(SIE_FigoDataNT *p);
     SIGN32 FigoDataNT_cmp  (SIE_FigoDataNT *p, SIE_FigoDataNT *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FigoDataNT_check(p,pie,pfx,hLOG) FigoDataNT_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FigoDataNT_print(p,    pfx,hLOG) FigoDataNT_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FigoDataNT
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vProFast                biu              (4,4)
///     ###
///     * vScope DTCM, occupying 32KB address space
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 DTCM0                (P)
///     # 0x00000 dtcm0                
///               $FigoData            dtcm0             MEM    [1536]
///                                    ###
///                                    * vScope registers
///                                    ###
///     @ 0x04000 F0A64                (P)
///     # 0x04000 F0A64                
///               $ALU64               F0A64             REG          
///     @ 0x05000 F1A64                (P)
///     # 0x05000 F1A64                
///               $ALU64               F1A64             REG          
///     @ 0x06000 rCh                  (P)
///     # 0x06000 rCh                  
///               $PA_rCh              rCh               MEM          
///     @ 0x06008 rChClear             (W-)
///               %unsigned 1  en                        
///                                    ###
///                                    * write anything to reset read channel
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x0600C                      (W-)
///     #         # Stuffing bytes...
///               %% 928
///     @ 0x06080 wCh                  (P)
///     # 0x06080 wCh                  
///               $PA_wCh              wCh               MEM       [8]
///     @ 0x06100 wChFlush             (W-)
///               %unsigned 1  en                        
///                                    ###
///                                    * write anything to flush write channel
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x06104                      (W-)
///     #         # Stuffing bytes...
///               %% 63456
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:   32768B, bits:     398b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vProFast
#define h_vProFast (){}

    #define     RA_vProFast_DTCM0                              0x0000
    #define     RA_vProFast_dtcm0                              0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_vProFast_F0A64                              0x4000
    ///////////////////////////////////////////////////////////
    #define     RA_vProFast_F1A64                              0x5000
    ///////////////////////////////////////////////////////////
    #define     RA_vProFast_rCh                                0x6000
    ///////////////////////////////////////////////////////////
    #define     RA_vProFast_rChClear                           0x6008

    #define     BA_vProFast_rChClear_en                        0x6008
    #define     B16vProFast_rChClear_en                        0x6008
    #define   LSb32vProFast_rChClear_en                           0
    #define   LSb16vProFast_rChClear_en                           0
    #define       bvProFast_rChClear_en                        1
    #define   MSK32vProFast_rChClear_en                           0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_vProFast_wCh                                0x6080
    ///////////////////////////////////////////////////////////
    #define     RA_vProFast_wChFlush                           0x6100

    #define     BA_vProFast_wChFlush_en                        0x6100
    #define     B16vProFast_wChFlush_en                        0x6100
    #define   LSb32vProFast_wChFlush_en                           0
    #define   LSb16vProFast_wChFlush_en                           0
    #define       bvProFast_wChFlush_en                        1
    #define   MSK32vProFast_wChFlush_en                           0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vProFast {
    ///////////////////////////////////////////////////////////
              SIE_FigoData                                     ie_dtcm0[1536];
             UNSG8 RSVD_dtcm0                                  [4096];
    ///////////////////////////////////////////////////////////
              SIE_ALU64                                        ie_F0A64;
    ///////////////////////////////////////////////////////////
              SIE_ALU64                                        ie_F1A64;
    ///////////////////////////////////////////////////////////
              SIE_PA_rCh                                       ie_rCh;
    ///////////////////////////////////////////////////////////
    #define   GET32vProFast_rChClear_en(r32)                   _BFGET_(r32, 0, 0)
    #define   SET32vProFast_rChClear_en(r32,v)                 _BFSET_(r32, 0, 0,v)
    #define   GET16vProFast_rChClear_en(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16vProFast_rChClear_en(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define     w32vProFast_rChClear                           {\
            UNSG32 urChClear_en                                :  1;\
            UNSG32 RSVDx6008_b1                                : 31;\
          }
    union { UNSG32 u32vProFast_rChClear;
            struct w32vProFast_rChClear;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx600C                                   [116];
    ///////////////////////////////////////////////////////////
              SIE_PA_wCh                                       ie_wCh[8];
    ///////////////////////////////////////////////////////////
    #define   GET32vProFast_wChFlush_en(r32)                   _BFGET_(r32, 0, 0)
    #define   SET32vProFast_wChFlush_en(r32,v)                 _BFSET_(r32, 0, 0,v)
    #define   GET16vProFast_wChFlush_en(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16vProFast_wChFlush_en(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define     w32vProFast_wChFlush                           {\
            UNSG32 uwChFlush_en                                :  1;\
            UNSG32 RSVDx6100_b1                                : 31;\
          }
    union { UNSG32 u32vProFast_wChFlush;
            struct w32vProFast_wChFlush;
          };
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx6104                                   [7932];
    ///////////////////////////////////////////////////////////
    } SIE_vProFast;

    typedef union  T32vProFast_rChClear
          { UNSG32 u32;
            struct w32vProFast_rChClear;
                 } T32vProFast_rChClear;
    typedef union  T32vProFast_wChFlush
          { UNSG32 u32;
            struct w32vProFast_wChFlush;
                 } T32vProFast_wChFlush;
    ///////////////////////////////////////////////////////////

    typedef union  TvProFast_rChClear
          { UNSG32 u32[1];
            struct {
            struct w32vProFast_rChClear;
                   };
                 } TvProFast_rChClear;
    typedef union  TvProFast_wChFlush
          { UNSG32 u32[1];
            struct {
            struct w32vProFast_wChFlush;
                   };
                 } TvProFast_wChFlush;

    ///////////////////////////////////////////////////////////
     SIGN32 vProFast_drvrd(SIE_vProFast *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vProFast_drvwr(SIE_vProFast *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vProFast_reset(SIE_vProFast *p);
     SIGN32 vProFast_cmp  (SIE_vProFast *p, SIE_vProFast *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vProFast_check(p,pie,pfx,hLOG) vProFast_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vProFast_print(p,    pfx,hLOG) vProFast_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vProFast
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vScope                  biu              (4,4)
///     ###
///     * Address bases for different vScope components
///     ###
///     # # ----------------------------------------------------------
///               : DTCM0_base         0x0
///                            ###
///                            * DTCM base address shared by Figo0 & Figo1
///                            ###
///               : DTCM1_base         0x2000
///                            ###
///                            * DTCM0 has 8KB; DTCm1 has 2KB
///                            ###
///               : vScope_base        0x8000
///                            ###
///                            * 1K for the configuration of FIGOs
///                            ###
///               : ITCM0_base         0x10000
///                            ###
///                            * Up to 8K instructions for FIGO0
///                            ###
///               : ITCM1_base         0x12000
///                            ###
///                            * Up to 8K instructions for FIGO0
///                            * FIGO 0 ALU64 extension ID; used to match the 8-bit constant in ALU64 commands
///                            ###
///               : F0A64_neighbor     0x0
///               : F0A64_neighborAB   0x1
///               : F0A64_neighborCD   0x2
///               : F0A64_Fop          0x3
///               : F0A64_vldX         0x4
///               : F0A64_vcMsgMV      0x5
///               : F0A64_vcMsgY       0x6
///               : F0A64_vcMsgC       0x7
///               : F0A64_vld0         0x8
///               : F0A64_directMvL    0x9
///               : F0A64_directMvH    0xA
///               : F0A64_dbgSingle    0xB
///               : F0A64_dbgQueue     0xC
///               : F0A64_rsvdD        0xD
///               : F0A64_BwPmv        0xE
///               : F0A64_FwPmv        0xF
///               : F0A64_directMvL_uv 0x10
///               : F0A64_directMvH_uv 0x11
///               : F0A64_vcMsgLocBaseCfg 0x12
///                            ###
///                            * Cfg msg for vCache Xloc/Yloc base register (to support large pict size)
///                            * Bit field operations
///                            ###
///               : F0A64_BitOp0       0x20
///               : F0A64_BitOp1       0x21
///               : F0A64_BitOp2       0x22
///               : F0A64_BitOp3       0x23
///               : F0A64_SemChk       0x28
///               : F0A64_SemUpdf      0x29
///                            ###
///                            * FIGO 1 ALU64 extension ID; used to match the 8-bit constant in ALU64 commands
///                            ###
///               : F1A64_neighbor     0x0
///               : F1A64_neighborAB   0x1
///               : F1A64_neighborCD   0x2
///               : F1A64_vlcX         0x3
///               : F1A64_vld0         0x4
///               : F1A64_vlcX1        0x5
///               : F1A64_rsvd06       0x6
///               : F1A64_rsvd07       0x7
///               : F1A64_vldX         0x8
///               : F1A64_MbCtx        0x9
///               : F1A64_AspInit      0xA
///               : F1A64_MbPred       0xB
///               : F1A64_SubMbPred    0xC
///               : F1A64_Residual     0xD
///               : F1A64_cbp          0xE
///               : F1A64_FwPmv        0xF
///               : F1A64_BwPmv        0x10
///               : F1A64_rsvd11       0x11
///               : F1A64_dqPred       0x12
///                            ###
///                            * For coefficient scaling for VC-1 DC/AC prediction
///                            ###
///               : F1A64_dqAcEob      0x13
///               : F1A64_dqDc         0x14
///               : F1A64_dqAc         0x15
///               : F1A64_dqH264       0x16
///               : F1A64_dqBypass     0x17
///                            ###
///                            * Bit field operations
///                            ###
///               : F1A64_BitOp0       0x20
///               : F1A64_BitOp1       0x21
///               : F1A64_BitOp2       0x22
///               : F1A64_BitOp3       0x23
///               : F1A64_SemChk       0x28
///               : F1A64_SemUpdf      0x29
///                            ###
///                            * ASE extension IDs
///                            ###
///               : F1A64_AseInit      0x30
///               : F1A64_AsePushMbCtx 0x31
///               : F1A64_AseCbp       0x32
///               : F1A64_AseMbPred    0x33
///               : F1A64_AseSubMbPred 0x34
///               : F1A64_AseResidual  0x35
///               : F1A64_AsePushQTC   0x36
///               : F1A64_AseBlkStat   0x37
///               : F1A64_AsePopMbCtx  0x38
///                            ###
///                            * vScope DTCM, occupying 32KB address space
///                            ###
///     @ 0x00000 DTCM0                (P)
///     # 0x00000 dtcm0                
///               $FigoDataNT          dtcm0             MEM    [1536]
///                                    ###
///                                    * vScope registers
///                                    ###
///     @ 0x04000                      (W-)
///     #         # Stuffing bytes...
///               %% 131072
///     @ 0x08000 HBO0                 (P)
///     # 0x08000 hbo0                 
///               $HBO                 hbo0              REG          
///                                    ###
///                                    * HBO1
///                                    ###
///     @ 0x08700                      (P)
///     # 0x08700 hbo1                 
///               $HBO                 hbo1              REG          
///     @ 0x08E00                      (W-)
///     #         # Stuffing bytes...
///               %% 4096
///     @ 0x09000 FIGO0                (P)
///     # 0x09000 figo0                
///               $FigoReg             figo0             REG          
///     @ 0x0B000 FIGO1                (P)
///     # 0x0B000 figo1                
///               $FigoReg             figo1             REG          
///     @ 0x0D000 DS                   (P)
///     # 0x0D000 ds                   
///               $DataStreamer        ds                REG          
///     @ 0x0D024                      (W-)
///     #         # Stuffing bytes...
///               %% 16096
///     @ 0x0D800 VLD0                 (P)
///     # 0x0D800 vld0                 
///               $VldReg              vld0              REG          
///     @ 0x0E800 VLDX                 (P)
///     # 0x0E800 vldx                 
///               $VldReg              vldx              REG          
///     @ 0x0F800                      (W-)
///     #         # Stuffing bytes...
///               %% 16384
///     @ 0x10000 DQ                   (P)
///     # 0x10000 dq                   
///               $dQuant              dq                MEM          
///                                    ###
///                                    * Need 40K bytes for ITCM0 & 1
///                                    ###
///     @ 0x12000                      (W-)
///     #         # Stuffing bytes...
///               %% 196608
///     @ 0x18000 ITCM0                (P)
///     # 0x18000 itcm0                
///               $ITCM                itcm0             MEM          
///                                    ###
///                                    * 2K instructions, or 8K byte address space, for ITCM0. Physically only 6KB.
///                                    ###
///     @ 0x1A000 ITCM1                (P)
///     # 0x1A000 itcm1                
///               $ITCM                itcm1             MEM          
///                                    ###
///                                    * 2K instructions, or 8K byte address space, for ITCM1. Physically only 6KB.
///                                    ###
///     @ 0x1C000 F0RF64               (P)
///     # 0x1C000 f0rf64               
///               $FigoDataNT          f0rf64            MEM      [64]
///     @ 0x1C200 F1RF64               (P)
///     # 0x1C200 f1rf64               
///               $FigoDataNT          f1rf64            MEM      [64]
///     @ 0x1C400 CRCHUB               (P)
///     # 0x1C400 crcHub               
///               $crcHub              crcHub            REG          
///                                    ###
///                                    * RF64 read port; for FPGA only
///                                    ###
///     @ 0x1C600                      (W-)
///     #         # Stuffing bytes...
///               %% 118784
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:  131072B, bits:    6760b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vScope
#define h_vScope (){}

    #define        vScope_DTCM0_base                           0x0
    #define        vScope_DTCM1_base                           0x2000
    #define        vScope_vScope_base                          0x8000
    #define        vScope_ITCM0_base                           0x10000
    #define        vScope_ITCM1_base                           0x12000
    #define        vScope_F0A64_neighbor                       0x0
    #define        vScope_F0A64_neighborAB                     0x1
    #define        vScope_F0A64_neighborCD                     0x2
    #define        vScope_F0A64_Fop                            0x3
    #define        vScope_F0A64_vldX                           0x4
    #define        vScope_F0A64_vcMsgMV                        0x5
    #define        vScope_F0A64_vcMsgY                         0x6
    #define        vScope_F0A64_vcMsgC                         0x7
    #define        vScope_F0A64_vld0                           0x8
    #define        vScope_F0A64_directMvL                      0x9
    #define        vScope_F0A64_directMvH                      0xA
    #define        vScope_F0A64_dbgSingle                      0xB
    #define        vScope_F0A64_dbgQueue                       0xC
    #define        vScope_F0A64_rsvdD                          0xD
    #define        vScope_F0A64_BwPmv                          0xE
    #define        vScope_F0A64_FwPmv                          0xF
    #define        vScope_F0A64_directMvL_uv                   0x10
    #define        vScope_F0A64_directMvH_uv                   0x11
    #define        vScope_F0A64_vcMsgLocBaseCfg                0x12
    #define        vScope_F0A64_BitOp0                         0x20
    #define        vScope_F0A64_BitOp1                         0x21
    #define        vScope_F0A64_BitOp2                         0x22
    #define        vScope_F0A64_BitOp3                         0x23
    #define        vScope_F0A64_SemChk                         0x28
    #define        vScope_F0A64_SemUpdf                        0x29
    #define        vScope_F1A64_neighbor                       0x0
    #define        vScope_F1A64_neighborAB                     0x1
    #define        vScope_F1A64_neighborCD                     0x2
    #define        vScope_F1A64_vlcX                           0x3
    #define        vScope_F1A64_vld0                           0x4
    #define        vScope_F1A64_vlcX1                          0x5
    #define        vScope_F1A64_rsvd06                         0x6
    #define        vScope_F1A64_rsvd07                         0x7
    #define        vScope_F1A64_vldX                           0x8
    #define        vScope_F1A64_MbCtx                          0x9
    #define        vScope_F1A64_AspInit                        0xA
    #define        vScope_F1A64_MbPred                         0xB
    #define        vScope_F1A64_SubMbPred                      0xC
    #define        vScope_F1A64_Residual                       0xD
    #define        vScope_F1A64_cbp                            0xE
    #define        vScope_F1A64_FwPmv                          0xF
    #define        vScope_F1A64_BwPmv                          0x10
    #define        vScope_F1A64_rsvd11                         0x11
    #define        vScope_F1A64_dqPred                         0x12
    #define        vScope_F1A64_dqAcEob                        0x13
    #define        vScope_F1A64_dqDc                           0x14
    #define        vScope_F1A64_dqAc                           0x15
    #define        vScope_F1A64_dqH264                         0x16
    #define        vScope_F1A64_dqBypass                       0x17
    #define        vScope_F1A64_BitOp0                         0x20
    #define        vScope_F1A64_BitOp1                         0x21
    #define        vScope_F1A64_BitOp2                         0x22
    #define        vScope_F1A64_BitOp3                         0x23
    #define        vScope_F1A64_SemChk                         0x28
    #define        vScope_F1A64_SemUpdf                        0x29
    #define        vScope_F1A64_AseInit                        0x30
    #define        vScope_F1A64_AsePushMbCtx                   0x31
    #define        vScope_F1A64_AseCbp                         0x32
    #define        vScope_F1A64_AseMbPred                      0x33
    #define        vScope_F1A64_AseSubMbPred                   0x34
    #define        vScope_F1A64_AseResidual                    0x35
    #define        vScope_F1A64_AsePushQTC                     0x36
    #define        vScope_F1A64_AseBlkStat                     0x37
    #define        vScope_F1A64_AsePopMbCtx                    0x38
    ///////////////////////////////////////////////////////////
    #define     RA_vScope_DTCM0                                0x0000
    #define     RA_vScope_dtcm0                                0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_vScope_HBO0                                 0x8000
    #define     RA_vScope_hbo0                                 0x8000
    ///////////////////////////////////////////////////////////
    #define     RA_vScope_hbo1                                 0x8700
    ///////////////////////////////////////////////////////////
    #define     RA_vScope_FIGO0                                0x9000
    #define     RA_vScope_figo0                                0x9000
    ///////////////////////////////////////////////////////////
    #define     RA_vScope_FIGO1                                0xB000
    #define     RA_vScope_figo1                                0xB000
    ///////////////////////////////////////////////////////////
    #define     RA_vScope_DS                                   0xD000
    #define     RA_vScope_ds                                   0xD000
    ///////////////////////////////////////////////////////////
    #define     RA_vScope_VLD0                                 0xD800
    #define     RA_vScope_vld0                                 0xD800
    ///////////////////////////////////////////////////////////
    #define     RA_vScope_VLDX                                 0xE800
    #define     RA_vScope_vldx                                 0xE800
    ///////////////////////////////////////////////////////////
    #define     RA_vScope_DQ                                   0x10000
    #define     RA_vScope_dq                                   0x10000
    ///////////////////////////////////////////////////////////
    #define     RA_vScope_ITCM0                                0x18000
    #define     RA_vScope_itcm0                                0x18000
    ///////////////////////////////////////////////////////////
    #define     RA_vScope_ITCM1                                0x1A000
    #define     RA_vScope_itcm1                                0x1A000
    ///////////////////////////////////////////////////////////
    #define     RA_vScope_F0RF64                               0x1C000
    #define     RA_vScope_f0rf64                               0x1C000
    ///////////////////////////////////////////////////////////
    #define     RA_vScope_F1RF64                               0x1C200
    #define     RA_vScope_f1rf64                               0x1C200
    ///////////////////////////////////////////////////////////
    #define     RA_vScope_CRCHUB                               0x1C400
    #define     RA_vScope_crcHub                               0x1C400
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vScope {
    ///////////////////////////////////////////////////////////
              SIE_FigoDataNT                                   ie_dtcm0[1536];
             UNSG8 RSVD_dtcm0                                  [4096];
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx4000                                   [16384];
    ///////////////////////////////////////////////////////////
              SIE_HBO                                          ie_hbo0;
    ///////////////////////////////////////////////////////////
              SIE_HBO                                          ie_hbo1;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx8E00                                   [512];
    ///////////////////////////////////////////////////////////
              SIE_FigoReg                                      ie_figo0;
    ///////////////////////////////////////////////////////////
              SIE_FigoReg                                      ie_figo1;
    ///////////////////////////////////////////////////////////
              SIE_DataStreamer                                 ie_ds;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxD024                                   [2012];
    ///////////////////////////////////////////////////////////
              SIE_VldReg                                       ie_vld0;
    ///////////////////////////////////////////////////////////
              SIE_VldReg                                       ie_vldx;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxF800                                   [2048];
    ///////////////////////////////////////////////////////////
              SIE_dQuant                                       ie_dq;
             UNSG8 RSVD_dq                                     [2816];
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx12000                                  [24576];
    ///////////////////////////////////////////////////////////
              SIE_ITCM                                         ie_itcm0;
    ///////////////////////////////////////////////////////////
              SIE_ITCM                                         ie_itcm1;
    ///////////////////////////////////////////////////////////
              SIE_FigoDataNT                                   ie_f0rf64[64];
    ///////////////////////////////////////////////////////////
              SIE_FigoDataNT                                   ie_f1rf64[64];
    ///////////////////////////////////////////////////////////
              SIE_crcHub                                       ie_crcHub;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx1C600                                  [14848];
    ///////////////////////////////////////////////////////////
    } SIE_vScope;

    ///////////////////////////////////////////////////////////
     SIGN32 vScope_drvrd(SIE_vScope *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vScope_drvwr(SIE_vScope *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vScope_reset(SIE_vScope *p);
     SIGN32 vScope_cmp  (SIE_vScope *p, SIE_vScope *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vScope_check(p,pie,pfx,hLOG) vScope_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vScope_print(p,    pfx,hLOG) vScope_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vScope
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vScopeBIU                                (4,4)
///     ###
///     * Constants for vScope submodule hSel decoding
///     ###
///     # # ----------------------------------------------------------
///               : SIZE               0x100000
///               : DEC_BIT            0x14
///                            ###
///                            * VSCOPE
///                            ###
///               : VX_OFST            0x0
///               : VX_SIZE            0x80000
///               : VX_DEC_BIT         0x13
///                            ###
///                            * VFAST
///                            ###
///               : VF_OFST            0x80000
///               : VF_SIZE            0x80000
///               : VF_DEC_BIT         0x13
///                            ###
///                            * VXCR (vx clock reset)
///                            * Last 64KB used as the clock reset control.
///                            ###
///               : VXCR_OFST          0xF0000
///               : VXCR_SIZE          0x10000
///               : VXCR_DEC_BIT       0x10
///     @ 0x00000 Dummy                (P)
///               %unsigned 1  xxx                       0x0
///               %%        31         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       1b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vScopeBIU
#define h_vScopeBIU (){}

    #define        vScopeBIU_SIZE                              0x100000
    #define        vScopeBIU_DEC_BIT                           0x14
    #define        vScopeBIU_VX_OFST                           0x0
    #define        vScopeBIU_VX_SIZE                           0x80000
    #define        vScopeBIU_VX_DEC_BIT                        0x13
    #define        vScopeBIU_VF_OFST                           0x80000
    #define        vScopeBIU_VF_SIZE                           0x80000
    #define        vScopeBIU_VF_DEC_BIT                        0x13
    #define        vScopeBIU_VXCR_OFST                         0xF0000
    #define        vScopeBIU_VXCR_SIZE                         0x10000
    #define        vScopeBIU_VXCR_DEC_BIT                      0x10
    ///////////////////////////////////////////////////////////
    #define     RA_vScopeBIU_Dummy                             0x0000

    #define     BA_vScopeBIU_Dummy_xxx                         0x0000
    #define     B16vScopeBIU_Dummy_xxx                         0x0000
    #define   LSb32vScopeBIU_Dummy_xxx                            0
    #define   LSb16vScopeBIU_Dummy_xxx                            0
    #define       bvScopeBIU_Dummy_xxx                         1
    #define   MSK32vScopeBIU_Dummy_xxx                            0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vScopeBIU {
    ///////////////////////////////////////////////////////////
    #define   GET32vScopeBIU_Dummy_xxx(r32)                    _BFGET_(r32, 0, 0)
    #define   SET32vScopeBIU_Dummy_xxx(r32,v)                  _BFSET_(r32, 0, 0,v)
    #define   GET16vScopeBIU_Dummy_xxx(r16)                    _BFGET_(r16, 0, 0)
    #define   SET16vScopeBIU_Dummy_xxx(r16,v)                  _BFSET_(r16, 0, 0,v)

    #define     w32vScopeBIU_Dummy                             {\
            UNSG32 uDummy_xxx                                  :  1;\
            UNSG32 RSVDx0_b1                                   : 31;\
          }
    union { UNSG32 u32vScopeBIU_Dummy;
            struct w32vScopeBIU_Dummy;
          };
    ///////////////////////////////////////////////////////////
    } SIE_vScopeBIU;

    typedef union  T32vScopeBIU_Dummy
          { UNSG32 u32;
            struct w32vScopeBIU_Dummy;
                 } T32vScopeBIU_Dummy;
    ///////////////////////////////////////////////////////////

    typedef union  TvScopeBIU_Dummy
          { UNSG32 u32[1];
            struct {
            struct w32vScopeBIU_Dummy;
                   };
                 } TvScopeBIU_Dummy;

    ///////////////////////////////////////////////////////////
     SIGN32 vScopeBIU_drvrd(SIE_vScopeBIU *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vScopeBIU_drvwr(SIE_vScopeBIU *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vScopeBIU_reset(SIE_vScopeBIU *p);
     SIGN32 vScopeBIU_cmp  (SIE_vScopeBIU *p, SIE_vScopeBIU *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vScopeBIU_check(p,pie,pfx,hLOG) vScopeBIU_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vScopeBIU_print(p,    pfx,hLOG) vScopeBIU_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vScopeBIU
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vxClkRst                biu              (4,4)
///     ###
///     * vScope level clock reset control unit
///     * For all reset control bit, 0-- reset, 1-- release.
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 global               
///               $ClkRstBiu           global            REG          
///                                    ###
///                                    * Global control register for vScope
///                                    ###
///     @ 0x00004                      (P)
///     # 0x00004 ase                  
///               $ClkRstBiu           ase               REG          
///     @ 0x00008                      (P)
///     # 0x00008 asp                  
///               $ClkRstBiu           asp               REG          
///     @ 0x0000C                      (P)
///     # 0x0000C vlc                  
///               $ClkRstBiu           vlc               REG          
///     @ 0x00010                      (P)
///     # 0x00010 vld                  
///               $ClkRstBiu           vld               REG          
///     @ 0x00014                      (P)
///     # 0x00014 vld_0                
///               $ClkRstBiu           vld_0             REG          
///     @ 0x00018                      (P)
///     # 0x00018 pmv_0                
///               $ClkRstBiu           pmv_0             REG          
///     @ 0x0001C                      (P)
///     # 0x0001C pmv_1                
///               $ClkRstBiu           pmv_1             REG          
///     @ 0x00020                      (P)
///     # 0x00020 nbr_0                
///               $ClkRstBiu           nbr_0             REG          
///     @ 0x00024                      (P)
///     # 0x00024 nbr_1                
///               $ClkRstBiu           nbr_1             REG          
///     @ 0x00028                      (P)
///     # 0x00028 dmv                  
///               $ClkRstBiu           dmv               REG          
///     @ 0x0002C                      (P)
///     # 0x0002C fop                  
///               $ClkRstBiu           fop               REG          
///     @ 0x00030                      (P)
///     # 0x00030 vcMsg                
///               $ClkRstBiu           vcMsg             REG          
///     @ 0x00034                      (P)
///     # 0x00034 dQuant               
///               $ClkRstBiu           dQuant            REG          
///     @ 0x00038                      (P)
///     # 0x00038 bitOp_0              
///               $ClkRstBiu           bitOp_0           REG          
///     @ 0x0003C                      (P)
///     # 0x0003C bitOp_1              
///               $ClkRstBiu           bitOp_1           REG          
///     @ 0x00040                      (P)
///     # 0x00040 semaExt_0            
///               $ClkRstBiu           semaExt_0         REG          
///     @ 0x00044                      (P)
///     # 0x00044 semaExt_1            
///               $ClkRstBiu           semaExt_1         REG          
///     @ 0x00048                      (P)
///     # 0x00048 vxRF64_0             
///               $ClkRstBiu           vxRF64_0          REG          
///     @ 0x0004C                      (P)
///     # 0x0004C vxRF64_1             
///               $ClkRstBiu           vxRF64_1          REG          
///     @ 0x00050                      (P)
///     # 0x00050 vxBiu                
///               $ClkRstBiu           vxBiu             REG          
///     @ 0x00054                      (P)
///     # 0x00054 vxF0Itcm             
///               $ClkRstBiu           vxF0Itcm          REG          
///     @ 0x00058                      (P)
///     # 0x00058 vxF1Itcm             
///               $ClkRstBiu           vxF1Itcm          REG          
///     @ 0x0005C                      (P)
///     # 0x0005C vxDtcm               
///               $ClkRstBiu           vxDtcm            REG          
///     @ 0x00060                      (P)
///     # 0x00060 vxFigo0              
///               $ClkRstBiu           vxFigo0           REG          
///     @ 0x00064                      (P)
///     # 0x00064 vxFigo1              
///               $ClkRstBiu           vxFigo1           REG          
///                                    ###
///                                    * For vxFigo0/1, only sw clock enable is used and dynamic clock control will not be applied,.
///                                    ###
///     @ 0x00068                      (P)
///     # 0x00068 misc                 
///               $ClkRstBiu           misc              REG          
///                                    ###
///                                    * For all other small modules
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     108B, bits:      81b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vxClkRst
#define h_vxClkRst (){}

    #define     RA_vxClkRst_global                             0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_ase                                0x0004
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_asp                                0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_vlc                                0x000C
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_vld                                0x0010
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_vld_0                              0x0014
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_pmv_0                              0x0018
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_pmv_1                              0x001C
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_nbr_0                              0x0020
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_nbr_1                              0x0024
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_dmv                                0x0028
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_fop                                0x002C
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_vcMsg                              0x0030
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_dQuant                             0x0034
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_bitOp_0                            0x0038
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_bitOp_1                            0x003C
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_semaExt_0                          0x0040
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_semaExt_1                          0x0044
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_vxRF64_0                           0x0048
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_vxRF64_1                           0x004C
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_vxBiu                              0x0050
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_vxF0Itcm                           0x0054
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_vxF1Itcm                           0x0058
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_vxDtcm                             0x005C
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_vxFigo0                            0x0060
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_vxFigo1                            0x0064
    ///////////////////////////////////////////////////////////
    #define     RA_vxClkRst_misc                               0x0068
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vxClkRst {
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_global;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_ase;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_asp;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_vlc;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_vld;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_vld_0;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_pmv_0;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_pmv_1;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_nbr_0;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_nbr_1;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_dmv;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_fop;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_vcMsg;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_dQuant;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_bitOp_0;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_bitOp_1;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_semaExt_0;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_semaExt_1;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_vxRF64_0;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_vxRF64_1;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_vxBiu;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_vxF0Itcm;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_vxF1Itcm;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_vxDtcm;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_vxFigo0;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_vxFigo1;
    ///////////////////////////////////////////////////////////
              SIE_ClkRstBiu                                    ie_misc;
    ///////////////////////////////////////////////////////////
    } SIE_vxClkRst;

    ///////////////////////////////////////////////////////////
     SIGN32 vxClkRst_drvrd(SIE_vxClkRst *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vxClkRst_drvwr(SIE_vxClkRst *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vxClkRst_reset(SIE_vxClkRst *p);
     SIGN32 vxClkRst_cmp  (SIE_vxClkRst *p, SIE_vxClkRst *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vxClkRst_check(p,pie,pfx,hLOG) vxClkRst_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vxClkRst_print(p,    pfx,hLOG) vxClkRst_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vxClkRst
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE VSCOPE_CONST                             (4,4)
///     # # ----------------------------------------------------------
///               : PARSER             0x1
///               : SYNPRO             0x0
///     @ 0x00000                      (P)
///               %unsigned 1  dummy                     
///                                    ###
///                                    * Dummy sample
///                                    ###
///               %%        31         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       1b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_VSCOPE_CONST
#define h_VSCOPE_CONST (){}

    #define        VSCOPE_CONST_PARSER                         0x1
    #define        VSCOPE_CONST_SYNPRO                         0x0
    ///////////////////////////////////////////////////////////

    #define     BA_VSCOPE_CONST_dummy                          0x0000
    #define     B16VSCOPE_CONST_dummy                          0x0000
    #define   LSb32VSCOPE_CONST_dummy                             0
    #define   LSb16VSCOPE_CONST_dummy                             0
    #define       bVSCOPE_CONST_dummy                          1
    #define   MSK32VSCOPE_CONST_dummy                             0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_VSCOPE_CONST {
    ///////////////////////////////////////////////////////////
    #define   GET32VSCOPE_CONST_dummy(r32)                     _BFGET_(r32, 0, 0)
    #define   SET32VSCOPE_CONST_dummy(r32,v)                   _BFSET_(r32, 0, 0,v)
    #define   GET16VSCOPE_CONST_dummy(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16VSCOPE_CONST_dummy(r16,v)                   _BFSET_(r16, 0, 0,v)

            UNSG32 u_dummy                                     :  1;
            UNSG32 RSVDx0_b1                                   : 31;
    ///////////////////////////////////////////////////////////
    } SIE_VSCOPE_CONST;

    ///////////////////////////////////////////////////////////
     SIGN32 VSCOPE_CONST_drvrd(SIE_VSCOPE_CONST *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 VSCOPE_CONST_drvwr(SIE_VSCOPE_CONST *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void VSCOPE_CONST_reset(SIE_VSCOPE_CONST *p);
     SIGN32 VSCOPE_CONST_cmp  (SIE_VSCOPE_CONST *p, SIE_VSCOPE_CONST *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define VSCOPE_CONST_check(p,pie,pfx,hLOG) VSCOPE_CONST_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define VSCOPE_CONST_print(p,    pfx,hLOG) VSCOPE_CONST_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: VSCOPE_CONST
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE VXCommon                                 (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 16 timeout_0i                
///               %unsigned 16 timeout_1i                
///               %unsigned 16 timeout_2i                
///               %unsigned 16 timeout_3i                
///               %unsigned 16 timeout_4i                
///               %unsigned 16 timeout_5i                
///               %unsigned 16 timeout_6i                
///               %unsigned 16 timeout_7i                
///                                    ###
///                                    * Reserved For software watch dog
///                                    ###
///     @ 0x00010                      (P)
///               %unsigned 16 figo0_init                
///                                    ###
///                                    * Flag to kick off syntax processor, figo0
///                                    ###
///               %%        16         # Stuffing bits...
///     @ 0x00014                      (P)
///               %unsigned 16 figo1_init                
///                                    ###
///                                    * Flag to kick off parser, figo1
///                                    ###
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      24B, bits:     160b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_VXCommon
#define h_VXCommon (){}

    #define     BA_VXCommon_timeout_0i                         0x0000
    #define     B16VXCommon_timeout_0i                         0x0000
    #define   LSb32VXCommon_timeout_0i                            0
    #define   LSb16VXCommon_timeout_0i                            0
    #define       bVXCommon_timeout_0i                         16
    #define   MSK32VXCommon_timeout_0i                            0x0000FFFF

    #define     BA_VXCommon_timeout_1i                         0x0002
    #define     B16VXCommon_timeout_1i                         0x0002
    #define   LSb32VXCommon_timeout_1i                            16
    #define   LSb16VXCommon_timeout_1i                            0
    #define       bVXCommon_timeout_1i                         16
    #define   MSK32VXCommon_timeout_1i                            0xFFFF0000

    #define     BA_VXCommon_timeout_2i                         0x0004
    #define     B16VXCommon_timeout_2i                         0x0004
    #define   LSb32VXCommon_timeout_2i                            0
    #define   LSb16VXCommon_timeout_2i                            0
    #define       bVXCommon_timeout_2i                         16
    #define   MSK32VXCommon_timeout_2i                            0x0000FFFF

    #define     BA_VXCommon_timeout_3i                         0x0006
    #define     B16VXCommon_timeout_3i                         0x0006
    #define   LSb32VXCommon_timeout_3i                            16
    #define   LSb16VXCommon_timeout_3i                            0
    #define       bVXCommon_timeout_3i                         16
    #define   MSK32VXCommon_timeout_3i                            0xFFFF0000

    #define     BA_VXCommon_timeout_4i                         0x0008
    #define     B16VXCommon_timeout_4i                         0x0008
    #define   LSb32VXCommon_timeout_4i                            0
    #define   LSb16VXCommon_timeout_4i                            0
    #define       bVXCommon_timeout_4i                         16
    #define   MSK32VXCommon_timeout_4i                            0x0000FFFF

    #define     BA_VXCommon_timeout_5i                         0x000A
    #define     B16VXCommon_timeout_5i                         0x000A
    #define   LSb32VXCommon_timeout_5i                            16
    #define   LSb16VXCommon_timeout_5i                            0
    #define       bVXCommon_timeout_5i                         16
    #define   MSK32VXCommon_timeout_5i                            0xFFFF0000

    #define     BA_VXCommon_timeout_6i                         0x000C
    #define     B16VXCommon_timeout_6i                         0x000C
    #define   LSb32VXCommon_timeout_6i                            0
    #define   LSb16VXCommon_timeout_6i                            0
    #define       bVXCommon_timeout_6i                         16
    #define   MSK32VXCommon_timeout_6i                            0x0000FFFF

    #define     BA_VXCommon_timeout_7i                         0x000E
    #define     B16VXCommon_timeout_7i                         0x000E
    #define   LSb32VXCommon_timeout_7i                            16
    #define   LSb16VXCommon_timeout_7i                            0
    #define       bVXCommon_timeout_7i                         16
    #define   MSK32VXCommon_timeout_7i                            0xFFFF0000
    ///////////////////////////////////////////////////////////

    #define     BA_VXCommon_figo0_init                         0x0010
    #define     B16VXCommon_figo0_init                         0x0010
    #define   LSb32VXCommon_figo0_init                            0
    #define   LSb16VXCommon_figo0_init                            0
    #define       bVXCommon_figo0_init                         16
    #define   MSK32VXCommon_figo0_init                            0x0000FFFF
    ///////////////////////////////////////////////////////////

    #define     BA_VXCommon_figo1_init                         0x0014
    #define     B16VXCommon_figo1_init                         0x0014
    #define   LSb32VXCommon_figo1_init                            0
    #define   LSb16VXCommon_figo1_init                            0
    #define       bVXCommon_figo1_init                         16
    #define   MSK32VXCommon_figo1_init                            0x0000FFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_VXCommon {
    ///////////////////////////////////////////////////////////
    #define   GET32VXCommon_timeout_0i(r32)                    _BFGET_(r32,15, 0)
    #define   SET32VXCommon_timeout_0i(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16VXCommon_timeout_0i(r16)                    _BFGET_(r16,15, 0)
    #define   SET16VXCommon_timeout_0i(r16,v)                  _BFSET_(r16,15, 0,v)

    #define   GET32VXCommon_timeout_1i(r32)                    _BFGET_(r32,31,16)
    #define   SET32VXCommon_timeout_1i(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16VXCommon_timeout_1i(r16)                    _BFGET_(r16,15, 0)
    #define   SET16VXCommon_timeout_1i(r16,v)                  _BFSET_(r16,15, 0,v)

            UNSG32 u_timeout_0i                                : 16;
            UNSG32 u_timeout_1i                                : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32VXCommon_timeout_2i(r32)                    _BFGET_(r32,15, 0)
    #define   SET32VXCommon_timeout_2i(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16VXCommon_timeout_2i(r16)                    _BFGET_(r16,15, 0)
    #define   SET16VXCommon_timeout_2i(r16,v)                  _BFSET_(r16,15, 0,v)

    #define   GET32VXCommon_timeout_3i(r32)                    _BFGET_(r32,31,16)
    #define   SET32VXCommon_timeout_3i(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16VXCommon_timeout_3i(r16)                    _BFGET_(r16,15, 0)
    #define   SET16VXCommon_timeout_3i(r16,v)                  _BFSET_(r16,15, 0,v)

            UNSG32 u_timeout_2i                                : 16;
            UNSG32 u_timeout_3i                                : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32VXCommon_timeout_4i(r32)                    _BFGET_(r32,15, 0)
    #define   SET32VXCommon_timeout_4i(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16VXCommon_timeout_4i(r16)                    _BFGET_(r16,15, 0)
    #define   SET16VXCommon_timeout_4i(r16,v)                  _BFSET_(r16,15, 0,v)

    #define   GET32VXCommon_timeout_5i(r32)                    _BFGET_(r32,31,16)
    #define   SET32VXCommon_timeout_5i(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16VXCommon_timeout_5i(r16)                    _BFGET_(r16,15, 0)
    #define   SET16VXCommon_timeout_5i(r16,v)                  _BFSET_(r16,15, 0,v)

            UNSG32 u_timeout_4i                                : 16;
            UNSG32 u_timeout_5i                                : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32VXCommon_timeout_6i(r32)                    _BFGET_(r32,15, 0)
    #define   SET32VXCommon_timeout_6i(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16VXCommon_timeout_6i(r16)                    _BFGET_(r16,15, 0)
    #define   SET16VXCommon_timeout_6i(r16,v)                  _BFSET_(r16,15, 0,v)

    #define   GET32VXCommon_timeout_7i(r32)                    _BFGET_(r32,31,16)
    #define   SET32VXCommon_timeout_7i(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16VXCommon_timeout_7i(r16)                    _BFGET_(r16,15, 0)
    #define   SET16VXCommon_timeout_7i(r16,v)                  _BFSET_(r16,15, 0,v)

            UNSG32 u_timeout_6i                                : 16;
            UNSG32 u_timeout_7i                                : 16;
    ///////////////////////////////////////////////////////////
    #define   GET32VXCommon_figo0_init(r32)                    _BFGET_(r32,15, 0)
    #define   SET32VXCommon_figo0_init(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16VXCommon_figo0_init(r16)                    _BFGET_(r16,15, 0)
    #define   SET16VXCommon_figo0_init(r16,v)                  _BFSET_(r16,15, 0,v)

            UNSG32 u_figo0_init                                : 16;
            UNSG32 RSVDx10_b16                                 : 16;
    ///////////////////////////////////////////////////////////
    #define   GET32VXCommon_figo1_init(r32)                    _BFGET_(r32,15, 0)
    #define   SET32VXCommon_figo1_init(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16VXCommon_figo1_init(r16)                    _BFGET_(r16,15, 0)
    #define   SET16VXCommon_figo1_init(r16,v)                  _BFSET_(r16,15, 0,v)

            UNSG32 u_figo1_init                                : 16;
            UNSG32 RSVDx14_b16                                 : 16;
    ///////////////////////////////////////////////////////////
    } SIE_VXCommon;

    ///////////////////////////////////////////////////////////
     SIGN32 VXCommon_drvrd(SIE_VXCommon *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 VXCommon_drvwr(SIE_VXCommon *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void VXCommon_reset(SIE_VXCommon *p);
     SIGN32 VXCommon_cmp  (SIE_VXCommon *p, SIE_VXCommon *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define VXCommon_check(p,pie,pfx,hLOG) VXCommon_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define VXCommon_print(p,    pfx,hLOG) VXCommon_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: VXCommon
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE QMV                                      (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 4  X                         
///                                    ###
///                                    * MV.x[3:0] of horizontal motion vector (Q-pel)
///                                    ###
///               %unsigned 4  Y                         
///                                    ###
///                                    * MV.y[3:0] of vertical motion vector (Q-pel)
///                                    ###
///               %unsigned 4  X1                        
///               %unsigned 4  Y1                        
///               %unsigned 4  X2                        
///               %unsigned 4  Y2                        
///               %unsigned 4  X3                        
///               %unsigned 4  Y3                        
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_QMV
#define h_QMV (){}

    #define     BA_QMV_X                                       0x0000
    #define     B16QMV_X                                       0x0000
    #define   LSb32QMV_X                                          0
    #define   LSb16QMV_X                                          0
    #define       bQMV_X                                       4
    #define   MSK32QMV_X                                          0x0000000F

    #define     BA_QMV_Y                                       0x0000
    #define     B16QMV_Y                                       0x0000
    #define   LSb32QMV_Y                                          4
    #define   LSb16QMV_Y                                          4
    #define       bQMV_Y                                       4
    #define   MSK32QMV_Y                                          0x000000F0

    #define     BA_QMV_X1                                      0x0001
    #define     B16QMV_X1                                      0x0000
    #define   LSb32QMV_X1                                         8
    #define   LSb16QMV_X1                                         8
    #define       bQMV_X1                                      4
    #define   MSK32QMV_X1                                         0x00000F00

    #define     BA_QMV_Y1                                      0x0001
    #define     B16QMV_Y1                                      0x0000
    #define   LSb32QMV_Y1                                         12
    #define   LSb16QMV_Y1                                         12
    #define       bQMV_Y1                                      4
    #define   MSK32QMV_Y1                                         0x0000F000

    #define     BA_QMV_X2                                      0x0002
    #define     B16QMV_X2                                      0x0002
    #define   LSb32QMV_X2                                         16
    #define   LSb16QMV_X2                                         0
    #define       bQMV_X2                                      4
    #define   MSK32QMV_X2                                         0x000F0000

    #define     BA_QMV_Y2                                      0x0002
    #define     B16QMV_Y2                                      0x0002
    #define   LSb32QMV_Y2                                         20
    #define   LSb16QMV_Y2                                         4
    #define       bQMV_Y2                                      4
    #define   MSK32QMV_Y2                                         0x00F00000

    #define     BA_QMV_X3                                      0x0003
    #define     B16QMV_X3                                      0x0002
    #define   LSb32QMV_X3                                         24
    #define   LSb16QMV_X3                                         8
    #define       bQMV_X3                                      4
    #define   MSK32QMV_X3                                         0x0F000000

    #define     BA_QMV_Y3                                      0x0003
    #define     B16QMV_Y3                                      0x0002
    #define   LSb32QMV_Y3                                         28
    #define   LSb16QMV_Y3                                         12
    #define       bQMV_Y3                                      4
    #define   MSK32QMV_Y3                                         0xF0000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_QMV {
    ///////////////////////////////////////////////////////////
    #define   GET32QMV_X(r32)                                  _BFGET_(r32, 3, 0)
    #define   SET32QMV_X(r32,v)                                _BFSET_(r32, 3, 0,v)
    #define   GET16QMV_X(r16)                                  _BFGET_(r16, 3, 0)
    #define   SET16QMV_X(r16,v)                                _BFSET_(r16, 3, 0,v)

    #define   GET32QMV_Y(r32)                                  _BFGET_(r32, 7, 4)
    #define   SET32QMV_Y(r32,v)                                _BFSET_(r32, 7, 4,v)
    #define   GET16QMV_Y(r16)                                  _BFGET_(r16, 7, 4)
    #define   SET16QMV_Y(r16,v)                                _BFSET_(r16, 7, 4,v)

    #define   GET32QMV_X1(r32)                                 _BFGET_(r32,11, 8)
    #define   SET32QMV_X1(r32,v)                               _BFSET_(r32,11, 8,v)
    #define   GET16QMV_X1(r16)                                 _BFGET_(r16,11, 8)
    #define   SET16QMV_X1(r16,v)                               _BFSET_(r16,11, 8,v)

    #define   GET32QMV_Y1(r32)                                 _BFGET_(r32,15,12)
    #define   SET32QMV_Y1(r32,v)                               _BFSET_(r32,15,12,v)
    #define   GET16QMV_Y1(r16)                                 _BFGET_(r16,15,12)
    #define   SET16QMV_Y1(r16,v)                               _BFSET_(r16,15,12,v)

    #define   GET32QMV_X2(r32)                                 _BFGET_(r32,19,16)
    #define   SET32QMV_X2(r32,v)                               _BFSET_(r32,19,16,v)
    #define   GET16QMV_X2(r16)                                 _BFGET_(r16, 3, 0)
    #define   SET16QMV_X2(r16,v)                               _BFSET_(r16, 3, 0,v)

    #define   GET32QMV_Y2(r32)                                 _BFGET_(r32,23,20)
    #define   SET32QMV_Y2(r32,v)                               _BFSET_(r32,23,20,v)
    #define   GET16QMV_Y2(r16)                                 _BFGET_(r16, 7, 4)
    #define   SET16QMV_Y2(r16,v)                               _BFSET_(r16, 7, 4,v)

    #define   GET32QMV_X3(r32)                                 _BFGET_(r32,27,24)
    #define   SET32QMV_X3(r32,v)                               _BFSET_(r32,27,24,v)
    #define   GET16QMV_X3(r16)                                 _BFGET_(r16,11, 8)
    #define   SET16QMV_X3(r16,v)                               _BFSET_(r16,11, 8,v)

    #define   GET32QMV_Y3(r32)                                 _BFGET_(r32,31,28)
    #define   SET32QMV_Y3(r32,v)                               _BFSET_(r32,31,28,v)
    #define   GET16QMV_Y3(r16)                                 _BFGET_(r16,15,12)
    #define   SET16QMV_Y3(r16,v)                               _BFSET_(r16,15,12,v)

            UNSG32 u_X                                         :  4;
            UNSG32 u_Y                                         :  4;
            UNSG32 u_X1                                        :  4;
            UNSG32 u_Y1                                        :  4;
            UNSG32 u_X2                                        :  4;
            UNSG32 u_Y2                                        :  4;
            UNSG32 u_X3                                        :  4;
            UNSG32 u_Y3                                        :  4;
    ///////////////////////////////////////////////////////////
    } SIE_QMV;

    ///////////////////////////////////////////////////////////
     SIGN32 QMV_drvrd(SIE_QMV *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 QMV_drvwr(SIE_QMV *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void QMV_reset(SIE_QMV *p);
     SIGN32 QMV_cmp  (SIE_QMV *p, SIE_QMV *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define QMV_check(p,pie,pfx,hLOG) QMV_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define QMV_print(p,    pfx,hLOG) QMV_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: QMV
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE IntraLuma                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 8  mode                      
///                                    : Vertical                  0x0
///                                    : Horizontal                0x1
///                                    : DC                        0x2
///                                    : DiagonalDownLeft          0x3
///                                    : DiagonalDownRight         0x4
///                                    : VerticalRight             0x5
///                                    : HorizontalDown            0x6
///                                    : VerticalLeft              0x7
///                                    : HorizontalUp              0x8
///                                                 ###
///                                                 * Intra NxN prediction mode for luma blocks
///                                                 ###
///                                    : Vertical16x16             0x0
///                                    : Horizontal16x16           0x1
///                                    : DC16x16                   0x2
///                                    : Plane16x16                0x3
///                                                 ###
///                                                 * Intra 16x16 prediction mode for luma blocks
///                                                 ###
///               %unsigned 8  mode1                     
///               %unsigned 8  mode2                     
///               %unsigned 8  mode3                     
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_IntraLuma
#define h_IntraLuma (){}

    #define     BA_IntraLuma_mode                              0x0000
    #define     B16IntraLuma_mode                              0x0000
    #define   LSb32IntraLuma_mode                                 0
    #define   LSb16IntraLuma_mode                                 0
    #define       bIntraLuma_mode                              8
    #define   MSK32IntraLuma_mode                                 0x000000FF
    #define        IntraLuma_mode_Vertical                                  0x0
    #define        IntraLuma_mode_Horizontal                                0x1
    #define        IntraLuma_mode_DC                                        0x2
    #define        IntraLuma_mode_DiagonalDownLeft                          0x3
    #define        IntraLuma_mode_DiagonalDownRight                         0x4
    #define        IntraLuma_mode_VerticalRight                             0x5
    #define        IntraLuma_mode_HorizontalDown                            0x6
    #define        IntraLuma_mode_VerticalLeft                              0x7
    #define        IntraLuma_mode_HorizontalUp                              0x8
    #define        IntraLuma_mode_Vertical16x16                             0x0
    #define        IntraLuma_mode_Horizontal16x16                           0x1
    #define        IntraLuma_mode_DC16x16                                   0x2
    #define        IntraLuma_mode_Plane16x16                                0x3

    #define     BA_IntraLuma_mode1                             0x0001
    #define     B16IntraLuma_mode1                             0x0000
    #define   LSb32IntraLuma_mode1                                8
    #define   LSb16IntraLuma_mode1                                8
    #define       bIntraLuma_mode1                             8
    #define   MSK32IntraLuma_mode1                                0x0000FF00

    #define     BA_IntraLuma_mode2                             0x0002
    #define     B16IntraLuma_mode2                             0x0002
    #define   LSb32IntraLuma_mode2                                16
    #define   LSb16IntraLuma_mode2                                0
    #define       bIntraLuma_mode2                             8
    #define   MSK32IntraLuma_mode2                                0x00FF0000

    #define     BA_IntraLuma_mode3                             0x0003
    #define     B16IntraLuma_mode3                             0x0002
    #define   LSb32IntraLuma_mode3                                24
    #define   LSb16IntraLuma_mode3                                8
    #define       bIntraLuma_mode3                             8
    #define   MSK32IntraLuma_mode3                                0xFF000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_IntraLuma {
    ///////////////////////////////////////////////////////////
    #define   GET32IntraLuma_mode(r32)                         _BFGET_(r32, 7, 0)
    #define   SET32IntraLuma_mode(r32,v)                       _BFSET_(r32, 7, 0,v)
    #define   GET16IntraLuma_mode(r16)                         _BFGET_(r16, 7, 0)
    #define   SET16IntraLuma_mode(r16,v)                       _BFSET_(r16, 7, 0,v)

    #define   GET32IntraLuma_mode1(r32)                        _BFGET_(r32,15, 8)
    #define   SET32IntraLuma_mode1(r32,v)                      _BFSET_(r32,15, 8,v)
    #define   GET16IntraLuma_mode1(r16)                        _BFGET_(r16,15, 8)
    #define   SET16IntraLuma_mode1(r16,v)                      _BFSET_(r16,15, 8,v)

    #define   GET32IntraLuma_mode2(r32)                        _BFGET_(r32,23,16)
    #define   SET32IntraLuma_mode2(r32,v)                      _BFSET_(r32,23,16,v)
    #define   GET16IntraLuma_mode2(r16)                        _BFGET_(r16, 7, 0)
    #define   SET16IntraLuma_mode2(r16,v)                      _BFSET_(r16, 7, 0,v)

    #define   GET32IntraLuma_mode3(r32)                        _BFGET_(r32,31,24)
    #define   SET32IntraLuma_mode3(r32,v)                      _BFSET_(r32,31,24,v)
    #define   GET16IntraLuma_mode3(r16)                        _BFGET_(r16,15, 8)
    #define   SET16IntraLuma_mode3(r16,v)                      _BFSET_(r16,15, 8,v)

            UNSG32 u_mode                                      :  8;
            UNSG32 u_mode1                                     :  8;
            UNSG32 u_mode2                                     :  8;
            UNSG32 u_mode3                                     :  8;
    ///////////////////////////////////////////////////////////
    } SIE_IntraLuma;

    ///////////////////////////////////////////////////////////
     SIGN32 IntraLuma_drvrd(SIE_IntraLuma *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 IntraLuma_drvwr(SIE_IntraLuma *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void IntraLuma_reset(SIE_IntraLuma *p);
     SIGN32 IntraLuma_cmp  (SIE_IntraLuma *p, SIE_IntraLuma *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define IntraLuma_check(p,pie,pfx,hLOG) IntraLuma_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define IntraLuma_print(p,    pfx,hLOG) IntraLuma_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: IntraLuma
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE MBPROP                                   (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 3  type                      
///                                    ###
///                                    * Refer to BLK_xxx in decHal_mbLvl.sxw.txt
///                                    ###
///               %unsigned 2  partition                 
///                                    ###
///                                    * See BLK.partition
///                                    ###
///               %unsigned 1  t8x8                      
///                                    ###
///                                    * 0/1 as 4x4/8x8 transform
///                                    * IntraPROP.t8x8I & Parse( transform_8x8_flag )
///                                    * InterPROP.t8x8PB & cbpLuma & !flat4x4 &
///                                    * Parse( transform_8x8_flag )
///                                    * for vc1: OVERFLAGMB from stream-parser to
///                                    * syntax-processor in raw mode
///                                    ###
///               %unsigned 1  MBAFF                     
///                                    ###
///                                    * H.264 MBAFF picture
///                                    * MPEG2/4/VC1: use for frame or field DCT
///                                    ###
///               %unsigned 1  FLD                       
///                                    ###
///                                    * - if current MB is MBAFF field MB
///                                    * MPEG2: use for frame or field MV
///                                    * MPEG4: field_prediction
///                                    * (information of field_reference also decoded, not decide whether need to transfer,maybe slice level info)
///                                    ###
///               %unsigned 1  FLDNeighborA              
///                                    ###
///                                    * - if left MB is MBAFF field MB
///                                    ###
///               %unsigned 1  FLDNeighborB              
///                                    ###
///                                    * - if upper MB is MBAFF field MB
///                                    ###
///               %unsigned 1  FLDNeighborC              
///                                    ###
///                                    * - if upper-right MB is MBAFF field MB
///                                    ###
///               %unsigned 1  FLDNeighborD              
///                                    ###
///                                    * - if upper-left MB is MBAFF field MB
///                                    ###
///               %unsigned 1  NeighborA                 
///                                    ###
///                                    * From stream-parser to syntax-processor:
///                                    * - if left MB is available
///                                    * From vScope to PCube:
///                                    * - if left MB is available as intra predictor
///                                    ###
///               %unsigned 1  NeighborB                 
///                                    ###
///                                    * From stream-parser to syntax-processor:
///                                    * - if upper MB is available
///                                    * From vScope to PCube:
///                                    * - if upper MB is available as intra predictor
///                                    ###
///               %unsigned 1  NeighborC                 
///                                    ###
///                                    * From stream-parser to syntax-processor:
///                                    * - if upper-right MB is available
///                                    * From vScope to PCube:
///                                    * - if upper-right MB is available as intra predictor
///                                    ###
///               %unsigned 1  NeighborD                 
///                                    ###
///                                    * From stream-parser to syntax-processor:
///                                    * - if upper-left MB is available
///                                    * From vScope to PCube:
///                                    * - if upper-left MB is available as intra predictor
///                                    ###
///               %unsigned 1  LastInSeq                 
///                                    ###
///                                    * If last MB in sequence
///                                    ###
///               %unsigned 3  NumBLK                    
///                                    ###
///                                    * Number of non-zero blocks (0~6) associated with CBP below
///                                    ###
///               %unsigned 2  vc1ITtype_0i              
///               %unsigned 2  vc1ITtype_1i              
///               %unsigned 2  vc1ITtype_2i              
///               %unsigned 2  vc1ITtype_3i              
///               %unsigned 2  vc1ITtype_4i              
///               %unsigned 2  vc1ITtype_5i              
///                                    : vc1_t4x4                  0x0
///                                    : vc1_t8x8                  0x1
///                                    : vc1_t4x8                  0x2
///                                    : vc1_t8x4                  0x3
///                                                 ###
///                                                 * Vc1 Inverse transform type
///                                                 ###
///                                    : vp6_unknown               0x0
///                                    : vp6_bilinear              0x1
///                                    : vp6_bicubic               0x2
///                                                 ###
///                                                 * VP6 interpolation mode for each 8x8 block
///                                                 ###
///     @ 0x00004                      (P)
///               %unsigned 8  MBX                       
///                                    ###
///                                    * X-location of current MB
///                                    ###
///               %unsigned 8  MBY                       
///                                    ###
///                                    * Y-location of current MB
///                                    ###
///               %unsigned 8  CBP                       
///                                    ###
///                                    * All zero flags for 8x8 blocks
///                                    * - H264 luma (intra 16x16): all 4 CBP bits are 1
///                                    * - H264 luma (others): same as decoded CBP bit
///                                    * - H264 chroma: U/V use same (=0 if CBPUV=0)
///                                    ###
///               %unsigned 8  CBPDC                     
///                                    ###
///                                    * DC-only flags for 8x8 (4 of 4x4) blocks
///                                    * - H264 luma (intra 16x16): not decoded CBP
///                                    * - H264 luma (8x8): CBP=1 && only (0,0) is none-zero
///                                    * - H264 luma (4x4): CBP=1 && all-zero or only (0,0) is non-zero for each 4x4 block in 8x8
///                                    * - H264 chroma: U/V use same (=1 if CBPUV=1)
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 BLK                  
///               $BLK                 BLK               REG          
///                                    ###
///                                    * Cast to 8b BLK[4] (flatten for each 8x8)
///                                    * - 1mv: BLK[0]=BLK[1]=BLK[2]=BLK[3]
///                                    * - 2mvLR: BLK[0]=BLK[2], BLK[1]=BLK[3]
///                                    * - 2mvTB: BLK[0]=BLK[1], BLK[2]=BLK[3]
///                                    ###
///     @ 0x0000C                      (P)
///               %unsigned 2  chroma                    
///                                    : DC                        0x0
///                                    : Horizontal                0x1
///                                    : Vertical                  0x2
///                                    : Plane                     0x3
///                                                 ###
///                                                 * Intra prediction mode for chroma blocks
///                                                 ###
///                                    : ACP_OFF                   0x0
///                                    : ACP_ON                    0x1
///                                                 ###
///                                                 * MPEG4/VC1: 1 bit to identify AC_Pred
///                                                 ###
///               %unsigned 2  first_rnd                 
///                                    ###
///                                    * Reserved
///                                    ###
///               %unsigned 1  vLumaDB                   
///                                    ###
///                                    * If luma vertical edges to be filtered
///                                    ###
///               %unsigned 1  vChromaDB                 
///                                    ###
///                                    * If chroma vertical edges to be filtered
///                                    ###
///               %unsigned 1  hLumaDB                   
///                                    ###
///                                    * If luma horizontal edges to be filtered
///                                    ###
///               %unsigned 1  hChromaDB                 
///                                    ###
///                                    * If chroma horizontal edges to be filtered
///                                    ###
///               %unsigned 8  QP                        
///                                    ###
///                                    * MB QP for luma
///                                    * VP6: 6-bit flag to indicate loop-filtering of vertical edges for each 8x8 block
///                                    ###
///               %unsigned 8  Qu                        
///                                    ###
///                                    * MB QP for Cb
///                                    * VP6: 6-bit flag to indicate loop-filtering of horizontal edges for each 8x8 block
///                                    ###
///               %unsigned 8  Qv                        
///                                    ###
///                                    * MB QP for Cr
///                                    ###
///     @ 0x00010                      (P)
///     # 0x00010 pred                 
///               $IntraLuma           pred              REG       [4]
///                                    ###
///                                    * - Intra16x16: 8b IntraLuma[1]
///                                    * - Intra8x8: 8b IntraLuma[4:idx8x8]
///                                    * - Intra4x4: 8b IntraLuma[4:idx8x8][4:idx4x4]
///                                    * NOTE: IntraNxN use {1b-prev,3b-rem} (before prediction) between parser & syntax processor
///                                    * Inter: cast to 16b rIDX[4:BLK][2:L0/L1] (flatten for all 8x8)
///                                    * - 1mv: pred[0]=pred[1]=pred[2]=pred[3]
///                                    * - 2mvLR: pred[0]=pred[2], pred[1]=pred[3]
///                                    * - 2mvTB: pred[0]=pred[1], pred[2]=pred[3]
///                                    * 1`
///                                    ###
///     @ 0x00020                      (P)
///     # 0x00020 qmv                  
///               $vcMsgMV             qmv               REG       [8]
///                                    ###
///                                    * Cast to 8b QMV[2:L0/L1][4:BLK][4:Sub-BLK]
///                                    * Don't care between parser to syntax processor
///                                    * End of MBPROP
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      64B, bits:     512b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_MBPROP
#define h_MBPROP (){}

    #define     BA_MBPROP_type                                 0x0000
    #define     B16MBPROP_type                                 0x0000
    #define   LSb32MBPROP_type                                    0
    #define   LSb16MBPROP_type                                    0
    #define       bMBPROP_type                                 3
    #define   MSK32MBPROP_type                                    0x00000007

    #define     BA_MBPROP_partition                            0x0000
    #define     B16MBPROP_partition                            0x0000
    #define   LSb32MBPROP_partition                               3
    #define   LSb16MBPROP_partition                               3
    #define       bMBPROP_partition                            2
    #define   MSK32MBPROP_partition                               0x00000018

    #define     BA_MBPROP_t8x8                                 0x0000
    #define     B16MBPROP_t8x8                                 0x0000
    #define   LSb32MBPROP_t8x8                                    5
    #define   LSb16MBPROP_t8x8                                    5
    #define       bMBPROP_t8x8                                 1
    #define   MSK32MBPROP_t8x8                                    0x00000020

    #define     BA_MBPROP_MBAFF                                0x0000
    #define     B16MBPROP_MBAFF                                0x0000
    #define   LSb32MBPROP_MBAFF                                   6
    #define   LSb16MBPROP_MBAFF                                   6
    #define       bMBPROP_MBAFF                                1
    #define   MSK32MBPROP_MBAFF                                   0x00000040

    #define     BA_MBPROP_FLD                                  0x0000
    #define     B16MBPROP_FLD                                  0x0000
    #define   LSb32MBPROP_FLD                                     7
    #define   LSb16MBPROP_FLD                                     7
    #define       bMBPROP_FLD                                  1
    #define   MSK32MBPROP_FLD                                     0x00000080

    #define     BA_MBPROP_FLDNeighborA                         0x0001
    #define     B16MBPROP_FLDNeighborA                         0x0000
    #define   LSb32MBPROP_FLDNeighborA                            8
    #define   LSb16MBPROP_FLDNeighborA                            8
    #define       bMBPROP_FLDNeighborA                         1
    #define   MSK32MBPROP_FLDNeighborA                            0x00000100

    #define     BA_MBPROP_FLDNeighborB                         0x0001
    #define     B16MBPROP_FLDNeighborB                         0x0000
    #define   LSb32MBPROP_FLDNeighborB                            9
    #define   LSb16MBPROP_FLDNeighborB                            9
    #define       bMBPROP_FLDNeighborB                         1
    #define   MSK32MBPROP_FLDNeighborB                            0x00000200

    #define     BA_MBPROP_FLDNeighborC                         0x0001
    #define     B16MBPROP_FLDNeighborC                         0x0000
    #define   LSb32MBPROP_FLDNeighborC                            10
    #define   LSb16MBPROP_FLDNeighborC                            10
    #define       bMBPROP_FLDNeighborC                         1
    #define   MSK32MBPROP_FLDNeighborC                            0x00000400

    #define     BA_MBPROP_FLDNeighborD                         0x0001
    #define     B16MBPROP_FLDNeighborD                         0x0000
    #define   LSb32MBPROP_FLDNeighborD                            11
    #define   LSb16MBPROP_FLDNeighborD                            11
    #define       bMBPROP_FLDNeighborD                         1
    #define   MSK32MBPROP_FLDNeighborD                            0x00000800

    #define     BA_MBPROP_NeighborA                            0x0001
    #define     B16MBPROP_NeighborA                            0x0000
    #define   LSb32MBPROP_NeighborA                               12
    #define   LSb16MBPROP_NeighborA                               12
    #define       bMBPROP_NeighborA                            1
    #define   MSK32MBPROP_NeighborA                               0x00001000

    #define     BA_MBPROP_NeighborB                            0x0001
    #define     B16MBPROP_NeighborB                            0x0000
    #define   LSb32MBPROP_NeighborB                               13
    #define   LSb16MBPROP_NeighborB                               13
    #define       bMBPROP_NeighborB                            1
    #define   MSK32MBPROP_NeighborB                               0x00002000

    #define     BA_MBPROP_NeighborC                            0x0001
    #define     B16MBPROP_NeighborC                            0x0000
    #define   LSb32MBPROP_NeighborC                               14
    #define   LSb16MBPROP_NeighborC                               14
    #define       bMBPROP_NeighborC                            1
    #define   MSK32MBPROP_NeighborC                               0x00004000

    #define     BA_MBPROP_NeighborD                            0x0001
    #define     B16MBPROP_NeighborD                            0x0000
    #define   LSb32MBPROP_NeighborD                               15
    #define   LSb16MBPROP_NeighborD                               15
    #define       bMBPROP_NeighborD                            1
    #define   MSK32MBPROP_NeighborD                               0x00008000

    #define     BA_MBPROP_LastInSeq                            0x0002
    #define     B16MBPROP_LastInSeq                            0x0002
    #define   LSb32MBPROP_LastInSeq                               16
    #define   LSb16MBPROP_LastInSeq                               0
    #define       bMBPROP_LastInSeq                            1
    #define   MSK32MBPROP_LastInSeq                               0x00010000

    #define     BA_MBPROP_NumBLK                               0x0002
    #define     B16MBPROP_NumBLK                               0x0002
    #define   LSb32MBPROP_NumBLK                                  17
    #define   LSb16MBPROP_NumBLK                                  1
    #define       bMBPROP_NumBLK                               3
    #define   MSK32MBPROP_NumBLK                                  0x000E0000

    #define     BA_MBPROP_vc1ITtype_0i                         0x0002
    #define     B16MBPROP_vc1ITtype_0i                         0x0002
    #define   LSb32MBPROP_vc1ITtype_0i                            20
    #define   LSb16MBPROP_vc1ITtype_0i                            4
    #define       bMBPROP_vc1ITtype_0i                         2
    #define   MSK32MBPROP_vc1ITtype_0i                            0x00300000

    #define     BA_MBPROP_vc1ITtype_1i                         0x0002
    #define     B16MBPROP_vc1ITtype_1i                         0x0002
    #define   LSb32MBPROP_vc1ITtype_1i                            22
    #define   LSb16MBPROP_vc1ITtype_1i                            6
    #define       bMBPROP_vc1ITtype_1i                         2
    #define   MSK32MBPROP_vc1ITtype_1i                            0x00C00000

    #define     BA_MBPROP_vc1ITtype_2i                         0x0003
    #define     B16MBPROP_vc1ITtype_2i                         0x0002
    #define   LSb32MBPROP_vc1ITtype_2i                            24
    #define   LSb16MBPROP_vc1ITtype_2i                            8
    #define       bMBPROP_vc1ITtype_2i                         2
    #define   MSK32MBPROP_vc1ITtype_2i                            0x03000000

    #define     BA_MBPROP_vc1ITtype_3i                         0x0003
    #define     B16MBPROP_vc1ITtype_3i                         0x0002
    #define   LSb32MBPROP_vc1ITtype_3i                            26
    #define   LSb16MBPROP_vc1ITtype_3i                            10
    #define       bMBPROP_vc1ITtype_3i                         2
    #define   MSK32MBPROP_vc1ITtype_3i                            0x0C000000

    #define     BA_MBPROP_vc1ITtype_4i                         0x0003
    #define     B16MBPROP_vc1ITtype_4i                         0x0002
    #define   LSb32MBPROP_vc1ITtype_4i                            28
    #define   LSb16MBPROP_vc1ITtype_4i                            12
    #define       bMBPROP_vc1ITtype_4i                         2
    #define   MSK32MBPROP_vc1ITtype_4i                            0x30000000

    #define     BA_MBPROP_vc1ITtype_5i                         0x0003
    #define     B16MBPROP_vc1ITtype_5i                         0x0002
    #define   LSb32MBPROP_vc1ITtype_5i                            30
    #define   LSb16MBPROP_vc1ITtype_5i                            14
    #define       bMBPROP_vc1ITtype_5i                         2
    #define   MSK32MBPROP_vc1ITtype_5i                            0xC0000000
    #define        MBPROP_vc1ITtype_vc1_t4x4                                0x0
    #define        MBPROP_vc1ITtype_vc1_t8x8                                0x1
    #define        MBPROP_vc1ITtype_vc1_t4x8                                0x2
    #define        MBPROP_vc1ITtype_vc1_t8x4                                0x3
    #define        MBPROP_vc1ITtype_vp6_unknown                             0x0
    #define        MBPROP_vc1ITtype_vp6_bilinear                            0x1
    #define        MBPROP_vc1ITtype_vp6_bicubic                             0x2
    ///////////////////////////////////////////////////////////

    #define     BA_MBPROP_MBX                                  0x0004
    #define     B16MBPROP_MBX                                  0x0004
    #define   LSb32MBPROP_MBX                                     0
    #define   LSb16MBPROP_MBX                                     0
    #define       bMBPROP_MBX                                  8
    #define   MSK32MBPROP_MBX                                     0x000000FF

    #define     BA_MBPROP_MBY                                  0x0005
    #define     B16MBPROP_MBY                                  0x0004
    #define   LSb32MBPROP_MBY                                     8
    #define   LSb16MBPROP_MBY                                     8
    #define       bMBPROP_MBY                                  8
    #define   MSK32MBPROP_MBY                                     0x0000FF00

    #define     BA_MBPROP_CBP                                  0x0006
    #define     B16MBPROP_CBP                                  0x0006
    #define   LSb32MBPROP_CBP                                     16
    #define   LSb16MBPROP_CBP                                     0
    #define       bMBPROP_CBP                                  8
    #define   MSK32MBPROP_CBP                                     0x00FF0000

    #define     BA_MBPROP_CBPDC                                0x0007
    #define     B16MBPROP_CBPDC                                0x0006
    #define   LSb32MBPROP_CBPDC                                   24
    #define   LSb16MBPROP_CBPDC                                   8
    #define       bMBPROP_CBPDC                                8
    #define   MSK32MBPROP_CBPDC                                   0xFF000000
    ///////////////////////////////////////////////////////////
    #define     RA_MBPROP_BLK                                  0x0008
    ///////////////////////////////////////////////////////////

    #define     BA_MBPROP_chroma                               0x000C
    #define     B16MBPROP_chroma                               0x000C
    #define   LSb32MBPROP_chroma                                  0
    #define   LSb16MBPROP_chroma                                  0
    #define       bMBPROP_chroma                               2
    #define   MSK32MBPROP_chroma                                  0x00000003
    #define        MBPROP_chroma_DC                                         0x0
    #define        MBPROP_chroma_Horizontal                                 0x1
    #define        MBPROP_chroma_Vertical                                   0x2
    #define        MBPROP_chroma_Plane                                      0x3
    #define        MBPROP_chroma_ACP_OFF                                    0x0
    #define        MBPROP_chroma_ACP_ON                                     0x1

    #define     BA_MBPROP_first_rnd                            0x000C
    #define     B16MBPROP_first_rnd                            0x000C
    #define   LSb32MBPROP_first_rnd                               2
    #define   LSb16MBPROP_first_rnd                               2
    #define       bMBPROP_first_rnd                            2
    #define   MSK32MBPROP_first_rnd                               0x0000000C

    #define     BA_MBPROP_vLumaDB                              0x000C
    #define     B16MBPROP_vLumaDB                              0x000C
    #define   LSb32MBPROP_vLumaDB                                 4
    #define   LSb16MBPROP_vLumaDB                                 4
    #define       bMBPROP_vLumaDB                              1
    #define   MSK32MBPROP_vLumaDB                                 0x00000010

    #define     BA_MBPROP_vChromaDB                            0x000C
    #define     B16MBPROP_vChromaDB                            0x000C
    #define   LSb32MBPROP_vChromaDB                               5
    #define   LSb16MBPROP_vChromaDB                               5
    #define       bMBPROP_vChromaDB                            1
    #define   MSK32MBPROP_vChromaDB                               0x00000020

    #define     BA_MBPROP_hLumaDB                              0x000C
    #define     B16MBPROP_hLumaDB                              0x000C
    #define   LSb32MBPROP_hLumaDB                                 6
    #define   LSb16MBPROP_hLumaDB                                 6
    #define       bMBPROP_hLumaDB                              1
    #define   MSK32MBPROP_hLumaDB                                 0x00000040

    #define     BA_MBPROP_hChromaDB                            0x000C
    #define     B16MBPROP_hChromaDB                            0x000C
    #define   LSb32MBPROP_hChromaDB                               7
    #define   LSb16MBPROP_hChromaDB                               7
    #define       bMBPROP_hChromaDB                            1
    #define   MSK32MBPROP_hChromaDB                               0x00000080

    #define     BA_MBPROP_QP                                   0x000D
    #define     B16MBPROP_QP                                   0x000C
    #define   LSb32MBPROP_QP                                      8
    #define   LSb16MBPROP_QP                                      8
    #define       bMBPROP_QP                                   8
    #define   MSK32MBPROP_QP                                      0x0000FF00

    #define     BA_MBPROP_Qu                                   0x000E
    #define     B16MBPROP_Qu                                   0x000E
    #define   LSb32MBPROP_Qu                                      16
    #define   LSb16MBPROP_Qu                                      0
    #define       bMBPROP_Qu                                   8
    #define   MSK32MBPROP_Qu                                      0x00FF0000

    #define     BA_MBPROP_Qv                                   0x000F
    #define     B16MBPROP_Qv                                   0x000E
    #define   LSb32MBPROP_Qv                                      24
    #define   LSb16MBPROP_Qv                                      8
    #define       bMBPROP_Qv                                   8
    #define   MSK32MBPROP_Qv                                      0xFF000000
    ///////////////////////////////////////////////////////////
    #define     RA_MBPROP_pred                                 0x0010
    ///////////////////////////////////////////////////////////
    #define     RA_MBPROP_qmv                                  0x0020
    ///////////////////////////////////////////////////////////

    typedef struct SIE_MBPROP {
    ///////////////////////////////////////////////////////////
    #define   GET32MBPROP_type(r32)                            _BFGET_(r32, 2, 0)
    #define   SET32MBPROP_type(r32,v)                          _BFSET_(r32, 2, 0,v)
    #define   GET16MBPROP_type(r16)                            _BFGET_(r16, 2, 0)
    #define   SET16MBPROP_type(r16,v)                          _BFSET_(r16, 2, 0,v)

    #define   GET32MBPROP_partition(r32)                       _BFGET_(r32, 4, 3)
    #define   SET32MBPROP_partition(r32,v)                     _BFSET_(r32, 4, 3,v)
    #define   GET16MBPROP_partition(r16)                       _BFGET_(r16, 4, 3)
    #define   SET16MBPROP_partition(r16,v)                     _BFSET_(r16, 4, 3,v)

    #define   GET32MBPROP_t8x8(r32)                            _BFGET_(r32, 5, 5)
    #define   SET32MBPROP_t8x8(r32,v)                          _BFSET_(r32, 5, 5,v)
    #define   GET16MBPROP_t8x8(r16)                            _BFGET_(r16, 5, 5)
    #define   SET16MBPROP_t8x8(r16,v)                          _BFSET_(r16, 5, 5,v)

    #define   GET32MBPROP_MBAFF(r32)                           _BFGET_(r32, 6, 6)
    #define   SET32MBPROP_MBAFF(r32,v)                         _BFSET_(r32, 6, 6,v)
    #define   GET16MBPROP_MBAFF(r16)                           _BFGET_(r16, 6, 6)
    #define   SET16MBPROP_MBAFF(r16,v)                         _BFSET_(r16, 6, 6,v)

    #define   GET32MBPROP_FLD(r32)                             _BFGET_(r32, 7, 7)
    #define   SET32MBPROP_FLD(r32,v)                           _BFSET_(r32, 7, 7,v)
    #define   GET16MBPROP_FLD(r16)                             _BFGET_(r16, 7, 7)
    #define   SET16MBPROP_FLD(r16,v)                           _BFSET_(r16, 7, 7,v)

    #define   GET32MBPROP_FLDNeighborA(r32)                    _BFGET_(r32, 8, 8)
    #define   SET32MBPROP_FLDNeighborA(r32,v)                  _BFSET_(r32, 8, 8,v)
    #define   GET16MBPROP_FLDNeighborA(r16)                    _BFGET_(r16, 8, 8)
    #define   SET16MBPROP_FLDNeighborA(r16,v)                  _BFSET_(r16, 8, 8,v)

    #define   GET32MBPROP_FLDNeighborB(r32)                    _BFGET_(r32, 9, 9)
    #define   SET32MBPROP_FLDNeighborB(r32,v)                  _BFSET_(r32, 9, 9,v)
    #define   GET16MBPROP_FLDNeighborB(r16)                    _BFGET_(r16, 9, 9)
    #define   SET16MBPROP_FLDNeighborB(r16,v)                  _BFSET_(r16, 9, 9,v)

    #define   GET32MBPROP_FLDNeighborC(r32)                    _BFGET_(r32,10,10)
    #define   SET32MBPROP_FLDNeighborC(r32,v)                  _BFSET_(r32,10,10,v)
    #define   GET16MBPROP_FLDNeighborC(r16)                    _BFGET_(r16,10,10)
    #define   SET16MBPROP_FLDNeighborC(r16,v)                  _BFSET_(r16,10,10,v)

    #define   GET32MBPROP_FLDNeighborD(r32)                    _BFGET_(r32,11,11)
    #define   SET32MBPROP_FLDNeighborD(r32,v)                  _BFSET_(r32,11,11,v)
    #define   GET16MBPROP_FLDNeighborD(r16)                    _BFGET_(r16,11,11)
    #define   SET16MBPROP_FLDNeighborD(r16,v)                  _BFSET_(r16,11,11,v)

    #define   GET32MBPROP_NeighborA(r32)                       _BFGET_(r32,12,12)
    #define   SET32MBPROP_NeighborA(r32,v)                     _BFSET_(r32,12,12,v)
    #define   GET16MBPROP_NeighborA(r16)                       _BFGET_(r16,12,12)
    #define   SET16MBPROP_NeighborA(r16,v)                     _BFSET_(r16,12,12,v)

    #define   GET32MBPROP_NeighborB(r32)                       _BFGET_(r32,13,13)
    #define   SET32MBPROP_NeighborB(r32,v)                     _BFSET_(r32,13,13,v)
    #define   GET16MBPROP_NeighborB(r16)                       _BFGET_(r16,13,13)
    #define   SET16MBPROP_NeighborB(r16,v)                     _BFSET_(r16,13,13,v)

    #define   GET32MBPROP_NeighborC(r32)                       _BFGET_(r32,14,14)
    #define   SET32MBPROP_NeighborC(r32,v)                     _BFSET_(r32,14,14,v)
    #define   GET16MBPROP_NeighborC(r16)                       _BFGET_(r16,14,14)
    #define   SET16MBPROP_NeighborC(r16,v)                     _BFSET_(r16,14,14,v)

    #define   GET32MBPROP_NeighborD(r32)                       _BFGET_(r32,15,15)
    #define   SET32MBPROP_NeighborD(r32,v)                     _BFSET_(r32,15,15,v)
    #define   GET16MBPROP_NeighborD(r16)                       _BFGET_(r16,15,15)
    #define   SET16MBPROP_NeighborD(r16,v)                     _BFSET_(r16,15,15,v)

    #define   GET32MBPROP_LastInSeq(r32)                       _BFGET_(r32,16,16)
    #define   SET32MBPROP_LastInSeq(r32,v)                     _BFSET_(r32,16,16,v)
    #define   GET16MBPROP_LastInSeq(r16)                       _BFGET_(r16, 0, 0)
    #define   SET16MBPROP_LastInSeq(r16,v)                     _BFSET_(r16, 0, 0,v)

    #define   GET32MBPROP_NumBLK(r32)                          _BFGET_(r32,19,17)
    #define   SET32MBPROP_NumBLK(r32,v)                        _BFSET_(r32,19,17,v)
    #define   GET16MBPROP_NumBLK(r16)                          _BFGET_(r16, 3, 1)
    #define   SET16MBPROP_NumBLK(r16,v)                        _BFSET_(r16, 3, 1,v)

    #define   GET32MBPROP_vc1ITtype_0i(r32)                    _BFGET_(r32,21,20)
    #define   SET32MBPROP_vc1ITtype_0i(r32,v)                  _BFSET_(r32,21,20,v)
    #define   GET16MBPROP_vc1ITtype_0i(r16)                    _BFGET_(r16, 5, 4)
    #define   SET16MBPROP_vc1ITtype_0i(r16,v)                  _BFSET_(r16, 5, 4,v)

    #define   GET32MBPROP_vc1ITtype_1i(r32)                    _BFGET_(r32,23,22)
    #define   SET32MBPROP_vc1ITtype_1i(r32,v)                  _BFSET_(r32,23,22,v)
    #define   GET16MBPROP_vc1ITtype_1i(r16)                    _BFGET_(r16, 7, 6)
    #define   SET16MBPROP_vc1ITtype_1i(r16,v)                  _BFSET_(r16, 7, 6,v)

    #define   GET32MBPROP_vc1ITtype_2i(r32)                    _BFGET_(r32,25,24)
    #define   SET32MBPROP_vc1ITtype_2i(r32,v)                  _BFSET_(r32,25,24,v)
    #define   GET16MBPROP_vc1ITtype_2i(r16)                    _BFGET_(r16, 9, 8)
    #define   SET16MBPROP_vc1ITtype_2i(r16,v)                  _BFSET_(r16, 9, 8,v)

    #define   GET32MBPROP_vc1ITtype_3i(r32)                    _BFGET_(r32,27,26)
    #define   SET32MBPROP_vc1ITtype_3i(r32,v)                  _BFSET_(r32,27,26,v)
    #define   GET16MBPROP_vc1ITtype_3i(r16)                    _BFGET_(r16,11,10)
    #define   SET16MBPROP_vc1ITtype_3i(r16,v)                  _BFSET_(r16,11,10,v)

    #define   GET32MBPROP_vc1ITtype_4i(r32)                    _BFGET_(r32,29,28)
    #define   SET32MBPROP_vc1ITtype_4i(r32,v)                  _BFSET_(r32,29,28,v)
    #define   GET16MBPROP_vc1ITtype_4i(r16)                    _BFGET_(r16,13,12)
    #define   SET16MBPROP_vc1ITtype_4i(r16,v)                  _BFSET_(r16,13,12,v)

    #define   GET32MBPROP_vc1ITtype_5i(r32)                    _BFGET_(r32,31,30)
    #define   SET32MBPROP_vc1ITtype_5i(r32,v)                  _BFSET_(r32,31,30,v)
    #define   GET16MBPROP_vc1ITtype_5i(r16)                    _BFGET_(r16,15,14)
    #define   SET16MBPROP_vc1ITtype_5i(r16,v)                  _BFSET_(r16,15,14,v)

            UNSG32 u_type                                      :  3;
            UNSG32 u_partition                                 :  2;
            UNSG32 u_t8x8                                      :  1;
            UNSG32 u_MBAFF                                     :  1;
            UNSG32 u_FLD                                       :  1;
            UNSG32 u_FLDNeighborA                              :  1;
            UNSG32 u_FLDNeighborB                              :  1;
            UNSG32 u_FLDNeighborC                              :  1;
            UNSG32 u_FLDNeighborD                              :  1;
            UNSG32 u_NeighborA                                 :  1;
            UNSG32 u_NeighborB                                 :  1;
            UNSG32 u_NeighborC                                 :  1;
            UNSG32 u_NeighborD                                 :  1;
            UNSG32 u_LastInSeq                                 :  1;
            UNSG32 u_NumBLK                                    :  3;
            UNSG32 u_vc1ITtype_0i                              :  2;
            UNSG32 u_vc1ITtype_1i                              :  2;
            UNSG32 u_vc1ITtype_2i                              :  2;
            UNSG32 u_vc1ITtype_3i                              :  2;
            UNSG32 u_vc1ITtype_4i                              :  2;
            UNSG32 u_vc1ITtype_5i                              :  2;
    ///////////////////////////////////////////////////////////
    #define   GET32MBPROP_MBX(r32)                             _BFGET_(r32, 7, 0)
    #define   SET32MBPROP_MBX(r32,v)                           _BFSET_(r32, 7, 0,v)
    #define   GET16MBPROP_MBX(r16)                             _BFGET_(r16, 7, 0)
    #define   SET16MBPROP_MBX(r16,v)                           _BFSET_(r16, 7, 0,v)

    #define   GET32MBPROP_MBY(r32)                             _BFGET_(r32,15, 8)
    #define   SET32MBPROP_MBY(r32,v)                           _BFSET_(r32,15, 8,v)
    #define   GET16MBPROP_MBY(r16)                             _BFGET_(r16,15, 8)
    #define   SET16MBPROP_MBY(r16,v)                           _BFSET_(r16,15, 8,v)

    #define   GET32MBPROP_CBP(r32)                             _BFGET_(r32,23,16)
    #define   SET32MBPROP_CBP(r32,v)                           _BFSET_(r32,23,16,v)
    #define   GET16MBPROP_CBP(r16)                             _BFGET_(r16, 7, 0)
    #define   SET16MBPROP_CBP(r16,v)                           _BFSET_(r16, 7, 0,v)

    #define   GET32MBPROP_CBPDC(r32)                           _BFGET_(r32,31,24)
    #define   SET32MBPROP_CBPDC(r32,v)                         _BFSET_(r32,31,24,v)
    #define   GET16MBPROP_CBPDC(r16)                           _BFGET_(r16,15, 8)
    #define   SET16MBPROP_CBPDC(r16,v)                         _BFSET_(r16,15, 8,v)

            UNSG32 u_MBX                                       :  8;
            UNSG32 u_MBY                                       :  8;
            UNSG32 u_CBP                                       :  8;
            UNSG32 u_CBPDC                                     :  8;
    ///////////////////////////////////////////////////////////
              SIE_BLK                                          ie_BLK;
    ///////////////////////////////////////////////////////////
    #define   GET32MBPROP_chroma(r32)                          _BFGET_(r32, 1, 0)
    #define   SET32MBPROP_chroma(r32,v)                        _BFSET_(r32, 1, 0,v)
    #define   GET16MBPROP_chroma(r16)                          _BFGET_(r16, 1, 0)
    #define   SET16MBPROP_chroma(r16,v)                        _BFSET_(r16, 1, 0,v)

    #define   GET32MBPROP_first_rnd(r32)                       _BFGET_(r32, 3, 2)
    #define   SET32MBPROP_first_rnd(r32,v)                     _BFSET_(r32, 3, 2,v)
    #define   GET16MBPROP_first_rnd(r16)                       _BFGET_(r16, 3, 2)
    #define   SET16MBPROP_first_rnd(r16,v)                     _BFSET_(r16, 3, 2,v)

    #define   GET32MBPROP_vLumaDB(r32)                         _BFGET_(r32, 4, 4)
    #define   SET32MBPROP_vLumaDB(r32,v)                       _BFSET_(r32, 4, 4,v)
    #define   GET16MBPROP_vLumaDB(r16)                         _BFGET_(r16, 4, 4)
    #define   SET16MBPROP_vLumaDB(r16,v)                       _BFSET_(r16, 4, 4,v)

    #define   GET32MBPROP_vChromaDB(r32)                       _BFGET_(r32, 5, 5)
    #define   SET32MBPROP_vChromaDB(r32,v)                     _BFSET_(r32, 5, 5,v)
    #define   GET16MBPROP_vChromaDB(r16)                       _BFGET_(r16, 5, 5)
    #define   SET16MBPROP_vChromaDB(r16,v)                     _BFSET_(r16, 5, 5,v)

    #define   GET32MBPROP_hLumaDB(r32)                         _BFGET_(r32, 6, 6)
    #define   SET32MBPROP_hLumaDB(r32,v)                       _BFSET_(r32, 6, 6,v)
    #define   GET16MBPROP_hLumaDB(r16)                         _BFGET_(r16, 6, 6)
    #define   SET16MBPROP_hLumaDB(r16,v)                       _BFSET_(r16, 6, 6,v)

    #define   GET32MBPROP_hChromaDB(r32)                       _BFGET_(r32, 7, 7)
    #define   SET32MBPROP_hChromaDB(r32,v)                     _BFSET_(r32, 7, 7,v)
    #define   GET16MBPROP_hChromaDB(r16)                       _BFGET_(r16, 7, 7)
    #define   SET16MBPROP_hChromaDB(r16,v)                     _BFSET_(r16, 7, 7,v)

    #define   GET32MBPROP_QP(r32)                              _BFGET_(r32,15, 8)
    #define   SET32MBPROP_QP(r32,v)                            _BFSET_(r32,15, 8,v)
    #define   GET16MBPROP_QP(r16)                              _BFGET_(r16,15, 8)
    #define   SET16MBPROP_QP(r16,v)                            _BFSET_(r16,15, 8,v)

    #define   GET32MBPROP_Qu(r32)                              _BFGET_(r32,23,16)
    #define   SET32MBPROP_Qu(r32,v)                            _BFSET_(r32,23,16,v)
    #define   GET16MBPROP_Qu(r16)                              _BFGET_(r16, 7, 0)
    #define   SET16MBPROP_Qu(r16,v)                            _BFSET_(r16, 7, 0,v)

    #define   GET32MBPROP_Qv(r32)                              _BFGET_(r32,31,24)
    #define   SET32MBPROP_Qv(r32,v)                            _BFSET_(r32,31,24,v)
    #define   GET16MBPROP_Qv(r16)                              _BFGET_(r16,15, 8)
    #define   SET16MBPROP_Qv(r16,v)                            _BFSET_(r16,15, 8,v)

            UNSG32 u_chroma                                    :  2;
            UNSG32 u_first_rnd                                 :  2;
            UNSG32 u_vLumaDB                                   :  1;
            UNSG32 u_vChromaDB                                 :  1;
            UNSG32 u_hLumaDB                                   :  1;
            UNSG32 u_hChromaDB                                 :  1;
            UNSG32 u_QP                                        :  8;
            UNSG32 u_Qu                                        :  8;
            UNSG32 u_Qv                                        :  8;
    ///////////////////////////////////////////////////////////
              SIE_IntraLuma                                    ie_pred[4];
    ///////////////////////////////////////////////////////////
              SIE_vcMsgMV                                      ie_qmv[8];
    ///////////////////////////////////////////////////////////
    } SIE_MBPROP;

    ///////////////////////////////////////////////////////////
     SIGN32 MBPROP_drvrd(SIE_MBPROP *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 MBPROP_drvwr(SIE_MBPROP *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void MBPROP_reset(SIE_MBPROP *p);
     SIGN32 MBPROP_cmp  (SIE_MBPROP *p, SIE_MBPROP *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define MBPROP_check(p,pie,pfx,hLOG) MBPROP_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define MBPROP_print(p,    pfx,hLOG) MBPROP_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: MBPROP
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE MBPROPJPEG                               (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 16 MBX                       
///                                    ###
///                                    * X-location of current MB
///                                    ###
///               %unsigned 16 MBY                       
///                                    ###
///                                    * Y-location of current MB
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 12 CBP                       
///                                    ###
///                                    * All zero flags for 8x8 blocks
///                                    ###
///               %unsigned 4  NumBLK                    
///                                    ###
///                                    * Number of non-zero blocks (0~12) associated with CBP above
///                                    ###
///               %unsigned 12 CBPDC                     
///                                    ###
///                                    * DC-only flags for 8x8 blocks
///                                    ###
///               %unsigned 1  LastInSeq                 
///                                    ###
///                                    * If last MB in sequence
///                                    ###
///               %unsigned 1  restart                   
///                                    ###
///                                    * If last MB of restart interval.
///                                    ###
///               %%        2          # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      62b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_MBPROPJPEG
#define h_MBPROPJPEG (){}

    #define     BA_MBPROPJPEG_MBX                              0x0000
    #define     B16MBPROPJPEG_MBX                              0x0000
    #define   LSb32MBPROPJPEG_MBX                                 0
    #define   LSb16MBPROPJPEG_MBX                                 0
    #define       bMBPROPJPEG_MBX                              16
    #define   MSK32MBPROPJPEG_MBX                                 0x0000FFFF

    #define     BA_MBPROPJPEG_MBY                              0x0002
    #define     B16MBPROPJPEG_MBY                              0x0002
    #define   LSb32MBPROPJPEG_MBY                                 16
    #define   LSb16MBPROPJPEG_MBY                                 0
    #define       bMBPROPJPEG_MBY                              16
    #define   MSK32MBPROPJPEG_MBY                                 0xFFFF0000
    ///////////////////////////////////////////////////////////

    #define     BA_MBPROPJPEG_CBP                              0x0004
    #define     B16MBPROPJPEG_CBP                              0x0004
    #define   LSb32MBPROPJPEG_CBP                                 0
    #define   LSb16MBPROPJPEG_CBP                                 0
    #define       bMBPROPJPEG_CBP                              12
    #define   MSK32MBPROPJPEG_CBP                                 0x00000FFF

    #define     BA_MBPROPJPEG_NumBLK                           0x0005
    #define     B16MBPROPJPEG_NumBLK                           0x0004
    #define   LSb32MBPROPJPEG_NumBLK                              12
    #define   LSb16MBPROPJPEG_NumBLK                              12
    #define       bMBPROPJPEG_NumBLK                           4
    #define   MSK32MBPROPJPEG_NumBLK                              0x0000F000

    #define     BA_MBPROPJPEG_CBPDC                            0x0006
    #define     B16MBPROPJPEG_CBPDC                            0x0006
    #define   LSb32MBPROPJPEG_CBPDC                               16
    #define   LSb16MBPROPJPEG_CBPDC                               0
    #define       bMBPROPJPEG_CBPDC                            12
    #define   MSK32MBPROPJPEG_CBPDC                               0x0FFF0000

    #define     BA_MBPROPJPEG_LastInSeq                        0x0007
    #define     B16MBPROPJPEG_LastInSeq                        0x0006
    #define   LSb32MBPROPJPEG_LastInSeq                           28
    #define   LSb16MBPROPJPEG_LastInSeq                           12
    #define       bMBPROPJPEG_LastInSeq                        1
    #define   MSK32MBPROPJPEG_LastInSeq                           0x10000000

    #define     BA_MBPROPJPEG_restart                          0x0007
    #define     B16MBPROPJPEG_restart                          0x0006
    #define   LSb32MBPROPJPEG_restart                             29
    #define   LSb16MBPROPJPEG_restart                             13
    #define       bMBPROPJPEG_restart                          1
    #define   MSK32MBPROPJPEG_restart                             0x20000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_MBPROPJPEG {
    ///////////////////////////////////////////////////////////
    #define   GET32MBPROPJPEG_MBX(r32)                         _BFGET_(r32,15, 0)
    #define   SET32MBPROPJPEG_MBX(r32,v)                       _BFSET_(r32,15, 0,v)
    #define   GET16MBPROPJPEG_MBX(r16)                         _BFGET_(r16,15, 0)
    #define   SET16MBPROPJPEG_MBX(r16,v)                       _BFSET_(r16,15, 0,v)

    #define   GET32MBPROPJPEG_MBY(r32)                         _BFGET_(r32,31,16)
    #define   SET32MBPROPJPEG_MBY(r32,v)                       _BFSET_(r32,31,16,v)
    #define   GET16MBPROPJPEG_MBY(r16)                         _BFGET_(r16,15, 0)
    #define   SET16MBPROPJPEG_MBY(r16,v)                       _BFSET_(r16,15, 0,v)

            UNSG32 u_MBX                                       : 16;
            UNSG32 u_MBY                                       : 16;
    ///////////////////////////////////////////////////////////
    #define   GET32MBPROPJPEG_CBP(r32)                         _BFGET_(r32,11, 0)
    #define   SET32MBPROPJPEG_CBP(r32,v)                       _BFSET_(r32,11, 0,v)
    #define   GET16MBPROPJPEG_CBP(r16)                         _BFGET_(r16,11, 0)
    #define   SET16MBPROPJPEG_CBP(r16,v)                       _BFSET_(r16,11, 0,v)

    #define   GET32MBPROPJPEG_NumBLK(r32)                      _BFGET_(r32,15,12)
    #define   SET32MBPROPJPEG_NumBLK(r32,v)                    _BFSET_(r32,15,12,v)
    #define   GET16MBPROPJPEG_NumBLK(r16)                      _BFGET_(r16,15,12)
    #define   SET16MBPROPJPEG_NumBLK(r16,v)                    _BFSET_(r16,15,12,v)

    #define   GET32MBPROPJPEG_CBPDC(r32)                       _BFGET_(r32,27,16)
    #define   SET32MBPROPJPEG_CBPDC(r32,v)                     _BFSET_(r32,27,16,v)
    #define   GET16MBPROPJPEG_CBPDC(r16)                       _BFGET_(r16,11, 0)
    #define   SET16MBPROPJPEG_CBPDC(r16,v)                     _BFSET_(r16,11, 0,v)

    #define   GET32MBPROPJPEG_LastInSeq(r32)                   _BFGET_(r32,28,28)
    #define   SET32MBPROPJPEG_LastInSeq(r32,v)                 _BFSET_(r32,28,28,v)
    #define   GET16MBPROPJPEG_LastInSeq(r16)                   _BFGET_(r16,12,12)
    #define   SET16MBPROPJPEG_LastInSeq(r16,v)                 _BFSET_(r16,12,12,v)

    #define   GET32MBPROPJPEG_restart(r32)                     _BFGET_(r32,29,29)
    #define   SET32MBPROPJPEG_restart(r32,v)                   _BFSET_(r32,29,29,v)
    #define   GET16MBPROPJPEG_restart(r16)                     _BFGET_(r16,13,13)
    #define   SET16MBPROPJPEG_restart(r16,v)                   _BFSET_(r16,13,13,v)

            UNSG32 u_CBP                                       : 12;
            UNSG32 u_NumBLK                                    :  4;
            UNSG32 u_CBPDC                                     : 12;
            UNSG32 u_LastInSeq                                 :  1;
            UNSG32 u_restart                                   :  1;
            UNSG32 RSVDx4_b30                                  :  2;
    ///////////////////////////////////////////////////////////
    } SIE_MBPROPJPEG;

    ///////////////////////////////////////////////////////////
     SIGN32 MBPROPJPEG_drvrd(SIE_MBPROPJPEG *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 MBPROPJPEG_drvwr(SIE_MBPROPJPEG *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void MBPROPJPEG_reset(SIE_MBPROPJPEG *p);
     SIGN32 MBPROPJPEG_cmp  (SIE_MBPROPJPEG *p, SIE_MBPROPJPEG *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define MBPROPJPEG_check(p,pie,pfx,hLOG) MBPROPJPEG_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define MBPROPJPEG_print(p,    pfx,hLOG) MBPROPJPEG_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: MBPROPJPEG
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE MBPAIR                                   (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 1  FLD                       
///                                    ###
///                                    * 1 for MBAFF field MB, 0 for otherwise
///                                    ###
///               %unsigned 9  SID                       
///                                    ###
///                                    * Slice ID
///                                    ###
///               %unsigned 6  QP_0i                     
///               %unsigned 6  QP_1i                     
///                                    ###
///                                    * QP luma of both macroblocks in pair
///                                    ###
///               %signed   5  QuDlt                     
///                                    ###
///                                    * [-12,12] for Cb QP delta
///                                    ###
///               %signed   5  QvDlt                     
///                                    ###
///                                    * [-12,12] for Cr QP delta
///                                    * End of MBPAIR
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_MBPAIR
#define h_MBPAIR (){}

    #define     BA_MBPAIR_FLD                                  0x0000
    #define     B16MBPAIR_FLD                                  0x0000
    #define   LSb32MBPAIR_FLD                                     0
    #define   LSb16MBPAIR_FLD                                     0
    #define       bMBPAIR_FLD                                  1
    #define   MSK32MBPAIR_FLD                                     0x00000001

    #define     BA_MBPAIR_SID                                  0x0000
    #define     B16MBPAIR_SID                                  0x0000
    #define   LSb32MBPAIR_SID                                     1
    #define   LSb16MBPAIR_SID                                     1
    #define       bMBPAIR_SID                                  9
    #define   MSK32MBPAIR_SID                                     0x000003FE

    #define     BA_MBPAIR_QP_0i                                0x0001
    #define     B16MBPAIR_QP_0i                                0x0000
    #define   LSb32MBPAIR_QP_0i                                   10
    #define   LSb16MBPAIR_QP_0i                                   10
    #define       bMBPAIR_QP_0i                                6
    #define   MSK32MBPAIR_QP_0i                                   0x0000FC00

    #define     BA_MBPAIR_QP_1i                                0x0002
    #define     B16MBPAIR_QP_1i                                0x0002
    #define   LSb32MBPAIR_QP_1i                                   16
    #define   LSb16MBPAIR_QP_1i                                   0
    #define       bMBPAIR_QP_1i                                6
    #define   MSK32MBPAIR_QP_1i                                   0x003F0000

    #define     BA_MBPAIR_QuDlt                                0x0002
    #define     B16MBPAIR_QuDlt                                0x0002
    #define   LSb32MBPAIR_QuDlt                                   22
    #define   LSb16MBPAIR_QuDlt                                   6
    #define       bMBPAIR_QuDlt                                5
    #define   MSK32MBPAIR_QuDlt                                   0x07C00000

    #define     BA_MBPAIR_QvDlt                                0x0003
    #define     B16MBPAIR_QvDlt                                0x0002
    #define   LSb32MBPAIR_QvDlt                                   27
    #define   LSb16MBPAIR_QvDlt                                   11
    #define       bMBPAIR_QvDlt                                5
    #define   MSK32MBPAIR_QvDlt                                   0xF8000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_MBPAIR {
    ///////////////////////////////////////////////////////////
    #define   GET32MBPAIR_FLD(r32)                             _BFGET_(r32, 0, 0)
    #define   SET32MBPAIR_FLD(r32,v)                           _BFSET_(r32, 0, 0,v)
    #define   GET16MBPAIR_FLD(r16)                             _BFGET_(r16, 0, 0)
    #define   SET16MBPAIR_FLD(r16,v)                           _BFSET_(r16, 0, 0,v)

    #define   GET32MBPAIR_SID(r32)                             _BFGET_(r32, 9, 1)
    #define   SET32MBPAIR_SID(r32,v)                           _BFSET_(r32, 9, 1,v)
    #define   GET16MBPAIR_SID(r16)                             _BFGET_(r16, 9, 1)
    #define   SET16MBPAIR_SID(r16,v)                           _BFSET_(r16, 9, 1,v)

    #define   GET32MBPAIR_QP_0i(r32)                           _BFGET_(r32,15,10)
    #define   SET32MBPAIR_QP_0i(r32,v)                         _BFSET_(r32,15,10,v)
    #define   GET16MBPAIR_QP_0i(r16)                           _BFGET_(r16,15,10)
    #define   SET16MBPAIR_QP_0i(r16,v)                         _BFSET_(r16,15,10,v)

    #define   GET32MBPAIR_QP_1i(r32)                           _BFGET_(r32,21,16)
    #define   SET32MBPAIR_QP_1i(r32,v)                         _BFSET_(r32,21,16,v)
    #define   GET16MBPAIR_QP_1i(r16)                           _BFGET_(r16, 5, 0)
    #define   SET16MBPAIR_QP_1i(r16,v)                         _BFSET_(r16, 5, 0,v)

    #define   GET32MBPAIR_QuDlt(r32)                           _BFGET_(r32,26,22)
    #define   SET32MBPAIR_QuDlt(r32,v)                         _BFSET_(r32,26,22,v)
    #define   GET16MBPAIR_QuDlt(r16)                           _BFGET_(r16,10, 6)
    #define   SET16MBPAIR_QuDlt(r16,v)                         _BFSET_(r16,10, 6,v)

    #define   GET32MBPAIR_QvDlt(r32)                           _BFGET_(r32,31,27)
    #define   SET32MBPAIR_QvDlt(r32,v)                         _BFSET_(r32,31,27,v)
    #define   GET16MBPAIR_QvDlt(r16)                           _BFGET_(r16,15,11)
    #define   SET16MBPAIR_QvDlt(r16,v)                         _BFSET_(r16,15,11,v)

            UNSG32 u_FLD                                       :  1;
            UNSG32 u_SID                                       :  9;
            UNSG32 u_QP_0i                                     :  6;
            UNSG32 u_QP_1i                                     :  6;
            UNSG32 s_QuDlt                                     :  5;
            UNSG32 s_QvDlt                                     :  5;
    ///////////////////////////////////////////////////////////
    } SIE_MBPAIR;

    ///////////////////////////////////////////////////////////
     SIGN32 MBPAIR_drvrd(SIE_MBPAIR *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 MBPAIR_drvwr(SIE_MBPAIR *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void MBPAIR_reset(SIE_MBPAIR *p);
     SIGN32 MBPAIR_cmp  (SIE_MBPAIR *p, SIE_MBPAIR *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define MBPAIR_check(p,pie,pfx,hLOG) MBPAIR_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define MBPAIR_print(p,    pfx,hLOG) MBPAIR_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: MBPAIR
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE PairRow                                  (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 EVEN                 
///               $MBPAIR              EVEN              REG     [164]
///     @ 0x00290                      (P)
///     # 0x00290 ODD                  
///               $MBPAIR              ODD               REG     [164]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    1312B, bits:   10496b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_PairRow
#define h_PairRow (){}

    #define     RA_PairRow_EVEN                                0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_PairRow_ODD                                 0x0290
    ///////////////////////////////////////////////////////////

    typedef struct SIE_PairRow {
    ///////////////////////////////////////////////////////////
              SIE_MBPAIR                                       ie_EVEN[164];
    ///////////////////////////////////////////////////////////
              SIE_MBPAIR                                       ie_ODD[164];
    ///////////////////////////////////////////////////////////
    } SIE_PairRow;

    ///////////////////////////////////////////////////////////
     SIGN32 PairRow_drvrd(SIE_PairRow *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 PairRow_drvwr(SIE_PairRow *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void PairRow_reset(SIE_PairRow *p);
     SIGN32 PairRow_cmp  (SIE_PairRow *p, SIE_PairRow *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define PairRow_check(p,pie,pfx,hLOG) PairRow_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define PairRow_print(p,    pfx,hLOG) PairRow_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: PairRow
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE HCTXY                                    (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 L4x4inL8x8           
///               $HCTX4x4             L4x4inL8x8        REG          
///     @ 0x00010                      (P)
///     # 0x00010 R4x4inL8x8           
///               $HCTX4x4             R4x4inL8x8        REG          
///     @ 0x00020                      (P)
///     # 0x00020 L4x4inR8x8           
///               $HCTX4x4             L4x4inR8x8        REG          
///     @ 0x00030                      (P)
///     # 0x00030 R4x4inR8x8           
///               $HCTX4x4             R4x4inR8x8        REG          
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      64B, bits:     512b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_HCTXY
#define h_HCTXY (){}

    #define     RA_HCTXY_L4x4inL8x8                            0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_HCTXY_R4x4inL8x8                            0x0010
    ///////////////////////////////////////////////////////////
    #define     RA_HCTXY_L4x4inR8x8                            0x0020
    ///////////////////////////////////////////////////////////
    #define     RA_HCTXY_R4x4inR8x8                            0x0030
    ///////////////////////////////////////////////////////////

    typedef struct SIE_HCTXY {
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_L4x4inL8x8;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_R4x4inL8x8;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_L4x4inR8x8;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_R4x4inR8x8;
    ///////////////////////////////////////////////////////////
    } SIE_HCTXY;

    ///////////////////////////////////////////////////////////
     SIGN32 HCTXY_drvrd(SIE_HCTXY *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 HCTXY_drvwr(SIE_HCTXY *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void HCTXY_reset(SIE_HCTXY *p);
     SIGN32 HCTXY_cmp  (SIE_HCTXY *p, SIE_HCTXY *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define HCTXY_check(p,pie,pfx,hLOG) HCTXY_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define HCTXY_print(p,    pfx,hLOG) HCTXY_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: HCTXY
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE HCTXUV                                   (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 L4x4U                
///               $HCTX4x4             L4x4U             REG          
///                                    ###
///                                    * Same as HCTXY.L4x4inL8x8
///                                    * Also contains CBF of left 4x4 U-block
///                                    ###
///     @ 0x00010                      (P)
///     # 0x00010 L4x4V                
///               $HCTX4x4             L4x4V             REG          
///                                    ###
///                                    * Same as HCTXY.R4x4inL8x8
///                                    * Also contains CBF of left 4x4 V-block
///                                    ###
///     @ 0x00020                      (P)
///     # 0x00020 R4x4U                
///               $HCTX4x4             R4x4U             REG          
///                                    ###
///                                    * Same as HCTXY.L4x4inR8x8
///                                    * Also contains CBF of right 4x4 U-block
///                                    ###
///     @ 0x00030                      (P)
///     # 0x00030 R4x4V                
///               $HCTX4x4             R4x4V             REG          
///                                    ###
///                                    * Same as HCTXY.R4x4inR8x8
///                                    * Also contains CBF of right 4x4 V-block
///                                    * End of HCTXUV
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      64B, bits:     512b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_HCTXUV
#define h_HCTXUV (){}

    #define     RA_HCTXUV_L4x4U                                0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_HCTXUV_L4x4V                                0x0010
    ///////////////////////////////////////////////////////////
    #define     RA_HCTXUV_R4x4U                                0x0020
    ///////////////////////////////////////////////////////////
    #define     RA_HCTXUV_R4x4V                                0x0030
    ///////////////////////////////////////////////////////////

    typedef struct SIE_HCTXUV {
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_L4x4U;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_L4x4V;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_R4x4U;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_R4x4V;
    ///////////////////////////////////////////////////////////
    } SIE_HCTXUV;

    ///////////////////////////////////////////////////////////
     SIGN32 HCTXUV_drvrd(SIE_HCTXUV *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 HCTXUV_drvwr(SIE_HCTXUV *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void HCTXUV_reset(SIE_HCTXUV *p);
     SIGN32 HCTXUV_cmp  (SIE_HCTXUV *p, SIE_HCTXUV *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define HCTXUV_check(p,pie,pfx,hLOG) HCTXUV_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define HCTXUV_print(p,    pfx,hLOG) HCTXUV_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: HCTXUV
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE HCTX                    biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 DCU                  
///               $HCTX4x4             DCU               REG          
///                                    ###
///                                    * Same as HCTXUV.L4x4U
///                                    * Also contains CBF of U DC-block
///                                    ###
///     @ 0x00010                      (P)
///     # 0x00010 DCV                  
///               $HCTX4x4             DCV               REG          
///                                    ###
///                                    * Same as HCTXUV.L4x4V
///                                    * Also contains CBF of V DC-block
///                                    ###
///     @ 0x00020                      (P)
///     # 0x00020 DCI                  
///               $HCTX4x4             DCI               REG          
///                                    ###
///                                    * Same as HCTXUV.R4x4U
///                                    ###
///     @ 0x00030                      (P)
///     # 0x00030 DCY                  
///               $HCTX4x4             DCY               REG          
///                                    ###
///                                    * Same as HCTXUV.R4x4V
///                                    * Also contains CBF of Y DC-block (intra16x16)
///                                    * End of HCTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      64B, bits:     512b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_HCTX
#define h_HCTX (){}

    #define     RA_HCTX_DCU                                    0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_HCTX_DCV                                    0x0010
    ///////////////////////////////////////////////////////////
    #define     RA_HCTX_DCI                                    0x0020
    ///////////////////////////////////////////////////////////
    #define     RA_HCTX_DCY                                    0x0030
    ///////////////////////////////////////////////////////////

    typedef struct SIE_HCTX {
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_DCU;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_DCV;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_DCI;
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_DCY;
    ///////////////////////////////////////////////////////////
    } SIE_HCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 HCTX_drvrd(SIE_HCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 HCTX_drvwr(SIE_HCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void HCTX_reset(SIE_HCTX *p);
     SIGN32 HCTX_cmp  (SIE_HCTX *p, SIE_HCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define HCTX_check(p,pie,pfx,hLOG) HCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define HCTX_print(p,    pfx,hLOG) HCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: HCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE MBCTXQ                                   (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 NA                   
///               $HCTX4x4             NA                REG          
///                                    ###
///                                    * Special entry (all zero values) for N/A block
///                                    ###
///     @ 0x00010                      (P)
///     # 0x00010 4TH16x4In            
///               $HCTX                4TH16x4In         REG       [8]
///                                    ###
///                                    * Input FIFO from previous MB(-pair) row
///                                    ###
///     @ 0x00210                      (P)
///     # 0x00210 1ST16x4              
///               $HCTXY               1ST16x4           REG       [8]
///                                    ###
///                                    * 1st row of current MB(-pair) row
///                                    ###
///     @ 0x00410                      (P)
///     # 0x00410 2ND16x4              
///               $HCTXUV              2ND16x4           REG       [8]
///                                    ###
///                                    * 2nd row of current MB(-pair) row
///                                    ###
///     @ 0x00610                      (P)
///     # 0x00610 3RD16x4              
///               $HCTXY               3RD16x4           REG       [8]
///                                    ###
///                                    * 3rd row of current MB(-pair) row
///                                    ###
///     @ 0x00810                      (P)
///     # 0x00810 4TH16x4Out           
///               $HCTX                4TH16x4Out        REG       [8]
///                                    ###
///                                    * 4th row of current MB(-pair) row
///                                    * Also as output FIFO for future history context
///                                    * End of MBCTXQ
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    2576B, bits:   20608b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_MBCTXQ
#define h_MBCTXQ (){}

    #define     RA_MBCTXQ_NA                                   0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_MBCTXQ_4TH16x4In                            0x0010
    ///////////////////////////////////////////////////////////
    #define     RA_MBCTXQ_1ST16x4                              0x0210
    ///////////////////////////////////////////////////////////
    #define     RA_MBCTXQ_2ND16x4                              0x0410
    ///////////////////////////////////////////////////////////
    #define     RA_MBCTXQ_3RD16x4                              0x0610
    ///////////////////////////////////////////////////////////
    #define     RA_MBCTXQ_4TH16x4Out                           0x0810
    ///////////////////////////////////////////////////////////

    typedef struct SIE_MBCTXQ {
    ///////////////////////////////////////////////////////////
              SIE_HCTX4x4                                      ie_NA;
    ///////////////////////////////////////////////////////////
              SIE_HCTX                                         ie_4TH16x4In[8];
    ///////////////////////////////////////////////////////////
              SIE_HCTXY                                        ie_1ST16x4[8];
    ///////////////////////////////////////////////////////////
              SIE_HCTXUV                                       ie_2ND16x4[8];
    ///////////////////////////////////////////////////////////
              SIE_HCTXY                                        ie_3RD16x4[8];
    ///////////////////////////////////////////////////////////
              SIE_HCTX                                         ie_4TH16x4Out[8];
    ///////////////////////////////////////////////////////////
    } SIE_MBCTXQ;

    ///////////////////////////////////////////////////////////
     SIGN32 MBCTXQ_drvrd(SIE_MBCTXQ *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 MBCTXQ_drvwr(SIE_MBCTXQ *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void MBCTXQ_reset(SIE_MBCTXQ *p);
     SIGN32 MBCTXQ_cmp  (SIE_MBCTXQ *p, SIE_MBCTXQ *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define MBCTXQ_check(p,pie,pfx,hLOG) MBCTXQ_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define MBCTXQ_print(p,    pfx,hLOG) MBCTXQ_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: MBCTXQ
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TCTX                                     (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 4x4in1ST8x8          
///               $FCTX                4x4in1ST8x8       REG          
///     @ 0x00008                      (P)
///     # 0x00008 4x4in2ND8x8          
///               $FCTX                4x4in2ND8x8       REG          
///     @ 0x00010                      (P)
///     # 0x00010 4x4in3RD8x8          
///               $FCTX                4x4in3RD8x8       REG          
///     @ 0x00018                      (P)
///     # 0x00018 4x4in4TH8x8          
///               $FCTX                4x4in4TH8x8       REG          
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      32B, bits:     256b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TCTX
#define h_TCTX (){}

    #define     RA_TCTX_4x4in1ST8x8                            0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_TCTX_4x4in2ND8x8                            0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_TCTX_4x4in3RD8x8                            0x0010
    ///////////////////////////////////////////////////////////
    #define     RA_TCTX_4x4in4TH8x8                            0x0018
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TCTX {
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_4x4in1ST8x8;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_4x4in2ND8x8;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_4x4in3RD8x8;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_4x4in4TH8x8;
    ///////////////////////////////////////////////////////////
    } SIE_TCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 TCTX_drvrd(SIE_TCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TCTX_drvwr(SIE_TCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TCTX_reset(SIE_TCTX *p);
     SIGN32 TCTX_cmp  (SIE_TCTX *p, SIE_TCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TCTX_check(p,pie,pfx,hLOG) TCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TCTX_print(p,    pfx,hLOG) TCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE TCTXMB                                   (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 1ST4x4s              
///               $TCTX                1ST4x4s           REG          
///     @ 0x00020                      (P)
///     # 0x00020 2ND4x4s              
///               $TCTX                2ND4x4s           REG          
///     @ 0x00040                      (P)
///     # 0x00040 3RD4x4s              
///               $TCTX                3RD4x4s           REG          
///     @ 0x00060                      (P)
///     # 0x00060 4TH4x4s              
///               $TCTX                4TH4x4s           REG          
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     128B, bits:    1024b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_TCTXMB
#define h_TCTXMB (){}

    #define     RA_TCTXMB_1ST4x4s                              0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_TCTXMB_2ND4x4s                              0x0020
    ///////////////////////////////////////////////////////////
    #define     RA_TCTXMB_3RD4x4s                              0x0040
    ///////////////////////////////////////////////////////////
    #define     RA_TCTXMB_4TH4x4s                              0x0060
    ///////////////////////////////////////////////////////////

    typedef struct SIE_TCTXMB {
    ///////////////////////////////////////////////////////////
              SIE_TCTX                                         ie_1ST4x4s;
    ///////////////////////////////////////////////////////////
              SIE_TCTX                                         ie_2ND4x4s;
    ///////////////////////////////////////////////////////////
              SIE_TCTX                                         ie_3RD4x4s;
    ///////////////////////////////////////////////////////////
              SIE_TCTX                                         ie_4TH4x4s;
    ///////////////////////////////////////////////////////////
    } SIE_TCTXMB;

    ///////////////////////////////////////////////////////////
     SIGN32 TCTXMB_drvrd(SIE_TCTXMB *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 TCTXMB_drvwr(SIE_TCTXMB *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void TCTXMB_reset(SIE_TCTXMB *p);
     SIGN32 TCTXMB_cmp  (SIE_TCTXMB *p, SIE_TCTXMB *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define TCTXMB_check(p,pie,pfx,hLOG) TCTXMB_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define TCTXMB_print(p,    pfx,hLOG) TCTXMB_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: TCTXMB
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE T2PROP                                   (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 t2prop               
///               $IntraPROP           t2prop            REG      [26]
///                                    ###
///                                    * Cast to 16b prop[49:mb_type]
///                                    * Different tables for I/P/B slices
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     104B, bits:     364b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_T2PROP
#define h_T2PROP (){}

    #define     RA_T2PROP_t2prop                               0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_T2PROP {
    ///////////////////////////////////////////////////////////
              SIE_IntraPROP                                    ie_t2prop[26];
    ///////////////////////////////////////////////////////////
    } SIE_T2PROP;

    ///////////////////////////////////////////////////////////
     SIGN32 T2PROP_drvrd(SIE_T2PROP *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 T2PROP_drvwr(SIE_T2PROP *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void T2PROP_reset(SIE_T2PROP *p);
     SIGN32 T2PROP_cmp  (SIE_T2PROP *p, SIE_T2PROP *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define T2PROP_check(p,pie,pfx,hLOG) T2PROP_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define T2PROP_print(p,    pfx,hLOG) T2PROP_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: T2PROP
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE T2PROP8x8                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 t2prop8x8            
///               $BLK                 t2prop8x8         REG       [4]
///                                    ###
///                                    * Cast to 8b prop[13:sub_mb_type]
///                                    * Different tables for P/B slices
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:     128b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_T2PROP8x8
#define h_T2PROP8x8 (){}

    #define     RA_T2PROP8x8_t2prop8x8                         0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_T2PROP8x8 {
    ///////////////////////////////////////////////////////////
              SIE_BLK                                          ie_t2prop8x8[4];
    ///////////////////////////////////////////////////////////
    } SIE_T2PROP8x8;

    ///////////////////////////////////////////////////////////
     SIGN32 T2PROP8x8_drvrd(SIE_T2PROP8x8 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 T2PROP8x8_drvwr(SIE_T2PROP8x8 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void T2PROP8x8_reset(SIE_T2PROP8x8 *p);
     SIGN32 T2PROP8x8_cmp  (SIE_T2PROP8x8 *p, SIE_T2PROP8x8 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define T2PROP8x8_check(p,pie,pfx,hLOG) T2PROP8x8_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define T2PROP8x8_print(p,    pfx,hLOG) T2PROP8x8_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: T2PROP8x8
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE InvScanBLK                               (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 8x8                  
///               $LUT8b               8x8               REG      [16]
///                                    ###
///                                    * For 8x8 transform, cast to:
///                                    * 8b Scan[64]:
///                                    * - zigzag for MBAFF or progressive
///                                    * - field scan for field picture
///                                    * NOTE: for CAVLC, 8x8 scan order is split to 4 of 4x4 scans following decoding order.
///                                    ###
///     @ 0x00040                      (P)
///     # 0x00040 4x4                  
///               $LUT8b               4x4               REG       [4]
///                                    ###
///                                    * For 4x4 transform, cast to:
///                                    * 8b Scan[16]:
///                                    * - zigzag for MBAFF or progressive
///                                    * - field scan for field picture
///                                    ###
///     @ 0x00050                      (P)
///     # 0x00050 4x4DC                
///               $LUT8b               4x4DC             REG       [4]
///                                    ###
///                                    * For 4x4 Hadamard transform, cast to:
///                                    * 8b Scan[16] (decoding order to raster)
///                                    ###
///     @ 0x00060                      (P)
///     # 0x00060 2x2DC                
///               $LUT8b               2x2DC             REG       [2]
///                                    ###
///                                    * For 2x2 Hadamard transform, cast to:
///                                    * 8b Scan[4] (Scan[i] = i)
///                                    ###
///     @ 0x00068                      (P)
///     # 0x00068 FLD8x8               
///               $LUT8b               FLD8x8            REG      [16]
///                                    ###
///                                    * For 8x8 transform, cast to:
///                                    * 8b Scan[64]:
///                                    * - zigzag for progressive
///                                    * - field scan for MBAFF or field picture
///                                    * NOTE: for CAVLC, 8x8 scan order is split to 4 of 4x4 scans following decoding order.
///                                    ###
///     @ 0x000A8                      (P)
///     # 0x000A8 FLD4x4               
///               $LUT8b               FLD4x4            REG       [4]
///                                    ###
///                                    * For 4x4 transform, cast to:
///                                    * 8b Scan[16]:
///                                    * - zigzag for progressive
///                                    * - field scan for MBAFF or field picture
///                                    ###
///     @ 0x000B8                      (P)
///     # 0x000B8 FLD4x4DC             
///               $LUT8b               FLD4x4DC          REG       [4]
///                                    ###
///                                    * For 4x4 Hadamard transform, cast to:
///                                    * 8b Scan[16] (decoding order to raster)
///                                    ###
///     @ 0x000C8                      (P)
///     # 0x000C8 FLD2x2DC             
///               $LUT8b               FLD2x2DC          REG       [2]
///                                    ###
///                                    * For 2x2 Hadamard transform, cast to:
///                                    * 8b Scan[4] (Scan[i] = i)
///                                    ###
///     @ 0x000D0                      (P)
///     # 0x000D0 IPCMY                
///               $LUT8b               IPCMY             REG      [32]
///                                    ###
///                                    * Cast to 16b scan[64=16*16/4]
///                                    * NOTE: every 4 pix share same entry address
///                                    ###
///     @ 0x00150                      (P)
///     # 0x00150 IPCMUV               
///               $LUT8b               IPCMUV            REG      [16]
///                                    ###
///                                    * Cast to 16b scan[32=8*8/4*2]
///                                    * NOTE: every 4 pix share same entry address
///                                    * End of InvScanBLK
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     400B, bits:    3200b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_InvScanBLK
#define h_InvScanBLK (){}

    #define     RA_InvScanBLK_8x8                              0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_InvScanBLK_4x4                              0x0040
    ///////////////////////////////////////////////////////////
    #define     RA_InvScanBLK_4x4DC                            0x0050
    ///////////////////////////////////////////////////////////
    #define     RA_InvScanBLK_2x2DC                            0x0060
    ///////////////////////////////////////////////////////////
    #define     RA_InvScanBLK_FLD8x8                           0x0068
    ///////////////////////////////////////////////////////////
    #define     RA_InvScanBLK_FLD4x4                           0x00A8
    ///////////////////////////////////////////////////////////
    #define     RA_InvScanBLK_FLD4x4DC                         0x00B8
    ///////////////////////////////////////////////////////////
    #define     RA_InvScanBLK_FLD2x2DC                         0x00C8
    ///////////////////////////////////////////////////////////
    #define     RA_InvScanBLK_IPCMY                            0x00D0
    ///////////////////////////////////////////////////////////
    #define     RA_InvScanBLK_IPCMUV                           0x0150
    ///////////////////////////////////////////////////////////

    typedef struct SIE_InvScanBLK {
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_8x8[16];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_4x4[4];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_4x4DC[4];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_2x2DC[2];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_FLD8x8[16];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_FLD4x4[4];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_FLD4x4DC[4];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_FLD2x2DC[2];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_IPCMY[32];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_IPCMUV[16];
    ///////////////////////////////////////////////////////////
    } SIE_InvScanBLK;

    ///////////////////////////////////////////////////////////
     SIGN32 InvScanBLK_drvrd(SIE_InvScanBLK *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 InvScanBLK_drvwr(SIE_InvScanBLK *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void InvScanBLK_reset(SIE_InvScanBLK *p);
     SIGN32 InvScanBLK_cmp  (SIE_InvScanBLK *p, SIE_InvScanBLK *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define InvScanBLK_check(p,pie,pfx,hLOG) InvScanBLK_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define InvScanBLK_print(p,    pfx,hLOG) InvScanBLK_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: InvScanBLK
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE InvScanMPG                               (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 8x8                  
///               $LUT8b               8x8               REG      [96]
///                                    ###
///                                    * MPEG4 LUT: 8b Scan[64][3:orig,horizontal ,vertical] for intra inverse scan
///                                    * vc1:
///                                    * intra: 8x8 zigzag: normal, horizontal, vertical
///                                    * ProP: 8x8, 8x4, 4x8, 4x4
///                                    * End of InvScanMPG
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     384B, bits:    3072b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_InvScanMPG
#define h_InvScanMPG (){}

    #define     RA_InvScanMPG_8x8                              0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_InvScanMPG {
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_8x8[96];
    ///////////////////////////////////////////////////////////
    } SIE_InvScanMPG;

    ///////////////////////////////////////////////////////////
     SIGN32 InvScanMPG_drvrd(SIE_InvScanMPG *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 InvScanMPG_drvwr(SIE_InvScanMPG *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void InvScanMPG_reset(SIE_InvScanMPG *p);
     SIGN32 InvScanMPG_cmp  (SIE_InvScanMPG *p, SIE_InvScanMPG *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define InvScanMPG_check(p,pie,pfx,hLOG) InvScanMPG_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define InvScanMPG_print(p,    pfx,hLOG) InvScanMPG_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: InvScanMPG
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ModTable                                 (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 8x8                  
///               $LUT8b               8x8               REG      [32]
///                                    ###
///                                    * ProP: cast to 8bit[36]: Lower 4bits: idx % 6;
///                                    * Higher 4bits: idx / 6
///                                    * FldP: cast to 8bit[125]: Lower 4bits: idx % 9;
///                                    * Higher 4bits: idx / 9
///                                    * End of ModTable
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     128B, bits:    1024b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ModTable
#define h_ModTable (){}

    #define     RA_ModTable_8x8                                0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ModTable {
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_8x8[32];
    ///////////////////////////////////////////////////////////
    } SIE_ModTable;

    ///////////////////////////////////////////////////////////
     SIGN32 ModTable_drvrd(SIE_ModTable *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ModTable_drvwr(SIE_ModTable *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ModTable_reset(SIE_ModTable *p);
     SIGN32 ModTable_cmp  (SIE_ModTable *p, SIE_ModTable *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ModTable_check(p,pie,pfx,hLOG) ModTable_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ModTable_print(p,    pfx,hLOG) ModTable_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ModTable
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CIBO                                     (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 16 CBF                       
///                                    ###
///                                    * For coded_block_flag
///                                    ###
///               %unsigned 16 SigCoef                   
///                                    ###
///                                    * For significant_coeff_flag
///                                    ###
///               %unsigned 16 LastSigCoef               
///                                    ###
///                                    * For last_significant_coeff_flag
///                                    ###
///               %unsigned 16 Lvl                       
///                                    ###
///                                    * For coeff_abs_level_minus1
///                                    * End of CIBO
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CIBO
#define h_CIBO (){}

    #define     BA_CIBO_CBF                                    0x0000
    #define     B16CIBO_CBF                                    0x0000
    #define   LSb32CIBO_CBF                                       0
    #define   LSb16CIBO_CBF                                       0
    #define       bCIBO_CBF                                    16
    #define   MSK32CIBO_CBF                                       0x0000FFFF

    #define     BA_CIBO_SigCoef                                0x0002
    #define     B16CIBO_SigCoef                                0x0002
    #define   LSb32CIBO_SigCoef                                   16
    #define   LSb16CIBO_SigCoef                                   0
    #define       bCIBO_SigCoef                                16
    #define   MSK32CIBO_SigCoef                                   0xFFFF0000

    #define     BA_CIBO_LastSigCoef                            0x0004
    #define     B16CIBO_LastSigCoef                            0x0004
    #define   LSb32CIBO_LastSigCoef                               0
    #define   LSb16CIBO_LastSigCoef                               0
    #define       bCIBO_LastSigCoef                            16
    #define   MSK32CIBO_LastSigCoef                               0x0000FFFF

    #define     BA_CIBO_Lvl                                    0x0006
    #define     B16CIBO_Lvl                                    0x0006
    #define   LSb32CIBO_Lvl                                       16
    #define   LSb16CIBO_Lvl                                       0
    #define       bCIBO_Lvl                                    16
    #define   MSK32CIBO_Lvl                                       0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CIBO {
    ///////////////////////////////////////////////////////////
    #define   GET32CIBO_CBF(r32)                               _BFGET_(r32,15, 0)
    #define   SET32CIBO_CBF(r32,v)                             _BFSET_(r32,15, 0,v)
    #define   GET16CIBO_CBF(r16)                               _BFGET_(r16,15, 0)
    #define   SET16CIBO_CBF(r16,v)                             _BFSET_(r16,15, 0,v)

    #define   GET32CIBO_SigCoef(r32)                           _BFGET_(r32,31,16)
    #define   SET32CIBO_SigCoef(r32,v)                         _BFSET_(r32,31,16,v)
    #define   GET16CIBO_SigCoef(r16)                           _BFGET_(r16,15, 0)
    #define   SET16CIBO_SigCoef(r16,v)                         _BFSET_(r16,15, 0,v)

            UNSG32 u_CBF                                       : 16;
            UNSG32 u_SigCoef                                   : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32CIBO_LastSigCoef(r32)                       _BFGET_(r32,15, 0)
    #define   SET32CIBO_LastSigCoef(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16CIBO_LastSigCoef(r16)                       _BFGET_(r16,15, 0)
    #define   SET16CIBO_LastSigCoef(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32CIBO_Lvl(r32)                               _BFGET_(r32,31,16)
    #define   SET32CIBO_Lvl(r32,v)                             _BFSET_(r32,31,16,v)
    #define   GET16CIBO_Lvl(r16)                               _BFGET_(r16,15, 0)
    #define   SET16CIBO_Lvl(r16,v)                             _BFSET_(r16,15, 0,v)

            UNSG32 u_LastSigCoef                               : 16;
            UNSG32 u_Lvl                                       : 16;
    ///////////////////////////////////////////////////////////
    } SIE_CIBO;

    ///////////////////////////////////////////////////////////
     SIGN32 CIBO_drvrd(SIE_CIBO *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CIBO_drvwr(SIE_CIBO *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CIBO_reset(SIE_CIBO *p);
     SIGN32 CIBO_cmp  (SIE_CIBO *p, SIE_CIBO *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CIBO_check(p,pie,pfx,hLOG) CIBO_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CIBO_print(p,    pfx,hLOG) CIBO_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CIBO
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CIBCO                                    (4,4)
///     # # ----------------------------------------------------------
///               : lumaDC             0x0
///               : I16AC              0x1
///               : Y4x4               0x2
///               : chromaDC           0x3
///               : chromaAC           0x4
///               : Y8x8               0x5
///     @ 0x00000                      (P)
///     # 0x00000 cibo                 
///               $CIBO                cibo              REG       [6]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      48B, bits:     384b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CIBCO
#define h_CIBCO (){}

    #define        CIBCO_lumaDC                                0x0
    #define        CIBCO_I16AC                                 0x1
    #define        CIBCO_Y4x4                                  0x2
    #define        CIBCO_chromaDC                              0x3
    #define        CIBCO_chromaAC                              0x4
    #define        CIBCO_Y8x8                                  0x5
    ///////////////////////////////////////////////////////////
    #define     RA_CIBCO_cibo                                  0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CIBCO {
    ///////////////////////////////////////////////////////////
              SIE_CIBO                                         ie_cibo[6];
    ///////////////////////////////////////////////////////////
    } SIE_CIBCO;

    ///////////////////////////////////////////////////////////
     SIGN32 CIBCO_drvrd(SIE_CIBCO *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CIBCO_drvwr(SIE_CIBCO *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CIBCO_reset(SIE_CIBCO *p);
     SIGN32 CIBCO_cmp  (SIE_CIBCO *p, SIE_CIBCO *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CIBCO_check(p,pie,pfx,hLOG) CIBCO_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CIBCO_print(p,    pfx,hLOG) CIBCO_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CIBCO
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE RESCTX                                   (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 16 LSbCBF                    
///                                    ###
///                                    * Lsb of associated CBF:
///                                    * - LsbFCTX_CBFY
///                                    * - LsbFCTX_CBFUV
///                                    * - LsbFCTX_CBFDC
///                                    * NOTE: =LSbFCTXI_NCY/UV for CAVLC
///                                    ###
///               %unsigned 16 CIBO                      
///                                    ###
///                                    * Associated entry of CIBCO table
///                                    * NOTE: =1/4 for CAVLC non-8x8/8x8
///                                    ###
///               %unsigned 16 InvScan                   
///                                    ###
///                                    * Associated inverse scan table (first set)
///                                    ###
///               %unsigned 16 MaxNum                    
///                                    ###
///                                    * 4/15/16/64
///                                    * NOTE: =16 for CAVLC 8x8 (repeat 4 times)
///                                    * End of RESCTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_RESCTX
#define h_RESCTX (){}

    #define     BA_RESCTX_LSbCBF                               0x0000
    #define     B16RESCTX_LSbCBF                               0x0000
    #define   LSb32RESCTX_LSbCBF                                  0
    #define   LSb16RESCTX_LSbCBF                                  0
    #define       bRESCTX_LSbCBF                               16
    #define   MSK32RESCTX_LSbCBF                                  0x0000FFFF

    #define     BA_RESCTX_CIBO                                 0x0002
    #define     B16RESCTX_CIBO                                 0x0002
    #define   LSb32RESCTX_CIBO                                    16
    #define   LSb16RESCTX_CIBO                                    0
    #define       bRESCTX_CIBO                                 16
    #define   MSK32RESCTX_CIBO                                    0xFFFF0000

    #define     BA_RESCTX_InvScan                              0x0004
    #define     B16RESCTX_InvScan                              0x0004
    #define   LSb32RESCTX_InvScan                                 0
    #define   LSb16RESCTX_InvScan                                 0
    #define       bRESCTX_InvScan                              16
    #define   MSK32RESCTX_InvScan                                 0x0000FFFF

    #define     BA_RESCTX_MaxNum                               0x0006
    #define     B16RESCTX_MaxNum                               0x0006
    #define   LSb32RESCTX_MaxNum                                  16
    #define   LSb16RESCTX_MaxNum                                  0
    #define       bRESCTX_MaxNum                               16
    #define   MSK32RESCTX_MaxNum                                  0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_RESCTX {
    ///////////////////////////////////////////////////////////
    #define   GET32RESCTX_LSbCBF(r32)                          _BFGET_(r32,15, 0)
    #define   SET32RESCTX_LSbCBF(r32,v)                        _BFSET_(r32,15, 0,v)
    #define   GET16RESCTX_LSbCBF(r16)                          _BFGET_(r16,15, 0)
    #define   SET16RESCTX_LSbCBF(r16,v)                        _BFSET_(r16,15, 0,v)

    #define   GET32RESCTX_CIBO(r32)                            _BFGET_(r32,31,16)
    #define   SET32RESCTX_CIBO(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16RESCTX_CIBO(r16)                            _BFGET_(r16,15, 0)
    #define   SET16RESCTX_CIBO(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_LSbCBF                                    : 16;
            UNSG32 u_CIBO                                      : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32RESCTX_InvScan(r32)                         _BFGET_(r32,15, 0)
    #define   SET32RESCTX_InvScan(r32,v)                       _BFSET_(r32,15, 0,v)
    #define   GET16RESCTX_InvScan(r16)                         _BFGET_(r16,15, 0)
    #define   SET16RESCTX_InvScan(r16,v)                       _BFSET_(r16,15, 0,v)

    #define   GET32RESCTX_MaxNum(r32)                          _BFGET_(r32,31,16)
    #define   SET32RESCTX_MaxNum(r32,v)                        _BFSET_(r32,31,16,v)
    #define   GET16RESCTX_MaxNum(r16)                          _BFGET_(r16,15, 0)
    #define   SET16RESCTX_MaxNum(r16,v)                        _BFSET_(r16,15, 0,v)

            UNSG32 u_InvScan                                   : 16;
            UNSG32 u_MaxNum                                    : 16;
    ///////////////////////////////////////////////////////////
    } SIE_RESCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 RESCTX_drvrd(SIE_RESCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 RESCTX_drvwr(SIE_RESCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void RESCTX_reset(SIE_RESCTX *p);
     SIGN32 RESCTX_cmp  (SIE_RESCTX *p, SIE_RESCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define RESCTX_check(p,pie,pfx,hLOG) RESCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define RESCTX_print(p,    pfx,hLOG) RESCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: RESCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE RESLUT                                   (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 ctx                  
///               $RESCTX              ctx               REG       [8]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      64B, bits:     512b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_RESLUT
#define h_RESLUT (){}

    #define     RA_RESLUT_ctx                                  0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_RESLUT {
    ///////////////////////////////////////////////////////////
              SIE_RESCTX                                       ie_ctx[8];
    ///////////////////////////////////////////////////////////
    } SIE_RESLUT;

    ///////////////////////////////////////////////////////////
     SIGN32 RESLUT_drvrd(SIE_RESLUT *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 RESLUT_drvwr(SIE_RESLUT *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void RESLUT_reset(SIE_RESLUT *p);
     SIGN32 RESLUT_cmp  (SIE_RESLUT *p, SIE_RESLUT *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define RESLUT_check(p,pie,pfx,hLOG) RESLUT_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define RESLUT_print(p,    pfx,hLOG) RESLUT_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: RESLUT
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CBPLUT                                   (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 intra                
///               $LUT8b               intra             REG      [12]
///                                    ###
///                                    * Cast to 8b cbp[48]
///                                    ###
///     @ 0x00030                      (P)
///     # 0x00030 inter                
///               $LUT8b               inter             REG      [12]
///                                    ###
///                                    * Cast to 8b cbp[48]
///                                    * End of CBPLUT
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      96B, bits:     768b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CBPLUT
#define h_CBPLUT (){}

    #define     RA_CBPLUT_intra                                0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_CBPLUT_inter                                0x0030
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CBPLUT {
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_intra[12];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_inter[12];
    ///////////////////////////////////////////////////////////
    } SIE_CBPLUT;

    ///////////////////////////////////////////////////////////
     SIGN32 CBPLUT_drvrd(SIE_CBPLUT *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CBPLUT_drvwr(SIE_CBPLUT *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CBPLUT_reset(SIE_CBPLUT *p);
     SIGN32 CBPLUT_cmp  (SIE_CBPLUT *p, SIE_CBPLUT *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CBPLUT_check(p,pie,pfx,hLOG) CBPLUT_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CBPLUT_print(p,    pfx,hLOG) CBPLUT_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CBPLUT
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CQPLUT                                   (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 QP                   
///               $LUT8b               QP                REG      [16]
///                                    ###
///                                    * Cast to 8b QP[64]
///                                    * End of CQPLUT
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      64B, bits:     512b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CQPLUT
#define h_CQPLUT (){}

    #define     RA_CQPLUT_QP                                   0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CQPLUT {
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_QP[16];
    ///////////////////////////////////////////////////////////
    } SIE_CQPLUT;

    ///////////////////////////////////////////////////////////
     SIGN32 CQPLUT_drvrd(SIE_CQPLUT *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CQPLUT_drvwr(SIE_CQPLUT *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CQPLUT_reset(SIE_CQPLUT *p);
     SIGN32 CQPLUT_cmp  (SIE_CQPLUT *p, SIE_CQPLUT *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CQPLUT_check(p,pie,pfx,hLOG) CQPLUT_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CQPLUT_print(p,    pfx,hLOG) CQPLUT_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CQPLUT
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CoLoc                                    (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 4  BLK                       
///                                    ###
///                                    * Current block index in MB
///                                    ###
///               %unsigned 1  ColFLD                    
///                                    ###
///                                    * If co-located MB is coded as field
///                                    ###
///               %unsigned 1  CurFLD                    
///                                    ###
///                                    * If current MB is coded as field
///                                    ###
///               %unsigned 1  mbIdx                     
///                                    ###
///                                    * Current MB index in pair
///                                    * End of CQPLUT
///                                    ###
///               %%        25         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       7b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CoLoc
#define h_CoLoc (){}

    #define     BA_CoLoc_BLK                                   0x0000
    #define     B16CoLoc_BLK                                   0x0000
    #define   LSb32CoLoc_BLK                                      0
    #define   LSb16CoLoc_BLK                                      0
    #define       bCoLoc_BLK                                   4
    #define   MSK32CoLoc_BLK                                      0x0000000F

    #define     BA_CoLoc_ColFLD                                0x0000
    #define     B16CoLoc_ColFLD                                0x0000
    #define   LSb32CoLoc_ColFLD                                   4
    #define   LSb16CoLoc_ColFLD                                   4
    #define       bCoLoc_ColFLD                                1
    #define   MSK32CoLoc_ColFLD                                   0x00000010

    #define     BA_CoLoc_CurFLD                                0x0000
    #define     B16CoLoc_CurFLD                                0x0000
    #define   LSb32CoLoc_CurFLD                                   5
    #define   LSb16CoLoc_CurFLD                                   5
    #define       bCoLoc_CurFLD                                1
    #define   MSK32CoLoc_CurFLD                                   0x00000020

    #define     BA_CoLoc_mbIdx                                 0x0000
    #define     B16CoLoc_mbIdx                                 0x0000
    #define   LSb32CoLoc_mbIdx                                    6
    #define   LSb16CoLoc_mbIdx                                    6
    #define       bCoLoc_mbIdx                                 1
    #define   MSK32CoLoc_mbIdx                                    0x00000040
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CoLoc {
    ///////////////////////////////////////////////////////////
    #define   GET32CoLoc_BLK(r32)                              _BFGET_(r32, 3, 0)
    #define   SET32CoLoc_BLK(r32,v)                            _BFSET_(r32, 3, 0,v)
    #define   GET16CoLoc_BLK(r16)                              _BFGET_(r16, 3, 0)
    #define   SET16CoLoc_BLK(r16,v)                            _BFSET_(r16, 3, 0,v)

    #define   GET32CoLoc_ColFLD(r32)                           _BFGET_(r32, 4, 4)
    #define   SET32CoLoc_ColFLD(r32,v)                         _BFSET_(r32, 4, 4,v)
    #define   GET16CoLoc_ColFLD(r16)                           _BFGET_(r16, 4, 4)
    #define   SET16CoLoc_ColFLD(r16,v)                         _BFSET_(r16, 4, 4,v)

    #define   GET32CoLoc_CurFLD(r32)                           _BFGET_(r32, 5, 5)
    #define   SET32CoLoc_CurFLD(r32,v)                         _BFSET_(r32, 5, 5,v)
    #define   GET16CoLoc_CurFLD(r16)                           _BFGET_(r16, 5, 5)
    #define   SET16CoLoc_CurFLD(r16,v)                         _BFSET_(r16, 5, 5,v)

    #define   GET32CoLoc_mbIdx(r32)                            _BFGET_(r32, 6, 6)
    #define   SET32CoLoc_mbIdx(r32,v)                          _BFSET_(r32, 6, 6,v)
    #define   GET16CoLoc_mbIdx(r16)                            _BFGET_(r16, 6, 6)
    #define   SET16CoLoc_mbIdx(r16,v)                          _BFSET_(r16, 6, 6,v)

            UNSG32 u_BLK                                       :  4;
            UNSG32 u_ColFLD                                    :  1;
            UNSG32 u_CurFLD                                    :  1;
            UNSG32 u_mbIdx                                     :  1;
            UNSG32 RSVDx0_b7                                   : 25;
    ///////////////////////////////////////////////////////////
    } SIE_CoLoc;

    ///////////////////////////////////////////////////////////
     SIGN32 CoLoc_drvrd(SIE_CoLoc *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CoLoc_drvwr(SIE_CoLoc *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CoLoc_reset(SIE_CoLoc *p);
     SIGN32 CoLoc_cmp  (SIE_CoLoc *p, SIE_CoLoc *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CoLoc_check(p,pie,pfx,hLOG) CoLoc_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CoLoc_print(p,    pfx,hLOG) CoLoc_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CoLoc
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CoLocLUT                                 (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 map                  
///               $LUT8b               map               REG      [32]
///                                    ###
///                                    * Cast to 8b map[128]:
///                                    * Each entry shows the byte offset of the co-located block FCTX within the pair of co-located MB (TCTXMB x 2)
///                                    * End of CoLocLUT
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     128B, bits:    1024b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CoLocLUT
#define h_CoLocLUT (){}

    #define     RA_CoLocLUT_map                                0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CoLocLUT {
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_map[32];
    ///////////////////////////////////////////////////////////
    } SIE_CoLocLUT;

    ///////////////////////////////////////////////////////////
     SIGN32 CoLocLUT_drvrd(SIE_CoLocLUT *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CoLocLUT_drvwr(SIE_CoLocLUT *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CoLocLUT_reset(SIE_CoLocLUT *p);
     SIGN32 CoLocLUT_cmp  (SIE_CoLocLUT *p, SIE_CoLocLUT *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CoLocLUT_check(p,pie,pfx,hLOG) CoLocLUT_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CoLocLUT_print(p,    pfx,hLOG) CoLocLUT_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CoLocLUT
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BID2SCL                                  (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 frmBID2SCL           
///               $LUT64b              frmBID2SCL        REG      [34]
///                                    ###
///                                    * For current MB is MBAFF frame, or MB in progressive/field picture.
///                                    ###
///     @ 0x00110                      (P)
///     # 0x00110 topBID2SCL           
///               $LUT64b              topBID2SCL        REG      [34]
///                                    ###
///                                    * For current MB is MBAFF top field.
///                                    ###
///     @ 0x00220                      (P)
///     # 0x00220 btmBID2SCL           
///               $LUT64b              btmBID2SCL        REG      [34]
///                                    ###
///                                    * For current MB is MBAFF bottom field.
///                                    * End of BID2SCL
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     816B, bits:    6528b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BID2SCL
#define h_BID2SCL (){}

    #define     RA_BID2SCL_frmBID2SCL                          0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_BID2SCL_topBID2SCL                          0x0110
    ///////////////////////////////////////////////////////////
    #define     RA_BID2SCL_btmBID2SCL                          0x0220
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BID2SCL {
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_frmBID2SCL[34];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_topBID2SCL[34];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_btmBID2SCL[34];
    ///////////////////////////////////////////////////////////
    } SIE_BID2SCL;

    ///////////////////////////////////////////////////////////
     SIGN32 BID2SCL_drvrd(SIE_BID2SCL *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BID2SCL_drvwr(SIE_BID2SCL *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BID2SCL_reset(SIE_BID2SCL *p);
     SIGN32 BID2SCL_cmp  (SIE_BID2SCL *p, SIE_BID2SCL *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BID2SCL_check(p,pie,pfx,hLOG) BID2SCL_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BID2SCL_print(p,    pfx,hLOG) BID2SCL_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BID2SCL
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE VCMLUT                                   (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 desc                 
///               $LUT8b               desc              REG      [32]
///                                    ###
///                                    * Cast to 8b vcmDesc[128]
///                                    * Note: Only block categories of 16x16 ... 4x4 are available.
///                                    * End of VCMLUT
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     128B, bits:    1024b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_VCMLUT
#define h_VCMLUT (){}

    #define     RA_VCMLUT_desc                                 0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_VCMLUT {
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_desc[32];
    ///////////////////////////////////////////////////////////
    } SIE_VCMLUT;

    ///////////////////////////////////////////////////////////
     SIGN32 VCMLUT_drvrd(SIE_VCMLUT *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 VCMLUT_drvwr(SIE_VCMLUT *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void VCMLUT_reset(SIE_VCMLUT *p);
     SIGN32 VCMLUT_cmp  (SIE_VCMLUT *p, SIE_VCMLUT *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define VCMLUT_check(p,pie,pfx,hLOG) VCMLUT_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define VCMLUT_print(p,    pfx,hLOG) VCMLUT_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: VCMLUT
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FOPCMD                                   (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 4  BLK                       
///                                    ###
///                                    * Current block index
///                                    ###
///               %unsigned 1  parity                    
///                                    ###
///                                    * Current block parity
///                                    ###
///               %unsigned 1  LeftColumn                
///                                    ###
///                                    * For blocks at left boundary of current MB pair
///                                    ###
///               %unsigned 1  TopRow                    
///                                    ###
///                                    * For blocks at top boundary of current MB pair
///                                    ###
///               %%        1          # Stuffing bits...
///               %unsigned 8  X                         
///                                    ###
///                                    * Current block location in current MB-pair:
///                                    * {32,33,34,35}, {36,37,38,39},
///                                    * {64,65,66,67}, {68,69,70,71},
///                                    * {96,97,98,99}, {100,101,102,103},
///                                    * {128,129,130,131}, {132,133,134,135},
///                                    ###
///               %unsigned 8  A                         
///                                    ###
///                                    * Left neighbor block location in its MB-pair:
///                                    * {35,32,33,34}, {39,36,37,38},
///                                    * {67,64,65,66}, {71,68,69,70},
///                                    * {99,96,97,98}, {103,100,101,102},
///                                    * {131,128,129,130}, {135,132,133,134},
///                                    ###
///               %unsigned 8  B                         
///                                    ###
///                                    * Top neighbor block location in current MB-pair:
///                                    * {0,1,2,3}, {4,5,6,7},
///                                    * {32,33,34,35}, {36,37,38,39},
///                                    * {64,65,66,67}, {68,69,70,71},
///                                    * {96,97,98,99}, {100,101,102,103},
///                                    * {128,129,130,131},
///                                    * End of FOPCMD
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      31b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FOPCMD
#define h_FOPCMD (){}

    #define     BA_FOPCMD_BLK                                  0x0000
    #define     B16FOPCMD_BLK                                  0x0000
    #define   LSb32FOPCMD_BLK                                     0
    #define   LSb16FOPCMD_BLK                                     0
    #define       bFOPCMD_BLK                                  4
    #define   MSK32FOPCMD_BLK                                     0x0000000F

    #define     BA_FOPCMD_parity                               0x0000
    #define     B16FOPCMD_parity                               0x0000
    #define   LSb32FOPCMD_parity                                  4
    #define   LSb16FOPCMD_parity                                  4
    #define       bFOPCMD_parity                               1
    #define   MSK32FOPCMD_parity                                  0x00000010

    #define     BA_FOPCMD_LeftColumn                           0x0000
    #define     B16FOPCMD_LeftColumn                           0x0000
    #define   LSb32FOPCMD_LeftColumn                              5
    #define   LSb16FOPCMD_LeftColumn                              5
    #define       bFOPCMD_LeftColumn                           1
    #define   MSK32FOPCMD_LeftColumn                              0x00000020

    #define     BA_FOPCMD_TopRow                               0x0000
    #define     B16FOPCMD_TopRow                               0x0000
    #define   LSb32FOPCMD_TopRow                                  6
    #define   LSb16FOPCMD_TopRow                                  6
    #define       bFOPCMD_TopRow                               1
    #define   MSK32FOPCMD_TopRow                                  0x00000040

    #define     BA_FOPCMD_X                                    0x0001
    #define     B16FOPCMD_X                                    0x0000
    #define   LSb32FOPCMD_X                                       8
    #define   LSb16FOPCMD_X                                       8
    #define       bFOPCMD_X                                    8
    #define   MSK32FOPCMD_X                                       0x0000FF00

    #define     BA_FOPCMD_A                                    0x0002
    #define     B16FOPCMD_A                                    0x0002
    #define   LSb32FOPCMD_A                                       16
    #define   LSb16FOPCMD_A                                       0
    #define       bFOPCMD_A                                    8
    #define   MSK32FOPCMD_A                                       0x00FF0000

    #define     BA_FOPCMD_B                                    0x0003
    #define     B16FOPCMD_B                                    0x0002
    #define   LSb32FOPCMD_B                                       24
    #define   LSb16FOPCMD_B                                       8
    #define       bFOPCMD_B                                    8
    #define   MSK32FOPCMD_B                                       0xFF000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FOPCMD {
    ///////////////////////////////////////////////////////////
    #define   GET32FOPCMD_BLK(r32)                             _BFGET_(r32, 3, 0)
    #define   SET32FOPCMD_BLK(r32,v)                           _BFSET_(r32, 3, 0,v)
    #define   GET16FOPCMD_BLK(r16)                             _BFGET_(r16, 3, 0)
    #define   SET16FOPCMD_BLK(r16,v)                           _BFSET_(r16, 3, 0,v)

    #define   GET32FOPCMD_parity(r32)                          _BFGET_(r32, 4, 4)
    #define   SET32FOPCMD_parity(r32,v)                        _BFSET_(r32, 4, 4,v)
    #define   GET16FOPCMD_parity(r16)                          _BFGET_(r16, 4, 4)
    #define   SET16FOPCMD_parity(r16,v)                        _BFSET_(r16, 4, 4,v)

    #define   GET32FOPCMD_LeftColumn(r32)                      _BFGET_(r32, 5, 5)
    #define   SET32FOPCMD_LeftColumn(r32,v)                    _BFSET_(r32, 5, 5,v)
    #define   GET16FOPCMD_LeftColumn(r16)                      _BFGET_(r16, 5, 5)
    #define   SET16FOPCMD_LeftColumn(r16,v)                    _BFSET_(r16, 5, 5,v)

    #define   GET32FOPCMD_TopRow(r32)                          _BFGET_(r32, 6, 6)
    #define   SET32FOPCMD_TopRow(r32,v)                        _BFSET_(r32, 6, 6,v)
    #define   GET16FOPCMD_TopRow(r16)                          _BFGET_(r16, 6, 6)
    #define   SET16FOPCMD_TopRow(r16,v)                        _BFSET_(r16, 6, 6,v)

    #define   GET32FOPCMD_X(r32)                               _BFGET_(r32,15, 8)
    #define   SET32FOPCMD_X(r32,v)                             _BFSET_(r32,15, 8,v)
    #define   GET16FOPCMD_X(r16)                               _BFGET_(r16,15, 8)
    #define   SET16FOPCMD_X(r16,v)                             _BFSET_(r16,15, 8,v)

    #define   GET32FOPCMD_A(r32)                               _BFGET_(r32,23,16)
    #define   SET32FOPCMD_A(r32,v)                             _BFSET_(r32,23,16,v)
    #define   GET16FOPCMD_A(r16)                               _BFGET_(r16, 7, 0)
    #define   SET16FOPCMD_A(r16,v)                             _BFSET_(r16, 7, 0,v)

    #define   GET32FOPCMD_B(r32)                               _BFGET_(r32,31,24)
    #define   SET32FOPCMD_B(r32,v)                             _BFSET_(r32,31,24,v)
    #define   GET16FOPCMD_B(r16)                               _BFGET_(r16,15, 8)
    #define   SET16FOPCMD_B(r16,v)                             _BFSET_(r16,15, 8,v)

            UNSG32 u_BLK                                       :  4;
            UNSG32 u_parity                                    :  1;
            UNSG32 u_LeftColumn                                :  1;
            UNSG32 u_TopRow                                    :  1;
            UNSG32 RSVDx0_b7                                   :  1;
            UNSG32 u_X                                         :  8;
            UNSG32 u_A                                         :  8;
            UNSG32 u_B                                         :  8;
    ///////////////////////////////////////////////////////////
    } SIE_FOPCMD;

    ///////////////////////////////////////////////////////////
     SIGN32 FOPCMD_drvrd(SIE_FOPCMD *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FOPCMD_drvwr(SIE_FOPCMD *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FOPCMD_reset(SIE_FOPCMD *p);
     SIGN32 FOPCMD_cmp  (SIE_FOPCMD *p, SIE_FOPCMD *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FOPCMD_check(p,pie,pfx,hLOG) FOPCMD_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FOPCMD_print(p,    pfx,hLOG) FOPCMD_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FOPCMD
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FOPCmdPOOL                               (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 upLeft               
///               $FOPCMD              upLeft            REG      [12]
///     @ 0x00030                      (P)
///     # 0x00030 upper                
///               $FOPCMD              upper             REG      [15]
///     @ 0x0006C                      (P)
///     # 0x0006C left                 
///               $FOPCMD              left              REG      [27]
///     @ 0x000D8                      (P)
///     # 0x000D8 inner                
///               $FOPCMD              inner             REG      [18]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     288B, bits:    2232b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FOPCmdPOOL
#define h_FOPCmdPOOL (){}

    #define     RA_FOPCmdPOOL_upLeft                           0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCmdPOOL_upper                            0x0030
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCmdPOOL_left                             0x006C
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCmdPOOL_inner                            0x00D8
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FOPCmdPOOL {
    ///////////////////////////////////////////////////////////
              SIE_FOPCMD                                       ie_upLeft[12];
    ///////////////////////////////////////////////////////////
              SIE_FOPCMD                                       ie_upper[15];
    ///////////////////////////////////////////////////////////
              SIE_FOPCMD                                       ie_left[27];
    ///////////////////////////////////////////////////////////
              SIE_FOPCMD                                       ie_inner[18];
    ///////////////////////////////////////////////////////////
    } SIE_FOPCmdPOOL;

    ///////////////////////////////////////////////////////////
     SIGN32 FOPCmdPOOL_drvrd(SIE_FOPCmdPOOL *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FOPCmdPOOL_drvwr(SIE_FOPCmdPOOL *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FOPCmdPOOL_reset(SIE_FOPCmdPOOL *p);
     SIGN32 FOPCmdPOOL_cmp  (SIE_FOPCmdPOOL *p, SIE_FOPCmdPOOL *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FOPCmdPOOL_check(p,pie,pfx,hLOG) FOPCmdPOOL_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FOPCmdPOOL_print(p,    pfx,hLOG) FOPCmdPOOL_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FOPCmdPOOL
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FOPCmdIDX                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 FRMA_FRMX_FRMB       
///               $LUT8b               FRMA_FRMX_FRMB    REG       [8]
///                                    ###
///                                    * Cast to 8b index[16+16]
///                                    ###
///     @ 0x00020                      (P)
///     # 0x00020 FLDA_FLDX_FLDB       
///               $LUT8b               FLDA_FLDX_FLDB    REG       [8]
///                                    ###
///                                    * Cast to 8b index[16+16]
///                                    ###
///     @ 0x00040                      (P)
///     # 0x00040 FLDA_FRMX_FRMB       
///               $LUT8b               FLDA_FRMX_FRMB    REG      [10]
///                                    ###
///                                    * Cast to 8b index[20+20]
///                                    ###
///     @ 0x00068                      (P)
///     # 0x00068 FRMA_FLDX_FLDB       
///               $LUT8b               FRMA_FLDX_FLDB    REG      [10]
///                                    ###
///                                    * Cast to 8b index[20+20]
///                                    ###
///     @ 0x00090                      (P)
///     # 0x00090 FRMA_FRMX_FLDB       
///               $LUT8b               FRMA_FRMX_FLDB    REG       [9]
///                                    ###
///                                    * Cast to 8b index[20+16]
///                                    ###
///     @ 0x000B4                      (P)
///     # 0x000B4 FLDA_FLDX_FRMB       
///               $LUT8b               FLDA_FLDX_FRMB    REG       [8]
///                                    ###
///                                    * Cast to 8b index[16+16]
///                                    ###
///     @ 0x000D4                      (P)
///     # 0x000D4 FLDA_FRMX_FLDB       
///               $LUT8b               FLDA_FRMX_FLDB    REG      [11]
///                                    ###
///                                    * Cast to 8b index[23+20]
///                                    ###
///     @ 0x00100                      (P)
///     # 0x00100 FRMA_FLDX_FRMB       
///               $LUT8b               FRMA_FLDX_FRMB    REG      [10]
///                                    ###
///                                    * Cast to 8b index[20+20]
///                                    * End of FOPCmdIDX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     296B, bits:    2368b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FOPCmdIDX
#define h_FOPCmdIDX (){}

    #define     RA_FOPCmdIDX_FRMA_FRMX_FRMB                    0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCmdIDX_FLDA_FLDX_FLDB                    0x0020
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCmdIDX_FLDA_FRMX_FRMB                    0x0040
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCmdIDX_FRMA_FLDX_FLDB                    0x0068
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCmdIDX_FRMA_FRMX_FLDB                    0x0090
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCmdIDX_FLDA_FLDX_FRMB                    0x00B4
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCmdIDX_FLDA_FRMX_FLDB                    0x00D4
    ///////////////////////////////////////////////////////////
    #define     RA_FOPCmdIDX_FRMA_FLDX_FRMB                    0x0100
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FOPCmdIDX {
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_FRMA_FRMX_FRMB[8];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_FLDA_FLDX_FLDB[8];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_FLDA_FRMX_FRMB[10];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_FRMA_FLDX_FLDB[10];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_FRMA_FRMX_FLDB[9];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_FLDA_FLDX_FRMB[8];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_FLDA_FRMX_FLDB[11];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_FRMA_FLDX_FRMB[10];
    ///////////////////////////////////////////////////////////
    } SIE_FOPCmdIDX;

    ///////////////////////////////////////////////////////////
     SIGN32 FOPCmdIDX_drvrd(SIE_FOPCmdIDX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FOPCmdIDX_drvwr(SIE_FOPCmdIDX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FOPCmdIDX_reset(SIE_FOPCmdIDX *p);
     SIGN32 FOPCmdIDX_cmp  (SIE_FOPCmdIDX *p, SIE_FOPCmdIDX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FOPCmdIDX_check(p,pie,pfx,hLOG) FOPCmdIDX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FOPCmdIDX_print(p,    pfx,hLOG) FOPCmdIDX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FOPCmdIDX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FOPFUNC                                  (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 16 CmdIDX                    
///                                    ###
///                                    * HBO address for entry of command index
///                                    ###
///               %unsigned 8  NumCMD_0i                 
///               %unsigned 8  NumCMD_1i                 
///                                    ###
///                                    * Number of commands for even/odd MB in pair
///                                    * End of FOPCMD
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FOPFUNC
#define h_FOPFUNC (){}

    #define     BA_FOPFUNC_CmdIDX                              0x0000
    #define     B16FOPFUNC_CmdIDX                              0x0000
    #define   LSb32FOPFUNC_CmdIDX                                 0
    #define   LSb16FOPFUNC_CmdIDX                                 0
    #define       bFOPFUNC_CmdIDX                              16
    #define   MSK32FOPFUNC_CmdIDX                                 0x0000FFFF

    #define     BA_FOPFUNC_NumCMD_0i                           0x0002
    #define     B16FOPFUNC_NumCMD_0i                           0x0002
    #define   LSb32FOPFUNC_NumCMD_0i                              16
    #define   LSb16FOPFUNC_NumCMD_0i                              0
    #define       bFOPFUNC_NumCMD_0i                           8
    #define   MSK32FOPFUNC_NumCMD_0i                              0x00FF0000

    #define     BA_FOPFUNC_NumCMD_1i                           0x0003
    #define     B16FOPFUNC_NumCMD_1i                           0x0002
    #define   LSb32FOPFUNC_NumCMD_1i                              24
    #define   LSb16FOPFUNC_NumCMD_1i                              8
    #define       bFOPFUNC_NumCMD_1i                           8
    #define   MSK32FOPFUNC_NumCMD_1i                              0xFF000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FOPFUNC {
    ///////////////////////////////////////////////////////////
    #define   GET32FOPFUNC_CmdIDX(r32)                         _BFGET_(r32,15, 0)
    #define   SET32FOPFUNC_CmdIDX(r32,v)                       _BFSET_(r32,15, 0,v)
    #define   GET16FOPFUNC_CmdIDX(r16)                         _BFGET_(r16,15, 0)
    #define   SET16FOPFUNC_CmdIDX(r16,v)                       _BFSET_(r16,15, 0,v)

    #define   GET32FOPFUNC_NumCMD_0i(r32)                      _BFGET_(r32,23,16)
    #define   SET32FOPFUNC_NumCMD_0i(r32,v)                    _BFSET_(r32,23,16,v)
    #define   GET16FOPFUNC_NumCMD_0i(r16)                      _BFGET_(r16, 7, 0)
    #define   SET16FOPFUNC_NumCMD_0i(r16,v)                    _BFSET_(r16, 7, 0,v)

    #define   GET32FOPFUNC_NumCMD_1i(r32)                      _BFGET_(r32,31,24)
    #define   SET32FOPFUNC_NumCMD_1i(r32,v)                    _BFSET_(r32,31,24,v)
    #define   GET16FOPFUNC_NumCMD_1i(r16)                      _BFGET_(r16,15, 8)
    #define   SET16FOPFUNC_NumCMD_1i(r16,v)                    _BFSET_(r16,15, 8,v)

            UNSG32 u_CmdIDX                                    : 16;
            UNSG32 u_NumCMD_0i                                 :  8;
            UNSG32 u_NumCMD_1i                                 :  8;
    ///////////////////////////////////////////////////////////
    } SIE_FOPFUNC;

    ///////////////////////////////////////////////////////////
     SIGN32 FOPFUNC_drvrd(SIE_FOPFUNC *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FOPFUNC_drvwr(SIE_FOPFUNC *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FOPFUNC_reset(SIE_FOPFUNC *p);
     SIGN32 FOPFUNC_cmp  (SIE_FOPFUNC *p, SIE_FOPFUNC *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FOPFUNC_check(p,pie,pfx,hLOG) FOPFUNC_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FOPFUNC_print(p,    pfx,hLOG) FOPFUNC_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FOPFUNC
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FOPFuncTab                               (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 tab                  
///               $FOPFUNC             tab               REG       [8]
///                                    ###
///                                    * [2:FLD.B][2:FLD.A][2:FLD]
///                                    * End of FOPFuncTab
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      32B, bits:     256b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FOPFuncTab
#define h_FOPFuncTab (){}

    #define     RA_FOPFuncTab_tab                              0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FOPFuncTab {
    ///////////////////////////////////////////////////////////
              SIE_FOPFUNC                                      ie_tab[8];
    ///////////////////////////////////////////////////////////
    } SIE_FOPFuncTab;

    ///////////////////////////////////////////////////////////
     SIGN32 FOPFuncTab_drvrd(SIE_FOPFuncTab *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FOPFuncTab_drvwr(SIE_FOPFuncTab *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FOPFuncTab_reset(SIE_FOPFuncTab *p);
     SIGN32 FOPFuncTab_cmp  (SIE_FOPFuncTab *p, SIE_FOPFuncTab *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FOPFuncTab_check(p,pie,pfx,hLOG) FOPFuncTab_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FOPFuncTab_print(p,    pfx,hLOG) FOPFuncTab_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FOPFuncTab
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ScaleLUT                                 (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 map                  
///               $LUT8b               map               REG       [8]
///                                    ###
///                                    * MPEG2 LUT from q_scale_code to q_scale:
///                                    * 8b qscale[32] for scaling factors
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      32B, bits:     256b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ScaleLUT
#define h_ScaleLUT (){}

    #define     RA_ScaleLUT_map                                0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ScaleLUT {
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_map[8];
    ///////////////////////////////////////////////////////////
    } SIE_ScaleLUT;

    ///////////////////////////////////////////////////////////
     SIGN32 ScaleLUT_drvrd(SIE_ScaleLUT *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ScaleLUT_drvwr(SIE_ScaleLUT *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ScaleLUT_reset(SIE_ScaleLUT *p);
     SIGN32 ScaleLUT_cmp  (SIE_ScaleLUT *p, SIE_ScaleLUT *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ScaleLUT_check(p,pie,pfx,hLOG) ScaleLUT_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ScaleLUT_print(p,    pfx,hLOG) ScaleLUT_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ScaleLUT
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE QuantMatrix                              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 Quant                
///               $LUT8b               Quant             REG      [32]
///                                    ###
///                                    * 8b De-Quant Value [2:intra/inter][64]
///                                    * Scan matrix is integrated
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     128B, bits:    1024b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_QuantMatrix
#define h_QuantMatrix (){}

    #define     RA_QuantMatrix_Quant                           0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_QuantMatrix {
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_Quant[32];
    ///////////////////////////////////////////////////////////
    } SIE_QuantMatrix;

    ///////////////////////////////////////////////////////////
     SIGN32 QuantMatrix_drvrd(SIE_QuantMatrix *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 QuantMatrix_drvwr(SIE_QuantMatrix *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void QuantMatrix_reset(SIE_QuantMatrix *p);
     SIGN32 QuantMatrix_cmp  (SIE_QuantMatrix *p, SIE_QuantMatrix *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define QuantMatrix_check(p,pie,pfx,hLOG) QuantMatrix_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define QuantMatrix_print(p,    pfx,hLOG) QuantMatrix_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: QuantMatrix
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE MVDSize                                  (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 mvdsize              
///               $LUT8b               mvdsize           REG       [4]
///                                    ###
///                                    * Cast to 8b size_table[8], 6 elements are used in progressive picture and 16 used in interlaced field for mvd calculation
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:     128b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_MVDSize
#define h_MVDSize (){}

    #define     RA_MVDSize_mvdsize                             0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_MVDSize {
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_mvdsize[4];
    ///////////////////////////////////////////////////////////
    } SIE_MVDSize;

    ///////////////////////////////////////////////////////////
     SIGN32 MVDSize_drvrd(SIE_MVDSize *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 MVDSize_drvwr(SIE_MVDSize *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void MVDSize_reset(SIE_MVDSize *p);
     SIGN32 MVDSize_cmp  (SIE_MVDSize *p, SIE_MVDSize *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define MVDSize_check(p,pie,pfx,hLOG) MVDSize_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define MVDSize_print(p,    pfx,hLOG) MVDSize_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: MVDSize
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE MVDOffset                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 mvdoffset            
///               $LUT8b               mvdoffset         REG       [2]
///                                    ###
///                                    * Cast to 8b offset_table[8], actual 6 elements are used. for mvd calculation
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_MVDOffset
#define h_MVDOffset (){}

    #define     RA_MVDOffset_mvdoffset                         0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_MVDOffset {
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_mvdoffset[2];
    ///////////////////////////////////////////////////////////
    } SIE_MVDOffset;

    ///////////////////////////////////////////////////////////
     SIGN32 MVDOffset_drvrd(SIE_MVDOffset *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 MVDOffset_drvwr(SIE_MVDOffset *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void MVDOffset_reset(SIE_MVDOffset *p);
     SIGN32 MVDOffset_cmp  (SIE_MVDOffset *p, SIE_MVDOffset *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define MVDOffset_check(p,pie,pfx,hLOG) MVDOffset_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define MVDOffset_print(p,    pfx,hLOG) MVDOffset_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: MVDOffset
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE Bplanes                                  (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 bplane0              
///               $LUT8b               bplane0           REG     [256]
///                                    ###
///                                    * Cast to 1b Type for each MB bplane0[255=1920/16*1088/16/32]
///                                    * NOTE: every MB per bit
///                                    ###
///     @ 0x00400                      (P)
///     # 0x00400 bplane1              
///               $LUT8b               bplane1           REG     [256]
///                                    ###
///                                    * Cast to 1b Type for each MB bplane0[255=1920/16*1088/16/32]
///                                    * NOTE: every MB per bit
///                                    ###
///     @ 0x00800                      (P)
///     # 0x00800 bplane2              
///               $LUT8b               bplane2           REG     [256]
///                                    ###
///                                    * Cast to 1b Type for each MB bplane0[255=1920/16*1088/16/32]
///                                    * NOTE: every MB per bit
///                                    * End of Bplanes
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    3072B, bits:   24576b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_Bplanes
#define h_Bplanes (){}

    #define     RA_Bplanes_bplane0                             0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_Bplanes_bplane1                             0x0400
    ///////////////////////////////////////////////////////////
    #define     RA_Bplanes_bplane2                             0x0800
    ///////////////////////////////////////////////////////////

    typedef struct SIE_Bplanes {
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_bplane0[256];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_bplane1[256];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_bplane2[256];
    ///////////////////////////////////////////////////////////
    } SIE_Bplanes;

    ///////////////////////////////////////////////////////////
     SIGN32 Bplanes_drvrd(SIE_Bplanes *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 Bplanes_drvwr(SIE_Bplanes *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void Bplanes_reset(SIE_Bplanes *p);
     SIGN32 Bplanes_cmp  (SIE_Bplanes *p, SIE_Bplanes *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define Bplanes_check(p,pie,pfx,hLOG) Bplanes_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define Bplanes_print(p,    pfx,hLOG) Bplanes_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: Bplanes
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE HuffCodeEntry                            (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 16 codeValue                 
///                                    ###
///                                    * Maximum or minimum code value of specified length.
///                                    ###
///               %unsigned 16 index                     
///                                    ###
///                                    * Code index corresponding to codeValue.
///                                    * End of HuffCodeEntry
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      32b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_HuffCodeEntry
#define h_HuffCodeEntry (){}

    #define     BA_HuffCodeEntry_codeValue                     0x0000
    #define     B16HuffCodeEntry_codeValue                     0x0000
    #define   LSb32HuffCodeEntry_codeValue                        0
    #define   LSb16HuffCodeEntry_codeValue                        0
    #define       bHuffCodeEntry_codeValue                     16
    #define   MSK32HuffCodeEntry_codeValue                        0x0000FFFF

    #define     BA_HuffCodeEntry_index                         0x0002
    #define     B16HuffCodeEntry_index                         0x0002
    #define   LSb32HuffCodeEntry_index                            16
    #define   LSb16HuffCodeEntry_index                            0
    #define       bHuffCodeEntry_index                         16
    #define   MSK32HuffCodeEntry_index                            0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_HuffCodeEntry {
    ///////////////////////////////////////////////////////////
    #define   GET32HuffCodeEntry_codeValue(r32)                _BFGET_(r32,15, 0)
    #define   SET32HuffCodeEntry_codeValue(r32,v)              _BFSET_(r32,15, 0,v)
    #define   GET16HuffCodeEntry_codeValue(r16)                _BFGET_(r16,15, 0)
    #define   SET16HuffCodeEntry_codeValue(r16,v)              _BFSET_(r16,15, 0,v)

    #define   GET32HuffCodeEntry_index(r32)                    _BFGET_(r32,31,16)
    #define   SET32HuffCodeEntry_index(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16HuffCodeEntry_index(r16)                    _BFGET_(r16,15, 0)
    #define   SET16HuffCodeEntry_index(r16,v)                  _BFSET_(r16,15, 0,v)

            UNSG32 u_codeValue                                 : 16;
            UNSG32 u_index                                     : 16;
    ///////////////////////////////////////////////////////////
    } SIE_HuffCodeEntry;

    ///////////////////////////////////////////////////////////
     SIGN32 HuffCodeEntry_drvrd(SIE_HuffCodeEntry *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 HuffCodeEntry_drvwr(SIE_HuffCodeEntry *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void HuffCodeEntry_reset(SIE_HuffCodeEntry *p);
     SIGN32 HuffCodeEntry_cmp  (SIE_HuffCodeEntry *p, SIE_HuffCodeEntry *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define HuffCodeEntry_check(p,pie,pfx,hLOG) HuffCodeEntry_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define HuffCodeEntry_print(p,    pfx,hLOG) HuffCodeEntry_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: HuffCodeEntry
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE HuffCodeTab                              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 CodeEntry            
///               $HuffCodeEntry       CodeEntry         REG      [16]
///                                    ###
///                                    * Code length range is 1~16.
///                                    * End of HuffCodeTab
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      64B, bits:     512b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_HuffCodeTab
#define h_HuffCodeTab (){}

    #define     RA_HuffCodeTab_CodeEntry                       0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_HuffCodeTab {
    ///////////////////////////////////////////////////////////
              SIE_HuffCodeEntry                                ie_CodeEntry[16];
    ///////////////////////////////////////////////////////////
    } SIE_HuffCodeTab;

    ///////////////////////////////////////////////////////////
     SIGN32 HuffCodeTab_drvrd(SIE_HuffCodeTab *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 HuffCodeTab_drvwr(SIE_HuffCodeTab *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void HuffCodeTab_reset(SIE_HuffCodeTab *p);
     SIGN32 HuffCodeTab_cmp  (SIE_HuffCodeTab *p, SIE_HuffCodeTab *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define HuffCodeTab_check(p,pie,pfx,hLOG) HuffCodeTab_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define HuffCodeTab_print(p,    pfx,hLOG) HuffCodeTab_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: HuffCodeTab
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BitPlane                                 (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 bplane               
///               $LUT8b               bplane            REG     [256]
///                                    ###
///                                    * Cast to 1b Type for each MB bplane[256=1920/16*1088/16/32]
///                                    * NOTE: every MB per bit
///                                    * End of BitPlane
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    1024B, bits:    8192b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BitPlane
#define h_BitPlane (){}

    #define     RA_BitPlane_bplane                             0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BitPlane {
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_bplane[256];
    ///////////////////////////////////////////////////////////
    } SIE_BitPlane;

    ///////////////////////////////////////////////////////////
     SIGN32 BitPlane_drvrd(SIE_BitPlane *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BitPlane_drvwr(SIE_BitPlane *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BitPlane_reset(SIE_BitPlane *p);
     SIGN32 BitPlane_cmp  (SIE_BitPlane *p, SIE_BitPlane *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BitPlane_check(p,pie,pfx,hLOG) BitPlane_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BitPlane_print(p,    pfx,hLOG) BitPlane_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BitPlane
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vc1CTXI                 biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %signed   16 AC0                       
///                                    ###
///                                    * DC or 1st horizontal AC coefficient
///                                    ###
///               %unsigned 4  DMix0                     
///                                    ###
///                                    * In M3: the higher 4bits of double_quant
///                                    ###
///               %signed   12 AC1                       
///                                    ###
///                                    * 2nd horizontal AC coefficient
///                                    ###
///               %unsigned 2  motion                    
///                                    ###
///                                    * Block motion type, see BLK.motion
///                                    * 0: Intra
///                                    * 1: Forward
///                                    * 2: Backward
///                                    * 3: BI
///                                    ###
///               %unsigned 2  DMix1                     
///                                    ###
///                                    * In M3: the lower 2bits of double_quant
///                                    ###
///               %signed   12 AC2                       
///                                    ###
///                                    * 3rd horizontal AC coefficient
///                                    ###
///               %unsigned 3  type                      
///                                    ###
///                                    * Sub-set of mb_type, see MBPROP.type
///                                    * 0: skip
///                                    * 3: inter
///                                    * 5: intra
///                                    ###
///               %unsigned 1  rsvd                      
///               %signed   12 AC3                       
///                                    ###
///                                    * 4th horizontal AC coefficient
///                                    * End of vc1CTXI
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vc1CTXI
#define h_vc1CTXI (){}

    #define     BA_vc1CTXI_AC0                                 0x0000
    #define     B16vc1CTXI_AC0                                 0x0000
    #define   LSb32vc1CTXI_AC0                                    0
    #define   LSb16vc1CTXI_AC0                                    0
    #define       bvc1CTXI_AC0                                 16
    #define   MSK32vc1CTXI_AC0                                    0x0000FFFF

    #define     BA_vc1CTXI_DMix0                               0x0002
    #define     B16vc1CTXI_DMix0                               0x0002
    #define   LSb32vc1CTXI_DMix0                                  16
    #define   LSb16vc1CTXI_DMix0                                  0
    #define       bvc1CTXI_DMix0                               4
    #define   MSK32vc1CTXI_DMix0                                  0x000F0000

    #define     BA_vc1CTXI_AC1                                 0x0002
    #define     B16vc1CTXI_AC1                                 0x0002
    #define   LSb32vc1CTXI_AC1                                    20
    #define   LSb16vc1CTXI_AC1                                    4
    #define       bvc1CTXI_AC1                                 12
    #define   MSK32vc1CTXI_AC1                                    0xFFF00000

    #define     BA_vc1CTXI_motion                              0x0004
    #define     B16vc1CTXI_motion                              0x0004
    #define   LSb32vc1CTXI_motion                                 0
    #define   LSb16vc1CTXI_motion                                 0
    #define       bvc1CTXI_motion                              2
    #define   MSK32vc1CTXI_motion                                 0x00000003

    #define     BA_vc1CTXI_DMix1                               0x0004
    #define     B16vc1CTXI_DMix1                               0x0004
    #define   LSb32vc1CTXI_DMix1                                  2
    #define   LSb16vc1CTXI_DMix1                                  2
    #define       bvc1CTXI_DMix1                               2
    #define   MSK32vc1CTXI_DMix1                                  0x0000000C

    #define     BA_vc1CTXI_AC2                                 0x0004
    #define     B16vc1CTXI_AC2                                 0x0004
    #define   LSb32vc1CTXI_AC2                                    4
    #define   LSb16vc1CTXI_AC2                                    4
    #define       bvc1CTXI_AC2                                 12
    #define   MSK32vc1CTXI_AC2                                    0x0000FFF0

    #define     BA_vc1CTXI_type                                0x0006
    #define     B16vc1CTXI_type                                0x0006
    #define   LSb32vc1CTXI_type                                   16
    #define   LSb16vc1CTXI_type                                   0
    #define       bvc1CTXI_type                                3
    #define   MSK32vc1CTXI_type                                   0x00070000

    #define     BA_vc1CTXI_rsvd                                0x0006
    #define     B16vc1CTXI_rsvd                                0x0006
    #define   LSb32vc1CTXI_rsvd                                   19
    #define   LSb16vc1CTXI_rsvd                                   3
    #define       bvc1CTXI_rsvd                                1
    #define   MSK32vc1CTXI_rsvd                                   0x00080000

    #define     BA_vc1CTXI_AC3                                 0x0006
    #define     B16vc1CTXI_AC3                                 0x0006
    #define   LSb32vc1CTXI_AC3                                    20
    #define   LSb16vc1CTXI_AC3                                    4
    #define       bvc1CTXI_AC3                                 12
    #define   MSK32vc1CTXI_AC3                                    0xFFF00000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vc1CTXI {
    ///////////////////////////////////////////////////////////
    #define   GET32vc1CTXI_AC0(r32)                            _BFGET_(r32,15, 0)
    #define   SET32vc1CTXI_AC0(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16vc1CTXI_AC0(r16)                            _BFGET_(r16,15, 0)
    #define   SET16vc1CTXI_AC0(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32vc1CTXI_DMix0(r32)                          _BFGET_(r32,19,16)
    #define   SET32vc1CTXI_DMix0(r32,v)                        _BFSET_(r32,19,16,v)
    #define   GET16vc1CTXI_DMix0(r16)                          _BFGET_(r16, 3, 0)
    #define   SET16vc1CTXI_DMix0(r16,v)                        _BFSET_(r16, 3, 0,v)

    #define   GET32vc1CTXI_AC1(r32)                            _BFGET_(r32,31,20)
    #define   SET32vc1CTXI_AC1(r32,v)                          _BFSET_(r32,31,20,v)
    #define   GET16vc1CTXI_AC1(r16)                            _BFGET_(r16,15, 4)
    #define   SET16vc1CTXI_AC1(r16,v)                          _BFSET_(r16,15, 4,v)

            UNSG32 s_AC0                                       : 16;
            UNSG32 u_DMix0                                     :  4;
            UNSG32 s_AC1                                       : 12;
    ///////////////////////////////////////////////////////////

    #define   GET32vc1CTXI_motion(r32)                         _BFGET_(r32, 1, 0)
    #define   SET32vc1CTXI_motion(r32,v)                       _BFSET_(r32, 1, 0,v)
    #define   GET16vc1CTXI_motion(r16)                         _BFGET_(r16, 1, 0)
    #define   SET16vc1CTXI_motion(r16,v)                       _BFSET_(r16, 1, 0,v)

    #define   GET32vc1CTXI_DMix1(r32)                          _BFGET_(r32, 3, 2)
    #define   SET32vc1CTXI_DMix1(r32,v)                        _BFSET_(r32, 3, 2,v)
    #define   GET16vc1CTXI_DMix1(r16)                          _BFGET_(r16, 3, 2)
    #define   SET16vc1CTXI_DMix1(r16,v)                        _BFSET_(r16, 3, 2,v)

    #define   GET32vc1CTXI_AC2(r32)                            _BFGET_(r32,15, 4)
    #define   SET32vc1CTXI_AC2(r32,v)                          _BFSET_(r32,15, 4,v)
    #define   GET16vc1CTXI_AC2(r16)                            _BFGET_(r16,15, 4)
    #define   SET16vc1CTXI_AC2(r16,v)                          _BFSET_(r16,15, 4,v)

    #define   GET32vc1CTXI_type(r32)                           _BFGET_(r32,18,16)
    #define   SET32vc1CTXI_type(r32,v)                         _BFSET_(r32,18,16,v)
    #define   GET16vc1CTXI_type(r16)                           _BFGET_(r16, 2, 0)
    #define   SET16vc1CTXI_type(r16,v)                         _BFSET_(r16, 2, 0,v)

    #define   GET32vc1CTXI_rsvd(r32)                           _BFGET_(r32,19,19)
    #define   SET32vc1CTXI_rsvd(r32,v)                         _BFSET_(r32,19,19,v)
    #define   GET16vc1CTXI_rsvd(r16)                           _BFGET_(r16, 3, 3)
    #define   SET16vc1CTXI_rsvd(r16,v)                         _BFSET_(r16, 3, 3,v)

    #define   GET32vc1CTXI_AC3(r32)                            _BFGET_(r32,31,20)
    #define   SET32vc1CTXI_AC3(r32,v)                          _BFSET_(r32,31,20,v)
    #define   GET16vc1CTXI_AC3(r16)                            _BFGET_(r16,15, 4)
    #define   SET16vc1CTXI_AC3(r16,v)                          _BFSET_(r16,15, 4,v)

            UNSG32 u_motion                                    :  2;
            UNSG32 u_DMix1                                     :  2;
            UNSG32 s_AC2                                       : 12;
            UNSG32 u_type                                      :  3;
            UNSG32 u_rsvd                                      :  1;
            UNSG32 s_AC3                                       : 12;
    ///////////////////////////////////////////////////////////
    } SIE_vc1CTXI;

    ///////////////////////////////////////////////////////////
     SIGN32 vc1CTXI_drvrd(SIE_vc1CTXI *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vc1CTXI_drvwr(SIE_vc1CTXI *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vc1CTXI_reset(SIE_vc1CTXI *p);
     SIGN32 vc1CTXI_cmp  (SIE_vc1CTXI *p, SIE_vc1CTXI *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vc1CTXI_check(p,pie,pfx,hLOG) vc1CTXI_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vc1CTXI_print(p,    pfx,hLOG) vc1CTXI_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vc1CTXI
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vc1CTXI_Chroma          biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %signed   16 AC0                       
///                                    ###
///                                    * DC or 1st horizontal AC coefficient
///                                    ###
///               %unsigned 3  DMix0                     
///                                    ###
///                                    * M3: the luma cbp's {b1, b2, b3}
///                                    ###
///               %unsigned 1  rsvd0                     
///               %signed   12 AC1                       
///                                    ###
///                                    * 2nd horizontal AC coefficient
///                                    ###
///               %unsigned 2  motion                    
///                                    ###
///                                    * Block motion type, see BLK.motion
///                                    ###
///               %unsigned 2  DMix1                     
///                                    ###
///                                    * M3: from b0 to b1: {overlapflag, fieldflag}
///                                    ###
///               %signed   12 AC2                       
///                                    ###
///                                    * 3rd horizontal AC coefficient
///                                    ###
///               %unsigned 3  type                      
///                                    ###
///                                    * Sub-set of mb_type, see MBPROP.type above
///                                    * = intra16x16
///                                    ###
///               %unsigned 1  rsvd1                     
///               %signed   12 AC3                       
///                                    ###
///                                    * 4th horizontal AC coefficient
///                                    * End of vc1CTXI_Chroma
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vc1CTXI_Chroma
#define h_vc1CTXI_Chroma (){}

    #define     BA_vc1CTXI_Chroma_AC0                          0x0000
    #define     B16vc1CTXI_Chroma_AC0                          0x0000
    #define   LSb32vc1CTXI_Chroma_AC0                             0
    #define   LSb16vc1CTXI_Chroma_AC0                             0
    #define       bvc1CTXI_Chroma_AC0                          16
    #define   MSK32vc1CTXI_Chroma_AC0                             0x0000FFFF

    #define     BA_vc1CTXI_Chroma_DMix0                        0x0002
    #define     B16vc1CTXI_Chroma_DMix0                        0x0002
    #define   LSb32vc1CTXI_Chroma_DMix0                           16
    #define   LSb16vc1CTXI_Chroma_DMix0                           0
    #define       bvc1CTXI_Chroma_DMix0                        3
    #define   MSK32vc1CTXI_Chroma_DMix0                           0x00070000

    #define     BA_vc1CTXI_Chroma_rsvd0                        0x0002
    #define     B16vc1CTXI_Chroma_rsvd0                        0x0002
    #define   LSb32vc1CTXI_Chroma_rsvd0                           19
    #define   LSb16vc1CTXI_Chroma_rsvd0                           3
    #define       bvc1CTXI_Chroma_rsvd0                        1
    #define   MSK32vc1CTXI_Chroma_rsvd0                           0x00080000

    #define     BA_vc1CTXI_Chroma_AC1                          0x0002
    #define     B16vc1CTXI_Chroma_AC1                          0x0002
    #define   LSb32vc1CTXI_Chroma_AC1                             20
    #define   LSb16vc1CTXI_Chroma_AC1                             4
    #define       bvc1CTXI_Chroma_AC1                          12
    #define   MSK32vc1CTXI_Chroma_AC1                             0xFFF00000

    #define     BA_vc1CTXI_Chroma_motion                       0x0004
    #define     B16vc1CTXI_Chroma_motion                       0x0004
    #define   LSb32vc1CTXI_Chroma_motion                          0
    #define   LSb16vc1CTXI_Chroma_motion                          0
    #define       bvc1CTXI_Chroma_motion                       2
    #define   MSK32vc1CTXI_Chroma_motion                          0x00000003

    #define     BA_vc1CTXI_Chroma_DMix1                        0x0004
    #define     B16vc1CTXI_Chroma_DMix1                        0x0004
    #define   LSb32vc1CTXI_Chroma_DMix1                           2
    #define   LSb16vc1CTXI_Chroma_DMix1                           2
    #define       bvc1CTXI_Chroma_DMix1                        2
    #define   MSK32vc1CTXI_Chroma_DMix1                           0x0000000C

    #define     BA_vc1CTXI_Chroma_AC2                          0x0004
    #define     B16vc1CTXI_Chroma_AC2                          0x0004
    #define   LSb32vc1CTXI_Chroma_AC2                             4
    #define   LSb16vc1CTXI_Chroma_AC2                             4
    #define       bvc1CTXI_Chroma_AC2                          12
    #define   MSK32vc1CTXI_Chroma_AC2                             0x0000FFF0

    #define     BA_vc1CTXI_Chroma_type                         0x0006
    #define     B16vc1CTXI_Chroma_type                         0x0006
    #define   LSb32vc1CTXI_Chroma_type                            16
    #define   LSb16vc1CTXI_Chroma_type                            0
    #define       bvc1CTXI_Chroma_type                         3
    #define   MSK32vc1CTXI_Chroma_type                            0x00070000

    #define     BA_vc1CTXI_Chroma_rsvd1                        0x0006
    #define     B16vc1CTXI_Chroma_rsvd1                        0x0006
    #define   LSb32vc1CTXI_Chroma_rsvd1                           19
    #define   LSb16vc1CTXI_Chroma_rsvd1                           3
    #define       bvc1CTXI_Chroma_rsvd1                        1
    #define   MSK32vc1CTXI_Chroma_rsvd1                           0x00080000

    #define     BA_vc1CTXI_Chroma_AC3                          0x0006
    #define     B16vc1CTXI_Chroma_AC3                          0x0006
    #define   LSb32vc1CTXI_Chroma_AC3                             20
    #define   LSb16vc1CTXI_Chroma_AC3                             4
    #define       bvc1CTXI_Chroma_AC3                          12
    #define   MSK32vc1CTXI_Chroma_AC3                             0xFFF00000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vc1CTXI_Chroma {
    ///////////////////////////////////////////////////////////
    #define   GET32vc1CTXI_Chroma_AC0(r32)                     _BFGET_(r32,15, 0)
    #define   SET32vc1CTXI_Chroma_AC0(r32,v)                   _BFSET_(r32,15, 0,v)
    #define   GET16vc1CTXI_Chroma_AC0(r16)                     _BFGET_(r16,15, 0)
    #define   SET16vc1CTXI_Chroma_AC0(r16,v)                   _BFSET_(r16,15, 0,v)

    #define   GET32vc1CTXI_Chroma_DMix0(r32)                   _BFGET_(r32,18,16)
    #define   SET32vc1CTXI_Chroma_DMix0(r32,v)                 _BFSET_(r32,18,16,v)
    #define   GET16vc1CTXI_Chroma_DMix0(r16)                   _BFGET_(r16, 2, 0)
    #define   SET16vc1CTXI_Chroma_DMix0(r16,v)                 _BFSET_(r16, 2, 0,v)

    #define   GET32vc1CTXI_Chroma_rsvd0(r32)                   _BFGET_(r32,19,19)
    #define   SET32vc1CTXI_Chroma_rsvd0(r32,v)                 _BFSET_(r32,19,19,v)
    #define   GET16vc1CTXI_Chroma_rsvd0(r16)                   _BFGET_(r16, 3, 3)
    #define   SET16vc1CTXI_Chroma_rsvd0(r16,v)                 _BFSET_(r16, 3, 3,v)

    #define   GET32vc1CTXI_Chroma_AC1(r32)                     _BFGET_(r32,31,20)
    #define   SET32vc1CTXI_Chroma_AC1(r32,v)                   _BFSET_(r32,31,20,v)
    #define   GET16vc1CTXI_Chroma_AC1(r16)                     _BFGET_(r16,15, 4)
    #define   SET16vc1CTXI_Chroma_AC1(r16,v)                   _BFSET_(r16,15, 4,v)

            UNSG32 s_AC0                                       : 16;
            UNSG32 u_DMix0                                     :  3;
            UNSG32 u_rsvd0                                     :  1;
            UNSG32 s_AC1                                       : 12;
    ///////////////////////////////////////////////////////////

    #define   GET32vc1CTXI_Chroma_motion(r32)                  _BFGET_(r32, 1, 0)
    #define   SET32vc1CTXI_Chroma_motion(r32,v)                _BFSET_(r32, 1, 0,v)
    #define   GET16vc1CTXI_Chroma_motion(r16)                  _BFGET_(r16, 1, 0)
    #define   SET16vc1CTXI_Chroma_motion(r16,v)                _BFSET_(r16, 1, 0,v)

    #define   GET32vc1CTXI_Chroma_DMix1(r32)                   _BFGET_(r32, 3, 2)
    #define   SET32vc1CTXI_Chroma_DMix1(r32,v)                 _BFSET_(r32, 3, 2,v)
    #define   GET16vc1CTXI_Chroma_DMix1(r16)                   _BFGET_(r16, 3, 2)
    #define   SET16vc1CTXI_Chroma_DMix1(r16,v)                 _BFSET_(r16, 3, 2,v)

    #define   GET32vc1CTXI_Chroma_AC2(r32)                     _BFGET_(r32,15, 4)
    #define   SET32vc1CTXI_Chroma_AC2(r32,v)                   _BFSET_(r32,15, 4,v)
    #define   GET16vc1CTXI_Chroma_AC2(r16)                     _BFGET_(r16,15, 4)
    #define   SET16vc1CTXI_Chroma_AC2(r16,v)                   _BFSET_(r16,15, 4,v)

    #define   GET32vc1CTXI_Chroma_type(r32)                    _BFGET_(r32,18,16)
    #define   SET32vc1CTXI_Chroma_type(r32,v)                  _BFSET_(r32,18,16,v)
    #define   GET16vc1CTXI_Chroma_type(r16)                    _BFGET_(r16, 2, 0)
    #define   SET16vc1CTXI_Chroma_type(r16,v)                  _BFSET_(r16, 2, 0,v)

    #define   GET32vc1CTXI_Chroma_rsvd1(r32)                   _BFGET_(r32,19,19)
    #define   SET32vc1CTXI_Chroma_rsvd1(r32,v)                 _BFSET_(r32,19,19,v)
    #define   GET16vc1CTXI_Chroma_rsvd1(r16)                   _BFGET_(r16, 3, 3)
    #define   SET16vc1CTXI_Chroma_rsvd1(r16,v)                 _BFSET_(r16, 3, 3,v)

    #define   GET32vc1CTXI_Chroma_AC3(r32)                     _BFGET_(r32,31,20)
    #define   SET32vc1CTXI_Chroma_AC3(r32,v)                   _BFSET_(r32,31,20,v)
    #define   GET16vc1CTXI_Chroma_AC3(r16)                     _BFGET_(r16,15, 4)
    #define   SET16vc1CTXI_Chroma_AC3(r16,v)                   _BFSET_(r16,15, 4,v)

            UNSG32 u_motion                                    :  2;
            UNSG32 u_DMix1                                     :  2;
            UNSG32 s_AC2                                       : 12;
            UNSG32 u_type                                      :  3;
            UNSG32 u_rsvd1                                     :  1;
            UNSG32 s_AC3                                       : 12;
    ///////////////////////////////////////////////////////////
    } SIE_vc1CTXI_Chroma;

    ///////////////////////////////////////////////////////////
     SIGN32 vc1CTXI_Chroma_drvrd(SIE_vc1CTXI_Chroma *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vc1CTXI_Chroma_drvwr(SIE_vc1CTXI_Chroma *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vc1CTXI_Chroma_reset(SIE_vc1CTXI_Chroma *p);
     SIGN32 vc1CTXI_Chroma_cmp  (SIE_vc1CTXI_Chroma *p, SIE_vc1CTXI_Chroma *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vc1CTXI_Chroma_check(p,pie,pfx,hLOG) vc1CTXI_Chroma_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vc1CTXI_Chroma_print(p,    pfx,hLOG) vc1CTXI_Chroma_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vc1CTXI_Chroma
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vc1CTXI4x4                               (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 luma                 
///               $vc1CTXI             luma              REG          
///                                    ###
///                                    * DC/AC for Y
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 chroma               
///               $vc1CTXI             chroma            REG          
///                                    ###
///                                    * DC/AC for UV
///                                    * End of vc1CTXI4x4
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:     128b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vc1CTXI4x4
#define h_vc1CTXI4x4 (){}

    #define     RA_vc1CTXI4x4_luma                             0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_vc1CTXI4x4_chroma                           0x0008
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vc1CTXI4x4 {
    ///////////////////////////////////////////////////////////
              SIE_vc1CTXI                                      ie_luma;
    ///////////////////////////////////////////////////////////
              SIE_vc1CTXI                                      ie_chroma;
    ///////////////////////////////////////////////////////////
    } SIE_vc1CTXI4x4;

    ///////////////////////////////////////////////////////////
     SIGN32 vc1CTXI4x4_drvrd(SIE_vc1CTXI4x4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vc1CTXI4x4_drvwr(SIE_vc1CTXI4x4 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vc1CTXI4x4_reset(SIE_vc1CTXI4x4 *p);
     SIGN32 vc1CTXI4x4_cmp  (SIE_vc1CTXI4x4 *p, SIE_vc1CTXI4x4 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vc1CTXI4x4_check(p,pie,pfx,hLOG) vc1CTXI4x4_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vc1CTXI4x4_print(p,    pfx,hLOG) vc1CTXI4x4_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vc1CTXI4x4
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE NIntraCtx               biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %signed   16 TopDC                     
///                                    ###
///                                    * The scaled dc on the top of current blk
///                                    * if 0, it means the top dc should be read from
///                                    * TopAddr
///                                    ###
///               %signed   16 LeftDC                    
///               %signed   16 TopLeftDC                 
///               %signed   16 TopAddr                   
///     @ 0x00008                      (P)
///               %signed   16 LeftAddr                  
///               %signed   16 XAddr                     
///               %signed   16 TopDMB                    
///               %signed   16 LeftDMB                   
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:     128b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_NIntraCtx
#define h_NIntraCtx (){}

    #define     BA_NIntraCtx_TopDC                             0x0000
    #define     B16NIntraCtx_TopDC                             0x0000
    #define   LSb32NIntraCtx_TopDC                                0
    #define   LSb16NIntraCtx_TopDC                                0
    #define       bNIntraCtx_TopDC                             16
    #define   MSK32NIntraCtx_TopDC                                0x0000FFFF

    #define     BA_NIntraCtx_LeftDC                            0x0002
    #define     B16NIntraCtx_LeftDC                            0x0002
    #define   LSb32NIntraCtx_LeftDC                               16
    #define   LSb16NIntraCtx_LeftDC                               0
    #define       bNIntraCtx_LeftDC                            16
    #define   MSK32NIntraCtx_LeftDC                               0xFFFF0000

    #define     BA_NIntraCtx_TopLeftDC                         0x0004
    #define     B16NIntraCtx_TopLeftDC                         0x0004
    #define   LSb32NIntraCtx_TopLeftDC                            0
    #define   LSb16NIntraCtx_TopLeftDC                            0
    #define       bNIntraCtx_TopLeftDC                         16
    #define   MSK32NIntraCtx_TopLeftDC                            0x0000FFFF

    #define     BA_NIntraCtx_TopAddr                           0x0006
    #define     B16NIntraCtx_TopAddr                           0x0006
    #define   LSb32NIntraCtx_TopAddr                              16
    #define   LSb16NIntraCtx_TopAddr                              0
    #define       bNIntraCtx_TopAddr                           16
    #define   MSK32NIntraCtx_TopAddr                              0xFFFF0000
    ///////////////////////////////////////////////////////////

    #define     BA_NIntraCtx_LeftAddr                          0x0008
    #define     B16NIntraCtx_LeftAddr                          0x0008
    #define   LSb32NIntraCtx_LeftAddr                             0
    #define   LSb16NIntraCtx_LeftAddr                             0
    #define       bNIntraCtx_LeftAddr                          16
    #define   MSK32NIntraCtx_LeftAddr                             0x0000FFFF

    #define     BA_NIntraCtx_XAddr                             0x000A
    #define     B16NIntraCtx_XAddr                             0x000A
    #define   LSb32NIntraCtx_XAddr                                16
    #define   LSb16NIntraCtx_XAddr                                0
    #define       bNIntraCtx_XAddr                             16
    #define   MSK32NIntraCtx_XAddr                                0xFFFF0000

    #define     BA_NIntraCtx_TopDMB                            0x000C
    #define     B16NIntraCtx_TopDMB                            0x000C
    #define   LSb32NIntraCtx_TopDMB                               0
    #define   LSb16NIntraCtx_TopDMB                               0
    #define       bNIntraCtx_TopDMB                            16
    #define   MSK32NIntraCtx_TopDMB                               0x0000FFFF

    #define     BA_NIntraCtx_LeftDMB                           0x000E
    #define     B16NIntraCtx_LeftDMB                           0x000E
    #define   LSb32NIntraCtx_LeftDMB                              16
    #define   LSb16NIntraCtx_LeftDMB                              0
    #define       bNIntraCtx_LeftDMB                           16
    #define   MSK32NIntraCtx_LeftDMB                              0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_NIntraCtx {
    ///////////////////////////////////////////////////////////
    #define   GET32NIntraCtx_TopDC(r32)                        _BFGET_(r32,15, 0)
    #define   SET32NIntraCtx_TopDC(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16NIntraCtx_TopDC(r16)                        _BFGET_(r16,15, 0)
    #define   SET16NIntraCtx_TopDC(r16,v)                      _BFSET_(r16,15, 0,v)

    #define   GET32NIntraCtx_LeftDC(r32)                       _BFGET_(r32,31,16)
    #define   SET32NIntraCtx_LeftDC(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16NIntraCtx_LeftDC(r16)                       _BFGET_(r16,15, 0)
    #define   SET16NIntraCtx_LeftDC(r16,v)                     _BFSET_(r16,15, 0,v)

            UNSG32 s_TopDC                                     : 16;
            UNSG32 s_LeftDC                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32NIntraCtx_TopLeftDC(r32)                    _BFGET_(r32,15, 0)
    #define   SET32NIntraCtx_TopLeftDC(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16NIntraCtx_TopLeftDC(r16)                    _BFGET_(r16,15, 0)
    #define   SET16NIntraCtx_TopLeftDC(r16,v)                  _BFSET_(r16,15, 0,v)

    #define   GET32NIntraCtx_TopAddr(r32)                      _BFGET_(r32,31,16)
    #define   SET32NIntraCtx_TopAddr(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16NIntraCtx_TopAddr(r16)                      _BFGET_(r16,15, 0)
    #define   SET16NIntraCtx_TopAddr(r16,v)                    _BFSET_(r16,15, 0,v)

            UNSG32 s_TopLeftDC                                 : 16;
            UNSG32 s_TopAddr                                   : 16;
    ///////////////////////////////////////////////////////////
    #define   GET32NIntraCtx_LeftAddr(r32)                     _BFGET_(r32,15, 0)
    #define   SET32NIntraCtx_LeftAddr(r32,v)                   _BFSET_(r32,15, 0,v)
    #define   GET16NIntraCtx_LeftAddr(r16)                     _BFGET_(r16,15, 0)
    #define   SET16NIntraCtx_LeftAddr(r16,v)                   _BFSET_(r16,15, 0,v)

    #define   GET32NIntraCtx_XAddr(r32)                        _BFGET_(r32,31,16)
    #define   SET32NIntraCtx_XAddr(r32,v)                      _BFSET_(r32,31,16,v)
    #define   GET16NIntraCtx_XAddr(r16)                        _BFGET_(r16,15, 0)
    #define   SET16NIntraCtx_XAddr(r16,v)                      _BFSET_(r16,15, 0,v)

            UNSG32 s_LeftAddr                                  : 16;
            UNSG32 s_XAddr                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32NIntraCtx_TopDMB(r32)                       _BFGET_(r32,15, 0)
    #define   SET32NIntraCtx_TopDMB(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16NIntraCtx_TopDMB(r16)                       _BFGET_(r16,15, 0)
    #define   SET16NIntraCtx_TopDMB(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32NIntraCtx_LeftDMB(r32)                      _BFGET_(r32,31,16)
    #define   SET32NIntraCtx_LeftDMB(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16NIntraCtx_LeftDMB(r16)                      _BFGET_(r16,15, 0)
    #define   SET16NIntraCtx_LeftDMB(r16,v)                    _BFSET_(r16,15, 0,v)

            UNSG32 s_TopDMB                                    : 16;
            UNSG32 s_LeftDMB                                   : 16;
    ///////////////////////////////////////////////////////////
    } SIE_NIntraCtx;

    ///////////////////////////////////////////////////////////
     SIGN32 NIntraCtx_drvrd(SIE_NIntraCtx *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 NIntraCtx_drvwr(SIE_NIntraCtx *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void NIntraCtx_reset(SIE_NIntraCtx *p);
     SIGN32 NIntraCtx_cmp  (SIE_NIntraCtx *p, SIE_NIntraCtx *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define NIntraCtx_check(p,pie,pfx,hLOG) NIntraCtx_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define NIntraCtx_print(p,    pfx,hLOG) NIntraCtx_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: NIntraCtx
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE mp4CTXI                 biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %signed   16 AC0                       
///                                    ###
///                                    * DC or 1st horizontal AC coefficient
///                                    ###
///               %unsigned 4  LQP                       
///                                    ###
///                                    * In M0: the lower 4bits of QP
///                                    ###
///               %signed   12 AC1                       
///                                    ###
///                                    * 2nd horizontal AC coefficient
///                                    ###
///               %unsigned 2  motion                    
///                                    ###
///                                    * Block motion type, see BLK.motion
///                                    * 0: Intra
///                                    * 1: Forward
///                                    * 2: Backward
///                                    * 3: BI
///                                    ###
///               %unsigned 2  HQP                       
///                                    ###
///                                    * In M0: the higher 2bits of QP
///                                    ###
///               %signed   12 AC2                       
///                                    ###
///                                    * 3rd horizontal AC coefficient
///                                    ###
///               %unsigned 3  type                      
///                                    ###
///                                    * Sub-set of mb_type, see MBPROP.type
///                                    * 0: skip
///                                    * 3: inter
///                                    * 5: intra
///                                    ###
///               %unsigned 1  rsvd                      
///               %signed   12 AC3                       
///                                    ###
///                                    * 4th horizontal AC coefficient
///                                    * End of mp4CTXI
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_mp4CTXI
#define h_mp4CTXI (){}

    #define     BA_mp4CTXI_AC0                                 0x0000
    #define     B16mp4CTXI_AC0                                 0x0000
    #define   LSb32mp4CTXI_AC0                                    0
    #define   LSb16mp4CTXI_AC0                                    0
    #define       bmp4CTXI_AC0                                 16
    #define   MSK32mp4CTXI_AC0                                    0x0000FFFF

    #define     BA_mp4CTXI_LQP                                 0x0002
    #define     B16mp4CTXI_LQP                                 0x0002
    #define   LSb32mp4CTXI_LQP                                    16
    #define   LSb16mp4CTXI_LQP                                    0
    #define       bmp4CTXI_LQP                                 4
    #define   MSK32mp4CTXI_LQP                                    0x000F0000

    #define     BA_mp4CTXI_AC1                                 0x0002
    #define     B16mp4CTXI_AC1                                 0x0002
    #define   LSb32mp4CTXI_AC1                                    20
    #define   LSb16mp4CTXI_AC1                                    4
    #define       bmp4CTXI_AC1                                 12
    #define   MSK32mp4CTXI_AC1                                    0xFFF00000

    #define     BA_mp4CTXI_motion                              0x0004
    #define     B16mp4CTXI_motion                              0x0004
    #define   LSb32mp4CTXI_motion                                 0
    #define   LSb16mp4CTXI_motion                                 0
    #define       bmp4CTXI_motion                              2
    #define   MSK32mp4CTXI_motion                                 0x00000003

    #define     BA_mp4CTXI_HQP                                 0x0004
    #define     B16mp4CTXI_HQP                                 0x0004
    #define   LSb32mp4CTXI_HQP                                    2
    #define   LSb16mp4CTXI_HQP                                    2
    #define       bmp4CTXI_HQP                                 2
    #define   MSK32mp4CTXI_HQP                                    0x0000000C

    #define     BA_mp4CTXI_AC2                                 0x0004
    #define     B16mp4CTXI_AC2                                 0x0004
    #define   LSb32mp4CTXI_AC2                                    4
    #define   LSb16mp4CTXI_AC2                                    4
    #define       bmp4CTXI_AC2                                 12
    #define   MSK32mp4CTXI_AC2                                    0x0000FFF0

    #define     BA_mp4CTXI_type                                0x0006
    #define     B16mp4CTXI_type                                0x0006
    #define   LSb32mp4CTXI_type                                   16
    #define   LSb16mp4CTXI_type                                   0
    #define       bmp4CTXI_type                                3
    #define   MSK32mp4CTXI_type                                   0x00070000

    #define     BA_mp4CTXI_rsvd                                0x0006
    #define     B16mp4CTXI_rsvd                                0x0006
    #define   LSb32mp4CTXI_rsvd                                   19
    #define   LSb16mp4CTXI_rsvd                                   3
    #define       bmp4CTXI_rsvd                                1
    #define   MSK32mp4CTXI_rsvd                                   0x00080000

    #define     BA_mp4CTXI_AC3                                 0x0006
    #define     B16mp4CTXI_AC3                                 0x0006
    #define   LSb32mp4CTXI_AC3                                    20
    #define   LSb16mp4CTXI_AC3                                    4
    #define       bmp4CTXI_AC3                                 12
    #define   MSK32mp4CTXI_AC3                                    0xFFF00000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_mp4CTXI {
    ///////////////////////////////////////////////////////////
    #define   GET32mp4CTXI_AC0(r32)                            _BFGET_(r32,15, 0)
    #define   SET32mp4CTXI_AC0(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16mp4CTXI_AC0(r16)                            _BFGET_(r16,15, 0)
    #define   SET16mp4CTXI_AC0(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32mp4CTXI_LQP(r32)                            _BFGET_(r32,19,16)
    #define   SET32mp4CTXI_LQP(r32,v)                          _BFSET_(r32,19,16,v)
    #define   GET16mp4CTXI_LQP(r16)                            _BFGET_(r16, 3, 0)
    #define   SET16mp4CTXI_LQP(r16,v)                          _BFSET_(r16, 3, 0,v)

    #define   GET32mp4CTXI_AC1(r32)                            _BFGET_(r32,31,20)
    #define   SET32mp4CTXI_AC1(r32,v)                          _BFSET_(r32,31,20,v)
    #define   GET16mp4CTXI_AC1(r16)                            _BFGET_(r16,15, 4)
    #define   SET16mp4CTXI_AC1(r16,v)                          _BFSET_(r16,15, 4,v)

            UNSG32 s_AC0                                       : 16;
            UNSG32 u_LQP                                       :  4;
            UNSG32 s_AC1                                       : 12;
    ///////////////////////////////////////////////////////////

    #define   GET32mp4CTXI_motion(r32)                         _BFGET_(r32, 1, 0)
    #define   SET32mp4CTXI_motion(r32,v)                       _BFSET_(r32, 1, 0,v)
    #define   GET16mp4CTXI_motion(r16)                         _BFGET_(r16, 1, 0)
    #define   SET16mp4CTXI_motion(r16,v)                       _BFSET_(r16, 1, 0,v)

    #define   GET32mp4CTXI_HQP(r32)                            _BFGET_(r32, 3, 2)
    #define   SET32mp4CTXI_HQP(r32,v)                          _BFSET_(r32, 3, 2,v)
    #define   GET16mp4CTXI_HQP(r16)                            _BFGET_(r16, 3, 2)
    #define   SET16mp4CTXI_HQP(r16,v)                          _BFSET_(r16, 3, 2,v)

    #define   GET32mp4CTXI_AC2(r32)                            _BFGET_(r32,15, 4)
    #define   SET32mp4CTXI_AC2(r32,v)                          _BFSET_(r32,15, 4,v)
    #define   GET16mp4CTXI_AC2(r16)                            _BFGET_(r16,15, 4)
    #define   SET16mp4CTXI_AC2(r16,v)                          _BFSET_(r16,15, 4,v)

    #define   GET32mp4CTXI_type(r32)                           _BFGET_(r32,18,16)
    #define   SET32mp4CTXI_type(r32,v)                         _BFSET_(r32,18,16,v)
    #define   GET16mp4CTXI_type(r16)                           _BFGET_(r16, 2, 0)
    #define   SET16mp4CTXI_type(r16,v)                         _BFSET_(r16, 2, 0,v)

    #define   GET32mp4CTXI_rsvd(r32)                           _BFGET_(r32,19,19)
    #define   SET32mp4CTXI_rsvd(r32,v)                         _BFSET_(r32,19,19,v)
    #define   GET16mp4CTXI_rsvd(r16)                           _BFGET_(r16, 3, 3)
    #define   SET16mp4CTXI_rsvd(r16,v)                         _BFSET_(r16, 3, 3,v)

    #define   GET32mp4CTXI_AC3(r32)                            _BFGET_(r32,31,20)
    #define   SET32mp4CTXI_AC3(r32,v)                          _BFSET_(r32,31,20,v)
    #define   GET16mp4CTXI_AC3(r16)                            _BFGET_(r16,15, 4)
    #define   SET16mp4CTXI_AC3(r16,v)                          _BFSET_(r16,15, 4,v)

            UNSG32 u_motion                                    :  2;
            UNSG32 u_HQP                                       :  2;
            UNSG32 s_AC2                                       : 12;
            UNSG32 u_type                                      :  3;
            UNSG32 u_rsvd                                      :  1;
            UNSG32 s_AC3                                       : 12;
    ///////////////////////////////////////////////////////////
    } SIE_mp4CTXI;

    ///////////////////////////////////////////////////////////
     SIGN32 mp4CTXI_drvrd(SIE_mp4CTXI *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 mp4CTXI_drvwr(SIE_mp4CTXI *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void mp4CTXI_reset(SIE_mp4CTXI *p);
     SIGN32 mp4CTXI_cmp  (SIE_mp4CTXI *p, SIE_mp4CTXI *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define mp4CTXI_check(p,pie,pfx,hLOG) mp4CTXI_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define mp4CTXI_print(p,    pfx,hLOG) mp4CTXI_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: mp4CTXI
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE mp4CTXI_Chroma          biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %signed   16 AC0                       
///                                    ###
///                                    * DC or 1st horizontal AC coefficient
///                                    ###
///               %signed   16 AC1                       
///                                    ###
///                                    * 2nd horizontal AC coefficient
///                                    ###
///               %signed   16 AC2                       
///                                    ###
///                                    * 3rd horizontal AC coefficient
///                                    ###
///               %signed   16 AC3                       
///                                    ###
///                                    * 4th horizontal AC coefficient
///                                    * End of mp4CTXI_Chroma
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_mp4CTXI_Chroma
#define h_mp4CTXI_Chroma (){}

    #define     BA_mp4CTXI_Chroma_AC0                          0x0000
    #define     B16mp4CTXI_Chroma_AC0                          0x0000
    #define   LSb32mp4CTXI_Chroma_AC0                             0
    #define   LSb16mp4CTXI_Chroma_AC0                             0
    #define       bmp4CTXI_Chroma_AC0                          16
    #define   MSK32mp4CTXI_Chroma_AC0                             0x0000FFFF

    #define     BA_mp4CTXI_Chroma_AC1                          0x0002
    #define     B16mp4CTXI_Chroma_AC1                          0x0002
    #define   LSb32mp4CTXI_Chroma_AC1                             16
    #define   LSb16mp4CTXI_Chroma_AC1                             0
    #define       bmp4CTXI_Chroma_AC1                          16
    #define   MSK32mp4CTXI_Chroma_AC1                             0xFFFF0000

    #define     BA_mp4CTXI_Chroma_AC2                          0x0004
    #define     B16mp4CTXI_Chroma_AC2                          0x0004
    #define   LSb32mp4CTXI_Chroma_AC2                             0
    #define   LSb16mp4CTXI_Chroma_AC2                             0
    #define       bmp4CTXI_Chroma_AC2                          16
    #define   MSK32mp4CTXI_Chroma_AC2                             0x0000FFFF

    #define     BA_mp4CTXI_Chroma_AC3                          0x0006
    #define     B16mp4CTXI_Chroma_AC3                          0x0006
    #define   LSb32mp4CTXI_Chroma_AC3                             16
    #define   LSb16mp4CTXI_Chroma_AC3                             0
    #define       bmp4CTXI_Chroma_AC3                          16
    #define   MSK32mp4CTXI_Chroma_AC3                             0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_mp4CTXI_Chroma {
    ///////////////////////////////////////////////////////////
    #define   GET32mp4CTXI_Chroma_AC0(r32)                     _BFGET_(r32,15, 0)
    #define   SET32mp4CTXI_Chroma_AC0(r32,v)                   _BFSET_(r32,15, 0,v)
    #define   GET16mp4CTXI_Chroma_AC0(r16)                     _BFGET_(r16,15, 0)
    #define   SET16mp4CTXI_Chroma_AC0(r16,v)                   _BFSET_(r16,15, 0,v)

    #define   GET32mp4CTXI_Chroma_AC1(r32)                     _BFGET_(r32,31,16)
    #define   SET32mp4CTXI_Chroma_AC1(r32,v)                   _BFSET_(r32,31,16,v)
    #define   GET16mp4CTXI_Chroma_AC1(r16)                     _BFGET_(r16,15, 0)
    #define   SET16mp4CTXI_Chroma_AC1(r16,v)                   _BFSET_(r16,15, 0,v)

            UNSG32 s_AC0                                       : 16;
            UNSG32 s_AC1                                       : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32mp4CTXI_Chroma_AC2(r32)                     _BFGET_(r32,15, 0)
    #define   SET32mp4CTXI_Chroma_AC2(r32,v)                   _BFSET_(r32,15, 0,v)
    #define   GET16mp4CTXI_Chroma_AC2(r16)                     _BFGET_(r16,15, 0)
    #define   SET16mp4CTXI_Chroma_AC2(r16,v)                   _BFSET_(r16,15, 0,v)

    #define   GET32mp4CTXI_Chroma_AC3(r32)                     _BFGET_(r32,31,16)
    #define   SET32mp4CTXI_Chroma_AC3(r32,v)                   _BFSET_(r32,31,16,v)
    #define   GET16mp4CTXI_Chroma_AC3(r16)                     _BFGET_(r16,15, 0)
    #define   SET16mp4CTXI_Chroma_AC3(r16,v)                   _BFSET_(r16,15, 0,v)

            UNSG32 s_AC2                                       : 16;
            UNSG32 s_AC3                                       : 16;
    ///////////////////////////////////////////////////////////
    } SIE_mp4CTXI_Chroma;

    ///////////////////////////////////////////////////////////
     SIGN32 mp4CTXI_Chroma_drvrd(SIE_mp4CTXI_Chroma *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 mp4CTXI_Chroma_drvwr(SIE_mp4CTXI_Chroma *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void mp4CTXI_Chroma_reset(SIE_mp4CTXI_Chroma *p);
     SIGN32 mp4CTXI_Chroma_cmp  (SIE_mp4CTXI_Chroma *p, SIE_mp4CTXI_Chroma *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define mp4CTXI_Chroma_check(p,pie,pfx,hLOG) mp4CTXI_Chroma_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define mp4CTXI_Chroma_print(p,    pfx,hLOG) mp4CTXI_Chroma_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: mp4CTXI_Chroma
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE VC1MBMode                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 4  FLDTX                     
///                                    : field_tx                  0x1
///                                    : frame_tx                  0x0
///                                    : no_cbp                    0x2
///                                                 ###
///                                                 * Residual transform coding type
///                                                 ###
///               %unsigned 4  MVPresent                 
///                                    : mv_present                0x1
///                                    : mv_not_present            0x0
///                                                 ###
///                                                 * Whether non-zero motion vector differential is present for 1-MV case
///                                                 ###
///               %unsigned 4  MBTYPE                    
///                                    : 1mv                       0x0
///                                    : 4mvFld                    0x1
///                                    : 2mvFld                    0x2
///                                    : 4mv                       0x3
///                                    : intra                     0x4
///                                                 ###
///                                                 * MB prediction type, definitions should be consistent with BLK.partition
///                                                 * End of VC1MBMode
///                                                 ###
///               %%        20         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      12b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_VC1MBMode
#define h_VC1MBMode (){}

    #define     BA_VC1MBMode_FLDTX                             0x0000
    #define     B16VC1MBMode_FLDTX                             0x0000
    #define   LSb32VC1MBMode_FLDTX                                0
    #define   LSb16VC1MBMode_FLDTX                                0
    #define       bVC1MBMode_FLDTX                             4
    #define   MSK32VC1MBMode_FLDTX                                0x0000000F
    #define        VC1MBMode_FLDTX_field_tx                                 0x1
    #define        VC1MBMode_FLDTX_frame_tx                                 0x0
    #define        VC1MBMode_FLDTX_no_cbp                                   0x2

    #define     BA_VC1MBMode_MVPresent                         0x0000
    #define     B16VC1MBMode_MVPresent                         0x0000
    #define   LSb32VC1MBMode_MVPresent                            4
    #define   LSb16VC1MBMode_MVPresent                            4
    #define       bVC1MBMode_MVPresent                         4
    #define   MSK32VC1MBMode_MVPresent                            0x000000F0
    #define        VC1MBMode_MVPresent_mv_present                           0x1
    #define        VC1MBMode_MVPresent_mv_not_present                       0x0

    #define     BA_VC1MBMode_MBTYPE                            0x0001
    #define     B16VC1MBMode_MBTYPE                            0x0000
    #define   LSb32VC1MBMode_MBTYPE                               8
    #define   LSb16VC1MBMode_MBTYPE                               8
    #define       bVC1MBMode_MBTYPE                            4
    #define   MSK32VC1MBMode_MBTYPE                               0x00000F00
    #define        VC1MBMode_MBTYPE_1mv                                     0x0
    #define        VC1MBMode_MBTYPE_4mvFld                                  0x1
    #define        VC1MBMode_MBTYPE_2mvFld                                  0x2
    #define        VC1MBMode_MBTYPE_4mv                                     0x3
    #define        VC1MBMode_MBTYPE_intra                                   0x4
    ///////////////////////////////////////////////////////////

    typedef struct SIE_VC1MBMode {
    ///////////////////////////////////////////////////////////
    #define   GET32VC1MBMode_FLDTX(r32)                        _BFGET_(r32, 3, 0)
    #define   SET32VC1MBMode_FLDTX(r32,v)                      _BFSET_(r32, 3, 0,v)
    #define   GET16VC1MBMode_FLDTX(r16)                        _BFGET_(r16, 3, 0)
    #define   SET16VC1MBMode_FLDTX(r16,v)                      _BFSET_(r16, 3, 0,v)

    #define   GET32VC1MBMode_MVPresent(r32)                    _BFGET_(r32, 7, 4)
    #define   SET32VC1MBMode_MVPresent(r32,v)                  _BFSET_(r32, 7, 4,v)
    #define   GET16VC1MBMode_MVPresent(r16)                    _BFGET_(r16, 7, 4)
    #define   SET16VC1MBMode_MVPresent(r16,v)                  _BFSET_(r16, 7, 4,v)

    #define   GET32VC1MBMode_MBTYPE(r32)                       _BFGET_(r32,11, 8)
    #define   SET32VC1MBMode_MBTYPE(r32,v)                     _BFSET_(r32,11, 8,v)
    #define   GET16VC1MBMode_MBTYPE(r16)                       _BFGET_(r16,11, 8)
    #define   SET16VC1MBMode_MBTYPE(r16,v)                     _BFSET_(r16,11, 8,v)

            UNSG32 u_FLDTX                                     :  4;
            UNSG32 u_MVPresent                                 :  4;
            UNSG32 u_MBTYPE                                    :  4;
            UNSG32 RSVDx0_b12                                  : 20;
    ///////////////////////////////////////////////////////////
    } SIE_VC1MBMode;

    ///////////////////////////////////////////////////////////
     SIGN32 VC1MBMode_drvrd(SIE_VC1MBMode *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 VC1MBMode_drvwr(SIE_VC1MBMode *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void VC1MBMode_reset(SIE_VC1MBMode *p);
     SIGN32 VC1MBMode_cmp  (SIE_VC1MBMode *p, SIE_VC1MBMode *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define VC1MBMode_check(p,pie,pfx,hLOG) VC1MBMode_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define VC1MBMode_print(p,    pfx,hLOG) VC1MBMode_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: VC1MBMode
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CtxMPGx                                  (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 MPG                  (P)
///               %unsigned 1  frmcoding                 
///                                    ###
///                                    * MPEG2,4/VC1 : Frame or field coding
///                                    ###
///               %unsigned 1  btmfld                    
///                                    ###
///                                    * MPEG2/VC1: Top or Bottom field
///                                    ###
///               %unsigned 1  frmdct                    
///                                    ###
///                                    * MPEG2: Frame or field DCT in Sequence level
///                                    * whether FLD DCT enabled
///                                    ###
///               %unsigned 1  svhd                      
///                                    ###
///                                    * MPEG4: whether Short video header used,that may influence DC_pred and DC decode
///                                    * MPEG2: Mpeg1 coding flag
///                                    * vc1:   1: if (fraction >= ½),
///                                    * 0: else
///                                    * This is used for Table 57. B frame motion prediction type decode. (fraction is derived from table 40)
///                                    ###
///               %unsigned 1  qtype                     
///                                    ###
///                                    * MPEG4: Quantization Type 0:263, 1,mpeg
///                                    * MPEG2: q_scale_type
///                                    * vc1:       0 : uniform
///                                    * 1: non_uniform
///                                    ###
///               %unsigned 1  ivlc                      
///                                    ###
///                                    * MPEG2: intra_vlc_format
///                                    * vc1: 0: 1<= PQUANT <=7 or if VOPDQUANT is
///                                    * present and quantizer can vary in
///                                    * picture
///                                    * 1:   else
///                                    * refer to spec page 113, Table59 Escape Mode3
///                                    ###
///               %unsigned 1  sptialmv                  
///                                    ###
///                                    * MPEG2: concealment_motion_vectors
///                                    * MPEG4: quarter_sample of MV
///                                    * vc1:       half perl flag, derived from mvmode
///                                    ###
///               %unsigned 1  alscan                    
///                                    ###
///                                    * MPEG2: alternate_scan
///                                    * MPEG4: alternate_scan of interlacing picture
///                                    ###
///               %unsigned 1  ftfr                      
///                                    ###
///                                    * MPEG4: forward_top_field_reference
///                                    * MPEG2:full_pel_forward_vector
///                                    * VC1: forward_top_field_reference
///                                    ###
///               %unsigned 1  fbfr                      
///                                    ###
///                                    * MPEG4: forward_bottom_field_reference
///                                    * VC1: forward_bottom_field_reference
///                                    ###
///               %unsigned 1  btfr                      
///                                    ###
///                                    * MPEG4: backward_top_field_reference
///                                    * MPEG2:full_pel_backward_vector
///                                    * VC1: backward_top_field_reference
///                                    ###
///               %unsigned 1  bbfr                      
///                                    ###
///                                    * MPEG4: backward_bottom_field_reference
///                                    * VC1: backward_bottom_field_reference
///                                    ###
///               %unsigned 1  rawskip                   
///                                    ###
///                                    * VC1: P /B:skip
///                                    * I: conditional overlap
///                                    ###
///               %unsigned 1  rawmvtype                 
///                                    ###
///                                    * VC1: P:1 MV or 4 MV in MB level
///                                    * I: AC Prediction flag
///                                    * B:direct (FORWARDMB in interlace field B)
///                                    ###
///               %unsigned 1  rawfld                    
///                                    ###
///                                    * VC1: whether field coding enabled in frame
///                                    ###
///               %unsigned 1  TTMBF                     
///                                    ###
///                                    * vc1: whether TTMB occurs in MB layer syntax
///                                    ###
///               %unsigned 5  intrdcthr                 
///                                    ###
///                                    * MPEG4: intra_dc_threshold
///                                    ###
///               %unsigned 3  forcod                    
///                                    ###
///                                    * MPEG1,4: forward mv precision
///                                    ###
///               %unsigned 2  dcprcis                   
///                                    ###
///                                    * MPEG2: DC precision
///                                    * VC1: Transform type in frame level
///                                    ###
///               %unsigned 3  bckcod                    
///                                    ###
///                                    * MPEG1,4: backward mv precision
///                                    ###
///               %unsigned 1  topfst                    
///                                    ###
///                                    * MPEG2/4: top field first, used for MV calculation
///                                    ###
///               %unsigned 1  rounding                  
///                                    ###
///                                    * MPEG4: rounding control for MC
///                                    * VC1: Rounding control bits
///                                    ###
///               %unsigned 1  RVSD0                     
///     # 0x00004 MPG1                 
///               %unsigned 4  fcode_0i                  
///               %unsigned 4  fcode_1i                  
///               %unsigned 4  fcode_2i                  
///               %unsigned 4  fcode_3i                  
///                                    ###
///                                    * MPEG2:mv precision
///                                    * 0 forward horizontal
///                                    * 1 forward vertical
///                                    * 2 backward horizontal
///                                    * 3 backward vertical
///                                    ###
///               %unsigned 16 time_pp                   
///                                    ###
///                                    * MPEG4:time_pp (Calculate B distance)
///                                    * vc1: ScaleFactor, for direct B, derived from
///                                    * BFRACTION. So numerator,
///                                    * denominator, reciprocal need not be
///                                    * filled
///                                    ###
///     @ 0x00008 WMV                  (P)
///               %unsigned 3  cbptab                    
///                                    ###
///                                    * For cbp table selection: CBPTAB and
///                                    * ICBPTAB
///                                    ###
///               %unsigned 3  mvtab                     
///                                    ###
///                                    * For mv table selection: MVTAB or IMVTAB
///                                    ###
///               %unsigned 2  mvbptab2                  
///                                    ###
///                                    * For interlace frame or field 2MVBPTAB
///                                    ###
///               %unsigned 2  mvbptab4                  
///                                    ###
///                                    * For interlace frame or field 4MVBPTAB
///                                    * if (4MVSWITCH == 1)
///                                    ###
///               %unsigned 3  mbmodtab                  
///                                    ###
///                                    * MBMODETAB
///                                    ###
///               %unsigned 2  transac                   
///                                    ###
///                                    * For ac coefficient decoding: TRANSACFRM
///                                    * 0, 1, 2
///                                    ###
///               %unsigned 1  transdc                   
///                                    ###
///                                    * For dc decoding:   TRANSDCTAB
///                                    ###
///               %unsigned 2  transac2                  
///                                    ###
///                                    * For I picture luma ac: TRANSACFRM2
///                                    * 0, 1, 2
///                                    ###
///               %unsigned 5  pqidx                     
///                                    ###
///                                    * PQINDEX needed for table selection
///                                    ###
///               %unsigned 2  condover                  
///                                    ###
///                                    * For I/BI overlap smoothing:
///                                    * if OVERLAP = 0:     condover = 0b
///                                    * if OVERLAP = 1 && PQUANT > 8:
///                                    * condover = 10b
///                                    * if OVERLAP = 1 && PQUANT <= 8:
///                                    * condover = 11b
///                                    ###
///               %%        7          # Stuffing bits...
///     # 0x0000C WMV1                 
///               %unsigned 2  mvrange                   
///                                    ###
///                                    * VC1: mvrange 4 kinds of MV range for mv(X,Y)
///                                    ###
///               %unsigned 3  numerator                 
///                                    ###
///                                    * VC1: numerator value for B direct mode
///                                    ###
///               %unsigned 2  denominator               
///                                    ###
///                                    * VC1: denominator(5+Value) value for B Direct
///                                    ###
///               %unsigned 2  mvmode                    
///                                    ###
///                                    * VC1: mvmode 4 kinds of mv mode in pic level
///                                    * (Intensity not needed in MB level decoding)
///                                    * 0: 1-MV Half-pel bilinear
///                                    * 1: 1-MV
///                                    * 2: 1-MV Half-pel
///                                    * 3: Mixed-MV
///                                    ###
///               %unsigned 1  4mvSwitch                 
///                                    ###
///                                    * VC1: 4mvswitch only present in interlacing coded frame
///                                    ###
///               %unsigned 1  refDist                   
///                                    ###
///                                    * VC1: refdist only present in field picture for B direct
///                                    ###
///               %unsigned 1  refNum                    
///                                    ###
///                                    * VC1: refnum determine whether one field has 2 ref in P
///                                    ###
///               %unsigned 1  refFiled                  
///                                    ###
///                                    * VC1: reffiled determine which of 2 ref is used as ref in P
///                                    * <Repalced by btfr series above>
///                                    ###
///               %unsigned 1  exmvdx                    
///                                    ###
///                                    * VC1: exmvdx DMV extend x present flag
///                                    ###
///               %unsigned 1  exmvdy                    
///                                    ###
///                                    * VC1: exmvdy DMV extend y present flag
///                                    ###
///               %unsigned 1  fastUV                    
///                                    ###
///                                    * VC1: fastuv   fast UV mv calculation
///                                    ###
///               %unsigned 1  dQtype_0i                 
///               %unsigned 1  dQtype_1i                 
///               %unsigned 1  dQtype_2i                 
///               %unsigned 1  dQtype_3i                 
///                                    ###
///                                    * VC1: 4 bits De-Quantize type presenting for:
///                                    * - up, bottom,left,right edge
///                                    ###
///               %unsigned 1  dQFrm                     
///                                    ###
///                                    * 0: all MB use PQUANT
///                                    * 1: else
///                                    ###
///               %unsigned 1  dQProfile                 
///                                    ###
///                                    * 1: all Mbs can have their own QP
///                                    * 0: else
///                                    ###
///               %unsigned 1  halfQP                    
///                                    ###
///                                    * VC1: half qp value, when MB use Pquant<8
///                                    ###
///               %unsigned 1  dQbiLvl                   
///                                    ###
///                                    * VC1: dqbilvl, determine De-quantize range
///                                    ###
///               %unsigned 5  altQuant                  
///                                    ###
///                                    * VC1: altquant , alterlate quantization
///                                    * End of CtxMPGx
///                                    ###
///               %%        3          # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:     118b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CtxMPGx
#define h_CtxMPGx (){}

    #define     RA_CtxMPGx_MPG                                 0x0000

    #define     BA_CtxMPGx_MPG_frmcoding                       0x0000
    #define     B16CtxMPGx_MPG_frmcoding                       0x0000
    #define   LSb32CtxMPGx_MPG_frmcoding                          0
    #define   LSb16CtxMPGx_MPG_frmcoding                          0
    #define       bCtxMPGx_MPG_frmcoding                       1
    #define   MSK32CtxMPGx_MPG_frmcoding                          0x00000001

    #define     BA_CtxMPGx_MPG_btmfld                          0x0000
    #define     B16CtxMPGx_MPG_btmfld                          0x0000
    #define   LSb32CtxMPGx_MPG_btmfld                             1
    #define   LSb16CtxMPGx_MPG_btmfld                             1
    #define       bCtxMPGx_MPG_btmfld                          1
    #define   MSK32CtxMPGx_MPG_btmfld                             0x00000002

    #define     BA_CtxMPGx_MPG_frmdct                          0x0000
    #define     B16CtxMPGx_MPG_frmdct                          0x0000
    #define   LSb32CtxMPGx_MPG_frmdct                             2
    #define   LSb16CtxMPGx_MPG_frmdct                             2
    #define       bCtxMPGx_MPG_frmdct                          1
    #define   MSK32CtxMPGx_MPG_frmdct                             0x00000004

    #define     BA_CtxMPGx_MPG_svhd                            0x0000
    #define     B16CtxMPGx_MPG_svhd                            0x0000
    #define   LSb32CtxMPGx_MPG_svhd                               3
    #define   LSb16CtxMPGx_MPG_svhd                               3
    #define       bCtxMPGx_MPG_svhd                            1
    #define   MSK32CtxMPGx_MPG_svhd                               0x00000008

    #define     BA_CtxMPGx_MPG_qtype                           0x0000
    #define     B16CtxMPGx_MPG_qtype                           0x0000
    #define   LSb32CtxMPGx_MPG_qtype                              4
    #define   LSb16CtxMPGx_MPG_qtype                              4
    #define       bCtxMPGx_MPG_qtype                           1
    #define   MSK32CtxMPGx_MPG_qtype                              0x00000010

    #define     BA_CtxMPGx_MPG_ivlc                            0x0000
    #define     B16CtxMPGx_MPG_ivlc                            0x0000
    #define   LSb32CtxMPGx_MPG_ivlc                               5
    #define   LSb16CtxMPGx_MPG_ivlc                               5
    #define       bCtxMPGx_MPG_ivlc                            1
    #define   MSK32CtxMPGx_MPG_ivlc                               0x00000020

    #define     BA_CtxMPGx_MPG_sptialmv                        0x0000
    #define     B16CtxMPGx_MPG_sptialmv                        0x0000
    #define   LSb32CtxMPGx_MPG_sptialmv                           6
    #define   LSb16CtxMPGx_MPG_sptialmv                           6
    #define       bCtxMPGx_MPG_sptialmv                        1
    #define   MSK32CtxMPGx_MPG_sptialmv                           0x00000040

    #define     BA_CtxMPGx_MPG_alscan                          0x0000
    #define     B16CtxMPGx_MPG_alscan                          0x0000
    #define   LSb32CtxMPGx_MPG_alscan                             7
    #define   LSb16CtxMPGx_MPG_alscan                             7
    #define       bCtxMPGx_MPG_alscan                          1
    #define   MSK32CtxMPGx_MPG_alscan                             0x00000080

    #define     BA_CtxMPGx_MPG_ftfr                            0x0001
    #define     B16CtxMPGx_MPG_ftfr                            0x0000
    #define   LSb32CtxMPGx_MPG_ftfr                               8
    #define   LSb16CtxMPGx_MPG_ftfr                               8
    #define       bCtxMPGx_MPG_ftfr                            1
    #define   MSK32CtxMPGx_MPG_ftfr                               0x00000100

    #define     BA_CtxMPGx_MPG_fbfr                            0x0001
    #define     B16CtxMPGx_MPG_fbfr                            0x0000
    #define   LSb32CtxMPGx_MPG_fbfr                               9
    #define   LSb16CtxMPGx_MPG_fbfr                               9
    #define       bCtxMPGx_MPG_fbfr                            1
    #define   MSK32CtxMPGx_MPG_fbfr                               0x00000200

    #define     BA_CtxMPGx_MPG_btfr                            0x0001
    #define     B16CtxMPGx_MPG_btfr                            0x0000
    #define   LSb32CtxMPGx_MPG_btfr                               10
    #define   LSb16CtxMPGx_MPG_btfr                               10
    #define       bCtxMPGx_MPG_btfr                            1
    #define   MSK32CtxMPGx_MPG_btfr                               0x00000400

    #define     BA_CtxMPGx_MPG_bbfr                            0x0001
    #define     B16CtxMPGx_MPG_bbfr                            0x0000
    #define   LSb32CtxMPGx_MPG_bbfr                               11
    #define   LSb16CtxMPGx_MPG_bbfr                               11
    #define       bCtxMPGx_MPG_bbfr                            1
    #define   MSK32CtxMPGx_MPG_bbfr                               0x00000800

    #define     BA_CtxMPGx_MPG_rawskip                         0x0001
    #define     B16CtxMPGx_MPG_rawskip                         0x0000
    #define   LSb32CtxMPGx_MPG_rawskip                            12
    #define   LSb16CtxMPGx_MPG_rawskip                            12
    #define       bCtxMPGx_MPG_rawskip                         1
    #define   MSK32CtxMPGx_MPG_rawskip                            0x00001000

    #define     BA_CtxMPGx_MPG_rawmvtype                       0x0001
    #define     B16CtxMPGx_MPG_rawmvtype                       0x0000
    #define   LSb32CtxMPGx_MPG_rawmvtype                          13
    #define   LSb16CtxMPGx_MPG_rawmvtype                          13
    #define       bCtxMPGx_MPG_rawmvtype                       1
    #define   MSK32CtxMPGx_MPG_rawmvtype                          0x00002000

    #define     BA_CtxMPGx_MPG_rawfld                          0x0001
    #define     B16CtxMPGx_MPG_rawfld                          0x0000
    #define   LSb32CtxMPGx_MPG_rawfld                             14
    #define   LSb16CtxMPGx_MPG_rawfld                             14
    #define       bCtxMPGx_MPG_rawfld                          1
    #define   MSK32CtxMPGx_MPG_rawfld                             0x00004000

    #define     BA_CtxMPGx_MPG_TTMBF                           0x0001
    #define     B16CtxMPGx_MPG_TTMBF                           0x0000
    #define   LSb32CtxMPGx_MPG_TTMBF                              15
    #define   LSb16CtxMPGx_MPG_TTMBF                              15
    #define       bCtxMPGx_MPG_TTMBF                           1
    #define   MSK32CtxMPGx_MPG_TTMBF                              0x00008000

    #define     BA_CtxMPGx_MPG_intrdcthr                       0x0002
    #define     B16CtxMPGx_MPG_intrdcthr                       0x0002
    #define   LSb32CtxMPGx_MPG_intrdcthr                          16
    #define   LSb16CtxMPGx_MPG_intrdcthr                          0
    #define       bCtxMPGx_MPG_intrdcthr                       5
    #define   MSK32CtxMPGx_MPG_intrdcthr                          0x001F0000

    #define     BA_CtxMPGx_MPG_forcod                          0x0002
    #define     B16CtxMPGx_MPG_forcod                          0x0002
    #define   LSb32CtxMPGx_MPG_forcod                             21
    #define   LSb16CtxMPGx_MPG_forcod                             5
    #define       bCtxMPGx_MPG_forcod                          3
    #define   MSK32CtxMPGx_MPG_forcod                             0x00E00000

    #define     BA_CtxMPGx_MPG_dcprcis                         0x0003
    #define     B16CtxMPGx_MPG_dcprcis                         0x0002
    #define   LSb32CtxMPGx_MPG_dcprcis                            24
    #define   LSb16CtxMPGx_MPG_dcprcis                            8
    #define       bCtxMPGx_MPG_dcprcis                         2
    #define   MSK32CtxMPGx_MPG_dcprcis                            0x03000000

    #define     BA_CtxMPGx_MPG_bckcod                          0x0003
    #define     B16CtxMPGx_MPG_bckcod                          0x0002
    #define   LSb32CtxMPGx_MPG_bckcod                             26
    #define   LSb16CtxMPGx_MPG_bckcod                             10
    #define       bCtxMPGx_MPG_bckcod                          3
    #define   MSK32CtxMPGx_MPG_bckcod                             0x1C000000

    #define     BA_CtxMPGx_MPG_topfst                          0x0003
    #define     B16CtxMPGx_MPG_topfst                          0x0002
    #define   LSb32CtxMPGx_MPG_topfst                             29
    #define   LSb16CtxMPGx_MPG_topfst                             13
    #define       bCtxMPGx_MPG_topfst                          1
    #define   MSK32CtxMPGx_MPG_topfst                             0x20000000

    #define     BA_CtxMPGx_MPG_rounding                        0x0003
    #define     B16CtxMPGx_MPG_rounding                        0x0002
    #define   LSb32CtxMPGx_MPG_rounding                           30
    #define   LSb16CtxMPGx_MPG_rounding                           14
    #define       bCtxMPGx_MPG_rounding                        1
    #define   MSK32CtxMPGx_MPG_rounding                           0x40000000

    #define     BA_CtxMPGx_MPG_RVSD0                           0x0003
    #define     B16CtxMPGx_MPG_RVSD0                           0x0002
    #define   LSb32CtxMPGx_MPG_RVSD0                              31
    #define   LSb16CtxMPGx_MPG_RVSD0                              15
    #define       bCtxMPGx_MPG_RVSD0                           1
    #define   MSK32CtxMPGx_MPG_RVSD0                              0x80000000

    #define     RA_CtxMPGx_MPG1                                0x0004

    #define     BA_CtxMPGx_MPG_fcode_0i                        0x0004
    #define     B16CtxMPGx_MPG_fcode_0i                        0x0004
    #define   LSb32CtxMPGx_MPG_fcode_0i                           0
    #define   LSb16CtxMPGx_MPG_fcode_0i                           0
    #define       bCtxMPGx_MPG_fcode_0i                        4
    #define   MSK32CtxMPGx_MPG_fcode_0i                           0x0000000F

    #define     BA_CtxMPGx_MPG_fcode_1i                        0x0004
    #define     B16CtxMPGx_MPG_fcode_1i                        0x0004
    #define   LSb32CtxMPGx_MPG_fcode_1i                           4
    #define   LSb16CtxMPGx_MPG_fcode_1i                           4
    #define       bCtxMPGx_MPG_fcode_1i                        4
    #define   MSK32CtxMPGx_MPG_fcode_1i                           0x000000F0

    #define     BA_CtxMPGx_MPG_fcode_2i                        0x0005
    #define     B16CtxMPGx_MPG_fcode_2i                        0x0004
    #define   LSb32CtxMPGx_MPG_fcode_2i                           8
    #define   LSb16CtxMPGx_MPG_fcode_2i                           8
    #define       bCtxMPGx_MPG_fcode_2i                        4
    #define   MSK32CtxMPGx_MPG_fcode_2i                           0x00000F00

    #define     BA_CtxMPGx_MPG_fcode_3i                        0x0005
    #define     B16CtxMPGx_MPG_fcode_3i                        0x0004
    #define   LSb32CtxMPGx_MPG_fcode_3i                           12
    #define   LSb16CtxMPGx_MPG_fcode_3i                           12
    #define       bCtxMPGx_MPG_fcode_3i                        4
    #define   MSK32CtxMPGx_MPG_fcode_3i                           0x0000F000

    #define     BA_CtxMPGx_MPG_time_pp                         0x0006
    #define     B16CtxMPGx_MPG_time_pp                         0x0006
    #define   LSb32CtxMPGx_MPG_time_pp                            16
    #define   LSb16CtxMPGx_MPG_time_pp                            0
    #define       bCtxMPGx_MPG_time_pp                         16
    #define   MSK32CtxMPGx_MPG_time_pp                            0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_CtxMPGx_WMV                                 0x0008

    #define     BA_CtxMPGx_WMV_cbptab                          0x0008
    #define     B16CtxMPGx_WMV_cbptab                          0x0008
    #define   LSb32CtxMPGx_WMV_cbptab                             0
    #define   LSb16CtxMPGx_WMV_cbptab                             0
    #define       bCtxMPGx_WMV_cbptab                          3
    #define   MSK32CtxMPGx_WMV_cbptab                             0x00000007

    #define     BA_CtxMPGx_WMV_mvtab                           0x0008
    #define     B16CtxMPGx_WMV_mvtab                           0x0008
    #define   LSb32CtxMPGx_WMV_mvtab                              3
    #define   LSb16CtxMPGx_WMV_mvtab                              3
    #define       bCtxMPGx_WMV_mvtab                           3
    #define   MSK32CtxMPGx_WMV_mvtab                              0x00000038

    #define     BA_CtxMPGx_WMV_mvbptab2                        0x0008
    #define     B16CtxMPGx_WMV_mvbptab2                        0x0008
    #define   LSb32CtxMPGx_WMV_mvbptab2                           6
    #define   LSb16CtxMPGx_WMV_mvbptab2                           6
    #define       bCtxMPGx_WMV_mvbptab2                        2
    #define   MSK32CtxMPGx_WMV_mvbptab2                           0x000000C0

    #define     BA_CtxMPGx_WMV_mvbptab4                        0x0009
    #define     B16CtxMPGx_WMV_mvbptab4                        0x0008
    #define   LSb32CtxMPGx_WMV_mvbptab4                           8
    #define   LSb16CtxMPGx_WMV_mvbptab4                           8
    #define       bCtxMPGx_WMV_mvbptab4                        2
    #define   MSK32CtxMPGx_WMV_mvbptab4                           0x00000300

    #define     BA_CtxMPGx_WMV_mbmodtab                        0x0009
    #define     B16CtxMPGx_WMV_mbmodtab                        0x0008
    #define   LSb32CtxMPGx_WMV_mbmodtab                           10
    #define   LSb16CtxMPGx_WMV_mbmodtab                           10
    #define       bCtxMPGx_WMV_mbmodtab                        3
    #define   MSK32CtxMPGx_WMV_mbmodtab                           0x00001C00

    #define     BA_CtxMPGx_WMV_transac                         0x0009
    #define     B16CtxMPGx_WMV_transac                         0x0008
    #define   LSb32CtxMPGx_WMV_transac                            13
    #define   LSb16CtxMPGx_WMV_transac                            13
    #define       bCtxMPGx_WMV_transac                         2
    #define   MSK32CtxMPGx_WMV_transac                            0x00006000

    #define     BA_CtxMPGx_WMV_transdc                         0x0009
    #define     B16CtxMPGx_WMV_transdc                         0x0008
    #define   LSb32CtxMPGx_WMV_transdc                            15
    #define   LSb16CtxMPGx_WMV_transdc                            15
    #define       bCtxMPGx_WMV_transdc                         1
    #define   MSK32CtxMPGx_WMV_transdc                            0x00008000

    #define     BA_CtxMPGx_WMV_transac2                        0x000A
    #define     B16CtxMPGx_WMV_transac2                        0x000A
    #define   LSb32CtxMPGx_WMV_transac2                           16
    #define   LSb16CtxMPGx_WMV_transac2                           0
    #define       bCtxMPGx_WMV_transac2                        2
    #define   MSK32CtxMPGx_WMV_transac2                           0x00030000

    #define     BA_CtxMPGx_WMV_pqidx                           0x000A
    #define     B16CtxMPGx_WMV_pqidx                           0x000A
    #define   LSb32CtxMPGx_WMV_pqidx                              18
    #define   LSb16CtxMPGx_WMV_pqidx                              2
    #define       bCtxMPGx_WMV_pqidx                           5
    #define   MSK32CtxMPGx_WMV_pqidx                              0x007C0000

    #define     BA_CtxMPGx_WMV_condover                        0x000A
    #define     B16CtxMPGx_WMV_condover                        0x000A
    #define   LSb32CtxMPGx_WMV_condover                           23
    #define   LSb16CtxMPGx_WMV_condover                           7
    #define       bCtxMPGx_WMV_condover                        2
    #define   MSK32CtxMPGx_WMV_condover                           0x01800000

    #define     RA_CtxMPGx_WMV1                                0x000C

    #define     BA_CtxMPGx_WMV_mvrange                         0x000C
    #define     B16CtxMPGx_WMV_mvrange                         0x000C
    #define   LSb32CtxMPGx_WMV_mvrange                            0
    #define   LSb16CtxMPGx_WMV_mvrange                            0
    #define       bCtxMPGx_WMV_mvrange                         2
    #define   MSK32CtxMPGx_WMV_mvrange                            0x00000003

    #define     BA_CtxMPGx_WMV_numerator                       0x000C
    #define     B16CtxMPGx_WMV_numerator                       0x000C
    #define   LSb32CtxMPGx_WMV_numerator                          2
    #define   LSb16CtxMPGx_WMV_numerator                          2
    #define       bCtxMPGx_WMV_numerator                       3
    #define   MSK32CtxMPGx_WMV_numerator                          0x0000001C

    #define     BA_CtxMPGx_WMV_denominator                     0x000C
    #define     B16CtxMPGx_WMV_denominator                     0x000C
    #define   LSb32CtxMPGx_WMV_denominator                        5
    #define   LSb16CtxMPGx_WMV_denominator                        5
    #define       bCtxMPGx_WMV_denominator                     2
    #define   MSK32CtxMPGx_WMV_denominator                        0x00000060

    #define     BA_CtxMPGx_WMV_mvmode                          0x000C
    #define     B16CtxMPGx_WMV_mvmode                          0x000C
    #define   LSb32CtxMPGx_WMV_mvmode                             7
    #define   LSb16CtxMPGx_WMV_mvmode                             7
    #define       bCtxMPGx_WMV_mvmode                          2
    #define   MSK32CtxMPGx_WMV_mvmode                             0x00000180

    #define     BA_CtxMPGx_WMV_4mvSwitch                       0x000D
    #define     B16CtxMPGx_WMV_4mvSwitch                       0x000C
    #define   LSb32CtxMPGx_WMV_4mvSwitch                          9
    #define   LSb16CtxMPGx_WMV_4mvSwitch                          9
    #define       bCtxMPGx_WMV_4mvSwitch                       1
    #define   MSK32CtxMPGx_WMV_4mvSwitch                          0x00000200

    #define     BA_CtxMPGx_WMV_refDist                         0x000D
    #define     B16CtxMPGx_WMV_refDist                         0x000C
    #define   LSb32CtxMPGx_WMV_refDist                            10
    #define   LSb16CtxMPGx_WMV_refDist                            10
    #define       bCtxMPGx_WMV_refDist                         1
    #define   MSK32CtxMPGx_WMV_refDist                            0x00000400

    #define     BA_CtxMPGx_WMV_refNum                          0x000D
    #define     B16CtxMPGx_WMV_refNum                          0x000C
    #define   LSb32CtxMPGx_WMV_refNum                             11
    #define   LSb16CtxMPGx_WMV_refNum                             11
    #define       bCtxMPGx_WMV_refNum                          1
    #define   MSK32CtxMPGx_WMV_refNum                             0x00000800

    #define     BA_CtxMPGx_WMV_refFiled                        0x000D
    #define     B16CtxMPGx_WMV_refFiled                        0x000C
    #define   LSb32CtxMPGx_WMV_refFiled                           12
    #define   LSb16CtxMPGx_WMV_refFiled                           12
    #define       bCtxMPGx_WMV_refFiled                        1
    #define   MSK32CtxMPGx_WMV_refFiled                           0x00001000

    #define     BA_CtxMPGx_WMV_exmvdx                          0x000D
    #define     B16CtxMPGx_WMV_exmvdx                          0x000C
    #define   LSb32CtxMPGx_WMV_exmvdx                             13
    #define   LSb16CtxMPGx_WMV_exmvdx                             13
    #define       bCtxMPGx_WMV_exmvdx                          1
    #define   MSK32CtxMPGx_WMV_exmvdx                             0x00002000

    #define     BA_CtxMPGx_WMV_exmvdy                          0x000D
    #define     B16CtxMPGx_WMV_exmvdy                          0x000C
    #define   LSb32CtxMPGx_WMV_exmvdy                             14
    #define   LSb16CtxMPGx_WMV_exmvdy                             14
    #define       bCtxMPGx_WMV_exmvdy                          1
    #define   MSK32CtxMPGx_WMV_exmvdy                             0x00004000

    #define     BA_CtxMPGx_WMV_fastUV                          0x000D
    #define     B16CtxMPGx_WMV_fastUV                          0x000C
    #define   LSb32CtxMPGx_WMV_fastUV                             15
    #define   LSb16CtxMPGx_WMV_fastUV                             15
    #define       bCtxMPGx_WMV_fastUV                          1
    #define   MSK32CtxMPGx_WMV_fastUV                             0x00008000

    #define     BA_CtxMPGx_WMV_dQtype_0i                       0x000E
    #define     B16CtxMPGx_WMV_dQtype_0i                       0x000E
    #define   LSb32CtxMPGx_WMV_dQtype_0i                          16
    #define   LSb16CtxMPGx_WMV_dQtype_0i                          0
    #define       bCtxMPGx_WMV_dQtype_0i                       1
    #define   MSK32CtxMPGx_WMV_dQtype_0i                          0x00010000

    #define     BA_CtxMPGx_WMV_dQtype_1i                       0x000E
    #define     B16CtxMPGx_WMV_dQtype_1i                       0x000E
    #define   LSb32CtxMPGx_WMV_dQtype_1i                          17
    #define   LSb16CtxMPGx_WMV_dQtype_1i                          1
    #define       bCtxMPGx_WMV_dQtype_1i                       1
    #define   MSK32CtxMPGx_WMV_dQtype_1i                          0x00020000

    #define     BA_CtxMPGx_WMV_dQtype_2i                       0x000E
    #define     B16CtxMPGx_WMV_dQtype_2i                       0x000E
    #define   LSb32CtxMPGx_WMV_dQtype_2i                          18
    #define   LSb16CtxMPGx_WMV_dQtype_2i                          2
    #define       bCtxMPGx_WMV_dQtype_2i                       1
    #define   MSK32CtxMPGx_WMV_dQtype_2i                          0x00040000

    #define     BA_CtxMPGx_WMV_dQtype_3i                       0x000E
    #define     B16CtxMPGx_WMV_dQtype_3i                       0x000E
    #define   LSb32CtxMPGx_WMV_dQtype_3i                          19
    #define   LSb16CtxMPGx_WMV_dQtype_3i                          3
    #define       bCtxMPGx_WMV_dQtype_3i                       1
    #define   MSK32CtxMPGx_WMV_dQtype_3i                          0x00080000

    #define     BA_CtxMPGx_WMV_dQFrm                           0x000E
    #define     B16CtxMPGx_WMV_dQFrm                           0x000E
    #define   LSb32CtxMPGx_WMV_dQFrm                              20
    #define   LSb16CtxMPGx_WMV_dQFrm                              4
    #define       bCtxMPGx_WMV_dQFrm                           1
    #define   MSK32CtxMPGx_WMV_dQFrm                              0x00100000

    #define     BA_CtxMPGx_WMV_dQProfile                       0x000E
    #define     B16CtxMPGx_WMV_dQProfile                       0x000E
    #define   LSb32CtxMPGx_WMV_dQProfile                          21
    #define   LSb16CtxMPGx_WMV_dQProfile                          5
    #define       bCtxMPGx_WMV_dQProfile                       1
    #define   MSK32CtxMPGx_WMV_dQProfile                          0x00200000

    #define     BA_CtxMPGx_WMV_halfQP                          0x000E
    #define     B16CtxMPGx_WMV_halfQP                          0x000E
    #define   LSb32CtxMPGx_WMV_halfQP                             22
    #define   LSb16CtxMPGx_WMV_halfQP                             6
    #define       bCtxMPGx_WMV_halfQP                          1
    #define   MSK32CtxMPGx_WMV_halfQP                             0x00400000

    #define     BA_CtxMPGx_WMV_dQbiLvl                         0x000E
    #define     B16CtxMPGx_WMV_dQbiLvl                         0x000E
    #define   LSb32CtxMPGx_WMV_dQbiLvl                            23
    #define   LSb16CtxMPGx_WMV_dQbiLvl                            7
    #define       bCtxMPGx_WMV_dQbiLvl                         1
    #define   MSK32CtxMPGx_WMV_dQbiLvl                            0x00800000

    #define     BA_CtxMPGx_WMV_altQuant                        0x000F
    #define     B16CtxMPGx_WMV_altQuant                        0x000E
    #define   LSb32CtxMPGx_WMV_altQuant                           24
    #define   LSb16CtxMPGx_WMV_altQuant                           8
    #define       bCtxMPGx_WMV_altQuant                        5
    #define   MSK32CtxMPGx_WMV_altQuant                           0x1F000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CtxMPGx {
    ///////////////////////////////////////////////////////////
    #define   GET32CtxMPGx_MPG_frmcoding(r32)                  _BFGET_(r32, 0, 0)
    #define   SET32CtxMPGx_MPG_frmcoding(r32,v)                _BFSET_(r32, 0, 0,v)
    #define   GET16CtxMPGx_MPG_frmcoding(r16)                  _BFGET_(r16, 0, 0)
    #define   SET16CtxMPGx_MPG_frmcoding(r16,v)                _BFSET_(r16, 0, 0,v)

    #define   GET32CtxMPGx_MPG_btmfld(r32)                     _BFGET_(r32, 1, 1)
    #define   SET32CtxMPGx_MPG_btmfld(r32,v)                   _BFSET_(r32, 1, 1,v)
    #define   GET16CtxMPGx_MPG_btmfld(r16)                     _BFGET_(r16, 1, 1)
    #define   SET16CtxMPGx_MPG_btmfld(r16,v)                   _BFSET_(r16, 1, 1,v)

    #define   GET32CtxMPGx_MPG_frmdct(r32)                     _BFGET_(r32, 2, 2)
    #define   SET32CtxMPGx_MPG_frmdct(r32,v)                   _BFSET_(r32, 2, 2,v)
    #define   GET16CtxMPGx_MPG_frmdct(r16)                     _BFGET_(r16, 2, 2)
    #define   SET16CtxMPGx_MPG_frmdct(r16,v)                   _BFSET_(r16, 2, 2,v)

    #define   GET32CtxMPGx_MPG_svhd(r32)                       _BFGET_(r32, 3, 3)
    #define   SET32CtxMPGx_MPG_svhd(r32,v)                     _BFSET_(r32, 3, 3,v)
    #define   GET16CtxMPGx_MPG_svhd(r16)                       _BFGET_(r16, 3, 3)
    #define   SET16CtxMPGx_MPG_svhd(r16,v)                     _BFSET_(r16, 3, 3,v)

    #define   GET32CtxMPGx_MPG_qtype(r32)                      _BFGET_(r32, 4, 4)
    #define   SET32CtxMPGx_MPG_qtype(r32,v)                    _BFSET_(r32, 4, 4,v)
    #define   GET16CtxMPGx_MPG_qtype(r16)                      _BFGET_(r16, 4, 4)
    #define   SET16CtxMPGx_MPG_qtype(r16,v)                    _BFSET_(r16, 4, 4,v)

    #define   GET32CtxMPGx_MPG_ivlc(r32)                       _BFGET_(r32, 5, 5)
    #define   SET32CtxMPGx_MPG_ivlc(r32,v)                     _BFSET_(r32, 5, 5,v)
    #define   GET16CtxMPGx_MPG_ivlc(r16)                       _BFGET_(r16, 5, 5)
    #define   SET16CtxMPGx_MPG_ivlc(r16,v)                     _BFSET_(r16, 5, 5,v)

    #define   GET32CtxMPGx_MPG_sptialmv(r32)                   _BFGET_(r32, 6, 6)
    #define   SET32CtxMPGx_MPG_sptialmv(r32,v)                 _BFSET_(r32, 6, 6,v)
    #define   GET16CtxMPGx_MPG_sptialmv(r16)                   _BFGET_(r16, 6, 6)
    #define   SET16CtxMPGx_MPG_sptialmv(r16,v)                 _BFSET_(r16, 6, 6,v)

    #define   GET32CtxMPGx_MPG_alscan(r32)                     _BFGET_(r32, 7, 7)
    #define   SET32CtxMPGx_MPG_alscan(r32,v)                   _BFSET_(r32, 7, 7,v)
    #define   GET16CtxMPGx_MPG_alscan(r16)                     _BFGET_(r16, 7, 7)
    #define   SET16CtxMPGx_MPG_alscan(r16,v)                   _BFSET_(r16, 7, 7,v)

    #define   GET32CtxMPGx_MPG_ftfr(r32)                       _BFGET_(r32, 8, 8)
    #define   SET32CtxMPGx_MPG_ftfr(r32,v)                     _BFSET_(r32, 8, 8,v)
    #define   GET16CtxMPGx_MPG_ftfr(r16)                       _BFGET_(r16, 8, 8)
    #define   SET16CtxMPGx_MPG_ftfr(r16,v)                     _BFSET_(r16, 8, 8,v)

    #define   GET32CtxMPGx_MPG_fbfr(r32)                       _BFGET_(r32, 9, 9)
    #define   SET32CtxMPGx_MPG_fbfr(r32,v)                     _BFSET_(r32, 9, 9,v)
    #define   GET16CtxMPGx_MPG_fbfr(r16)                       _BFGET_(r16, 9, 9)
    #define   SET16CtxMPGx_MPG_fbfr(r16,v)                     _BFSET_(r16, 9, 9,v)

    #define   GET32CtxMPGx_MPG_btfr(r32)                       _BFGET_(r32,10,10)
    #define   SET32CtxMPGx_MPG_btfr(r32,v)                     _BFSET_(r32,10,10,v)
    #define   GET16CtxMPGx_MPG_btfr(r16)                       _BFGET_(r16,10,10)
    #define   SET16CtxMPGx_MPG_btfr(r16,v)                     _BFSET_(r16,10,10,v)

    #define   GET32CtxMPGx_MPG_bbfr(r32)                       _BFGET_(r32,11,11)
    #define   SET32CtxMPGx_MPG_bbfr(r32,v)                     _BFSET_(r32,11,11,v)
    #define   GET16CtxMPGx_MPG_bbfr(r16)                       _BFGET_(r16,11,11)
    #define   SET16CtxMPGx_MPG_bbfr(r16,v)                     _BFSET_(r16,11,11,v)

    #define   GET32CtxMPGx_MPG_rawskip(r32)                    _BFGET_(r32,12,12)
    #define   SET32CtxMPGx_MPG_rawskip(r32,v)                  _BFSET_(r32,12,12,v)
    #define   GET16CtxMPGx_MPG_rawskip(r16)                    _BFGET_(r16,12,12)
    #define   SET16CtxMPGx_MPG_rawskip(r16,v)                  _BFSET_(r16,12,12,v)

    #define   GET32CtxMPGx_MPG_rawmvtype(r32)                  _BFGET_(r32,13,13)
    #define   SET32CtxMPGx_MPG_rawmvtype(r32,v)                _BFSET_(r32,13,13,v)
    #define   GET16CtxMPGx_MPG_rawmvtype(r16)                  _BFGET_(r16,13,13)
    #define   SET16CtxMPGx_MPG_rawmvtype(r16,v)                _BFSET_(r16,13,13,v)

    #define   GET32CtxMPGx_MPG_rawfld(r32)                     _BFGET_(r32,14,14)
    #define   SET32CtxMPGx_MPG_rawfld(r32,v)                   _BFSET_(r32,14,14,v)
    #define   GET16CtxMPGx_MPG_rawfld(r16)                     _BFGET_(r16,14,14)
    #define   SET16CtxMPGx_MPG_rawfld(r16,v)                   _BFSET_(r16,14,14,v)

    #define   GET32CtxMPGx_MPG_TTMBF(r32)                      _BFGET_(r32,15,15)
    #define   SET32CtxMPGx_MPG_TTMBF(r32,v)                    _BFSET_(r32,15,15,v)
    #define   GET16CtxMPGx_MPG_TTMBF(r16)                      _BFGET_(r16,15,15)
    #define   SET16CtxMPGx_MPG_TTMBF(r16,v)                    _BFSET_(r16,15,15,v)

    #define   GET32CtxMPGx_MPG_intrdcthr(r32)                  _BFGET_(r32,20,16)
    #define   SET32CtxMPGx_MPG_intrdcthr(r32,v)                _BFSET_(r32,20,16,v)
    #define   GET16CtxMPGx_MPG_intrdcthr(r16)                  _BFGET_(r16, 4, 0)
    #define   SET16CtxMPGx_MPG_intrdcthr(r16,v)                _BFSET_(r16, 4, 0,v)

    #define   GET32CtxMPGx_MPG_forcod(r32)                     _BFGET_(r32,23,21)
    #define   SET32CtxMPGx_MPG_forcod(r32,v)                   _BFSET_(r32,23,21,v)
    #define   GET16CtxMPGx_MPG_forcod(r16)                     _BFGET_(r16, 7, 5)
    #define   SET16CtxMPGx_MPG_forcod(r16,v)                   _BFSET_(r16, 7, 5,v)

    #define   GET32CtxMPGx_MPG_dcprcis(r32)                    _BFGET_(r32,25,24)
    #define   SET32CtxMPGx_MPG_dcprcis(r32,v)                  _BFSET_(r32,25,24,v)
    #define   GET16CtxMPGx_MPG_dcprcis(r16)                    _BFGET_(r16, 9, 8)
    #define   SET16CtxMPGx_MPG_dcprcis(r16,v)                  _BFSET_(r16, 9, 8,v)

    #define   GET32CtxMPGx_MPG_bckcod(r32)                     _BFGET_(r32,28,26)
    #define   SET32CtxMPGx_MPG_bckcod(r32,v)                   _BFSET_(r32,28,26,v)
    #define   GET16CtxMPGx_MPG_bckcod(r16)                     _BFGET_(r16,12,10)
    #define   SET16CtxMPGx_MPG_bckcod(r16,v)                   _BFSET_(r16,12,10,v)

    #define   GET32CtxMPGx_MPG_topfst(r32)                     _BFGET_(r32,29,29)
    #define   SET32CtxMPGx_MPG_topfst(r32,v)                   _BFSET_(r32,29,29,v)
    #define   GET16CtxMPGx_MPG_topfst(r16)                     _BFGET_(r16,13,13)
    #define   SET16CtxMPGx_MPG_topfst(r16,v)                   _BFSET_(r16,13,13,v)

    #define   GET32CtxMPGx_MPG_rounding(r32)                   _BFGET_(r32,30,30)
    #define   SET32CtxMPGx_MPG_rounding(r32,v)                 _BFSET_(r32,30,30,v)
    #define   GET16CtxMPGx_MPG_rounding(r16)                   _BFGET_(r16,14,14)
    #define   SET16CtxMPGx_MPG_rounding(r16,v)                 _BFSET_(r16,14,14,v)

    #define   GET32CtxMPGx_MPG_RVSD0(r32)                      _BFGET_(r32,31,31)
    #define   SET32CtxMPGx_MPG_RVSD0(r32,v)                    _BFSET_(r32,31,31,v)
    #define   GET16CtxMPGx_MPG_RVSD0(r16)                      _BFGET_(r16,15,15)
    #define   SET16CtxMPGx_MPG_RVSD0(r16,v)                    _BFSET_(r16,15,15,v)

    #define     w32CtxMPGx_MPG                                 {\
            UNSG32 uMPG_frmcoding                              :  1;\
            UNSG32 uMPG_btmfld                                 :  1;\
            UNSG32 uMPG_frmdct                                 :  1;\
            UNSG32 uMPG_svhd                                   :  1;\
            UNSG32 uMPG_qtype                                  :  1;\
            UNSG32 uMPG_ivlc                                   :  1;\
            UNSG32 uMPG_sptialmv                               :  1;\
            UNSG32 uMPG_alscan                                 :  1;\
            UNSG32 uMPG_ftfr                                   :  1;\
            UNSG32 uMPG_fbfr                                   :  1;\
            UNSG32 uMPG_btfr                                   :  1;\
            UNSG32 uMPG_bbfr                                   :  1;\
            UNSG32 uMPG_rawskip                                :  1;\
            UNSG32 uMPG_rawmvtype                              :  1;\
            UNSG32 uMPG_rawfld                                 :  1;\
            UNSG32 uMPG_TTMBF                                  :  1;\
            UNSG32 uMPG_intrdcthr                              :  5;\
            UNSG32 uMPG_forcod                                 :  3;\
            UNSG32 uMPG_dcprcis                                :  2;\
            UNSG32 uMPG_bckcod                                 :  3;\
            UNSG32 uMPG_topfst                                 :  1;\
            UNSG32 uMPG_rounding                               :  1;\
            UNSG32 uMPG_RVSD0                                  :  1;\
          }
    union { UNSG32 u32CtxMPGx_MPG;
            struct w32CtxMPGx_MPG;
          };
    #define   GET32CtxMPGx_MPG_fcode_0i(r32)                   _BFGET_(r32, 3, 0)
    #define   SET32CtxMPGx_MPG_fcode_0i(r32,v)                 _BFSET_(r32, 3, 0,v)
    #define   GET16CtxMPGx_MPG_fcode_0i(r16)                   _BFGET_(r16, 3, 0)
    #define   SET16CtxMPGx_MPG_fcode_0i(r16,v)                 _BFSET_(r16, 3, 0,v)

    #define   GET32CtxMPGx_MPG_fcode_1i(r32)                   _BFGET_(r32, 7, 4)
    #define   SET32CtxMPGx_MPG_fcode_1i(r32,v)                 _BFSET_(r32, 7, 4,v)
    #define   GET16CtxMPGx_MPG_fcode_1i(r16)                   _BFGET_(r16, 7, 4)
    #define   SET16CtxMPGx_MPG_fcode_1i(r16,v)                 _BFSET_(r16, 7, 4,v)

    #define   GET32CtxMPGx_MPG_fcode_2i(r32)                   _BFGET_(r32,11, 8)
    #define   SET32CtxMPGx_MPG_fcode_2i(r32,v)                 _BFSET_(r32,11, 8,v)
    #define   GET16CtxMPGx_MPG_fcode_2i(r16)                   _BFGET_(r16,11, 8)
    #define   SET16CtxMPGx_MPG_fcode_2i(r16,v)                 _BFSET_(r16,11, 8,v)

    #define   GET32CtxMPGx_MPG_fcode_3i(r32)                   _BFGET_(r32,15,12)
    #define   SET32CtxMPGx_MPG_fcode_3i(r32,v)                 _BFSET_(r32,15,12,v)
    #define   GET16CtxMPGx_MPG_fcode_3i(r16)                   _BFGET_(r16,15,12)
    #define   SET16CtxMPGx_MPG_fcode_3i(r16,v)                 _BFSET_(r16,15,12,v)

    #define   GET32CtxMPGx_MPG_time_pp(r32)                    _BFGET_(r32,31,16)
    #define   SET32CtxMPGx_MPG_time_pp(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16CtxMPGx_MPG_time_pp(r16)                    _BFGET_(r16,15, 0)
    #define   SET16CtxMPGx_MPG_time_pp(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32CtxMPGx_MPG1                                {\
            UNSG32 uMPG_fcode_0i                               :  4;\
            UNSG32 uMPG_fcode_1i                               :  4;\
            UNSG32 uMPG_fcode_2i                               :  4;\
            UNSG32 uMPG_fcode_3i                               :  4;\
            UNSG32 uMPG_time_pp                                : 16;\
          }
    union { UNSG32 u32CtxMPGx_MPG1;
            struct w32CtxMPGx_MPG1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxMPGx_WMV_cbptab(r32)                     _BFGET_(r32, 2, 0)
    #define   SET32CtxMPGx_WMV_cbptab(r32,v)                   _BFSET_(r32, 2, 0,v)
    #define   GET16CtxMPGx_WMV_cbptab(r16)                     _BFGET_(r16, 2, 0)
    #define   SET16CtxMPGx_WMV_cbptab(r16,v)                   _BFSET_(r16, 2, 0,v)

    #define   GET32CtxMPGx_WMV_mvtab(r32)                      _BFGET_(r32, 5, 3)
    #define   SET32CtxMPGx_WMV_mvtab(r32,v)                    _BFSET_(r32, 5, 3,v)
    #define   GET16CtxMPGx_WMV_mvtab(r16)                      _BFGET_(r16, 5, 3)
    #define   SET16CtxMPGx_WMV_mvtab(r16,v)                    _BFSET_(r16, 5, 3,v)

    #define   GET32CtxMPGx_WMV_mvbptab2(r32)                   _BFGET_(r32, 7, 6)
    #define   SET32CtxMPGx_WMV_mvbptab2(r32,v)                 _BFSET_(r32, 7, 6,v)
    #define   GET16CtxMPGx_WMV_mvbptab2(r16)                   _BFGET_(r16, 7, 6)
    #define   SET16CtxMPGx_WMV_mvbptab2(r16,v)                 _BFSET_(r16, 7, 6,v)

    #define   GET32CtxMPGx_WMV_mvbptab4(r32)                   _BFGET_(r32, 9, 8)
    #define   SET32CtxMPGx_WMV_mvbptab4(r32,v)                 _BFSET_(r32, 9, 8,v)
    #define   GET16CtxMPGx_WMV_mvbptab4(r16)                   _BFGET_(r16, 9, 8)
    #define   SET16CtxMPGx_WMV_mvbptab4(r16,v)                 _BFSET_(r16, 9, 8,v)

    #define   GET32CtxMPGx_WMV_mbmodtab(r32)                   _BFGET_(r32,12,10)
    #define   SET32CtxMPGx_WMV_mbmodtab(r32,v)                 _BFSET_(r32,12,10,v)
    #define   GET16CtxMPGx_WMV_mbmodtab(r16)                   _BFGET_(r16,12,10)
    #define   SET16CtxMPGx_WMV_mbmodtab(r16,v)                 _BFSET_(r16,12,10,v)

    #define   GET32CtxMPGx_WMV_transac(r32)                    _BFGET_(r32,14,13)
    #define   SET32CtxMPGx_WMV_transac(r32,v)                  _BFSET_(r32,14,13,v)
    #define   GET16CtxMPGx_WMV_transac(r16)                    _BFGET_(r16,14,13)
    #define   SET16CtxMPGx_WMV_transac(r16,v)                  _BFSET_(r16,14,13,v)

    #define   GET32CtxMPGx_WMV_transdc(r32)                    _BFGET_(r32,15,15)
    #define   SET32CtxMPGx_WMV_transdc(r32,v)                  _BFSET_(r32,15,15,v)
    #define   GET16CtxMPGx_WMV_transdc(r16)                    _BFGET_(r16,15,15)
    #define   SET16CtxMPGx_WMV_transdc(r16,v)                  _BFSET_(r16,15,15,v)

    #define   GET32CtxMPGx_WMV_transac2(r32)                   _BFGET_(r32,17,16)
    #define   SET32CtxMPGx_WMV_transac2(r32,v)                 _BFSET_(r32,17,16,v)
    #define   GET16CtxMPGx_WMV_transac2(r16)                   _BFGET_(r16, 1, 0)
    #define   SET16CtxMPGx_WMV_transac2(r16,v)                 _BFSET_(r16, 1, 0,v)

    #define   GET32CtxMPGx_WMV_pqidx(r32)                      _BFGET_(r32,22,18)
    #define   SET32CtxMPGx_WMV_pqidx(r32,v)                    _BFSET_(r32,22,18,v)
    #define   GET16CtxMPGx_WMV_pqidx(r16)                      _BFGET_(r16, 6, 2)
    #define   SET16CtxMPGx_WMV_pqidx(r16,v)                    _BFSET_(r16, 6, 2,v)

    #define   GET32CtxMPGx_WMV_condover(r32)                   _BFGET_(r32,24,23)
    #define   SET32CtxMPGx_WMV_condover(r32,v)                 _BFSET_(r32,24,23,v)
    #define   GET16CtxMPGx_WMV_condover(r16)                   _BFGET_(r16, 8, 7)
    #define   SET16CtxMPGx_WMV_condover(r16,v)                 _BFSET_(r16, 8, 7,v)

    #define     w32CtxMPGx_WMV                                 {\
            UNSG32 uWMV_cbptab                                 :  3;\
            UNSG32 uWMV_mvtab                                  :  3;\
            UNSG32 uWMV_mvbptab2                               :  2;\
            UNSG32 uWMV_mvbptab4                               :  2;\
            UNSG32 uWMV_mbmodtab                               :  3;\
            UNSG32 uWMV_transac                                :  2;\
            UNSG32 uWMV_transdc                                :  1;\
            UNSG32 uWMV_transac2                               :  2;\
            UNSG32 uWMV_pqidx                                  :  5;\
            UNSG32 uWMV_condover                               :  2;\
            UNSG32 RSVDx8_b25                                  :  7;\
          }
    union { UNSG32 u32CtxMPGx_WMV;
            struct w32CtxMPGx_WMV;
          };
    #define   GET32CtxMPGx_WMV_mvrange(r32)                    _BFGET_(r32, 1, 0)
    #define   SET32CtxMPGx_WMV_mvrange(r32,v)                  _BFSET_(r32, 1, 0,v)
    #define   GET16CtxMPGx_WMV_mvrange(r16)                    _BFGET_(r16, 1, 0)
    #define   SET16CtxMPGx_WMV_mvrange(r16,v)                  _BFSET_(r16, 1, 0,v)

    #define   GET32CtxMPGx_WMV_numerator(r32)                  _BFGET_(r32, 4, 2)
    #define   SET32CtxMPGx_WMV_numerator(r32,v)                _BFSET_(r32, 4, 2,v)
    #define   GET16CtxMPGx_WMV_numerator(r16)                  _BFGET_(r16, 4, 2)
    #define   SET16CtxMPGx_WMV_numerator(r16,v)                _BFSET_(r16, 4, 2,v)

    #define   GET32CtxMPGx_WMV_denominator(r32)                _BFGET_(r32, 6, 5)
    #define   SET32CtxMPGx_WMV_denominator(r32,v)              _BFSET_(r32, 6, 5,v)
    #define   GET16CtxMPGx_WMV_denominator(r16)                _BFGET_(r16, 6, 5)
    #define   SET16CtxMPGx_WMV_denominator(r16,v)              _BFSET_(r16, 6, 5,v)

    #define   GET32CtxMPGx_WMV_mvmode(r32)                     _BFGET_(r32, 8, 7)
    #define   SET32CtxMPGx_WMV_mvmode(r32,v)                   _BFSET_(r32, 8, 7,v)
    #define   GET16CtxMPGx_WMV_mvmode(r16)                     _BFGET_(r16, 8, 7)
    #define   SET16CtxMPGx_WMV_mvmode(r16,v)                   _BFSET_(r16, 8, 7,v)

    #define   GET32CtxMPGx_WMV_4mvSwitch(r32)                  _BFGET_(r32, 9, 9)
    #define   SET32CtxMPGx_WMV_4mvSwitch(r32,v)                _BFSET_(r32, 9, 9,v)
    #define   GET16CtxMPGx_WMV_4mvSwitch(r16)                  _BFGET_(r16, 9, 9)
    #define   SET16CtxMPGx_WMV_4mvSwitch(r16,v)                _BFSET_(r16, 9, 9,v)

    #define   GET32CtxMPGx_WMV_refDist(r32)                    _BFGET_(r32,10,10)
    #define   SET32CtxMPGx_WMV_refDist(r32,v)                  _BFSET_(r32,10,10,v)
    #define   GET16CtxMPGx_WMV_refDist(r16)                    _BFGET_(r16,10,10)
    #define   SET16CtxMPGx_WMV_refDist(r16,v)                  _BFSET_(r16,10,10,v)

    #define   GET32CtxMPGx_WMV_refNum(r32)                     _BFGET_(r32,11,11)
    #define   SET32CtxMPGx_WMV_refNum(r32,v)                   _BFSET_(r32,11,11,v)
    #define   GET16CtxMPGx_WMV_refNum(r16)                     _BFGET_(r16,11,11)
    #define   SET16CtxMPGx_WMV_refNum(r16,v)                   _BFSET_(r16,11,11,v)

    #define   GET32CtxMPGx_WMV_refFiled(r32)                   _BFGET_(r32,12,12)
    #define   SET32CtxMPGx_WMV_refFiled(r32,v)                 _BFSET_(r32,12,12,v)
    #define   GET16CtxMPGx_WMV_refFiled(r16)                   _BFGET_(r16,12,12)
    #define   SET16CtxMPGx_WMV_refFiled(r16,v)                 _BFSET_(r16,12,12,v)

    #define   GET32CtxMPGx_WMV_exmvdx(r32)                     _BFGET_(r32,13,13)
    #define   SET32CtxMPGx_WMV_exmvdx(r32,v)                   _BFSET_(r32,13,13,v)
    #define   GET16CtxMPGx_WMV_exmvdx(r16)                     _BFGET_(r16,13,13)
    #define   SET16CtxMPGx_WMV_exmvdx(r16,v)                   _BFSET_(r16,13,13,v)

    #define   GET32CtxMPGx_WMV_exmvdy(r32)                     _BFGET_(r32,14,14)
    #define   SET32CtxMPGx_WMV_exmvdy(r32,v)                   _BFSET_(r32,14,14,v)
    #define   GET16CtxMPGx_WMV_exmvdy(r16)                     _BFGET_(r16,14,14)
    #define   SET16CtxMPGx_WMV_exmvdy(r16,v)                   _BFSET_(r16,14,14,v)

    #define   GET32CtxMPGx_WMV_fastUV(r32)                     _BFGET_(r32,15,15)
    #define   SET32CtxMPGx_WMV_fastUV(r32,v)                   _BFSET_(r32,15,15,v)
    #define   GET16CtxMPGx_WMV_fastUV(r16)                     _BFGET_(r16,15,15)
    #define   SET16CtxMPGx_WMV_fastUV(r16,v)                   _BFSET_(r16,15,15,v)

    #define   GET32CtxMPGx_WMV_dQtype_0i(r32)                  _BFGET_(r32,16,16)
    #define   SET32CtxMPGx_WMV_dQtype_0i(r32,v)                _BFSET_(r32,16,16,v)
    #define   GET16CtxMPGx_WMV_dQtype_0i(r16)                  _BFGET_(r16, 0, 0)
    #define   SET16CtxMPGx_WMV_dQtype_0i(r16,v)                _BFSET_(r16, 0, 0,v)

    #define   GET32CtxMPGx_WMV_dQtype_1i(r32)                  _BFGET_(r32,17,17)
    #define   SET32CtxMPGx_WMV_dQtype_1i(r32,v)                _BFSET_(r32,17,17,v)
    #define   GET16CtxMPGx_WMV_dQtype_1i(r16)                  _BFGET_(r16, 1, 1)
    #define   SET16CtxMPGx_WMV_dQtype_1i(r16,v)                _BFSET_(r16, 1, 1,v)

    #define   GET32CtxMPGx_WMV_dQtype_2i(r32)                  _BFGET_(r32,18,18)
    #define   SET32CtxMPGx_WMV_dQtype_2i(r32,v)                _BFSET_(r32,18,18,v)
    #define   GET16CtxMPGx_WMV_dQtype_2i(r16)                  _BFGET_(r16, 2, 2)
    #define   SET16CtxMPGx_WMV_dQtype_2i(r16,v)                _BFSET_(r16, 2, 2,v)

    #define   GET32CtxMPGx_WMV_dQtype_3i(r32)                  _BFGET_(r32,19,19)
    #define   SET32CtxMPGx_WMV_dQtype_3i(r32,v)                _BFSET_(r32,19,19,v)
    #define   GET16CtxMPGx_WMV_dQtype_3i(r16)                  _BFGET_(r16, 3, 3)
    #define   SET16CtxMPGx_WMV_dQtype_3i(r16,v)                _BFSET_(r16, 3, 3,v)

    #define   GET32CtxMPGx_WMV_dQFrm(r32)                      _BFGET_(r32,20,20)
    #define   SET32CtxMPGx_WMV_dQFrm(r32,v)                    _BFSET_(r32,20,20,v)
    #define   GET16CtxMPGx_WMV_dQFrm(r16)                      _BFGET_(r16, 4, 4)
    #define   SET16CtxMPGx_WMV_dQFrm(r16,v)                    _BFSET_(r16, 4, 4,v)

    #define   GET32CtxMPGx_WMV_dQProfile(r32)                  _BFGET_(r32,21,21)
    #define   SET32CtxMPGx_WMV_dQProfile(r32,v)                _BFSET_(r32,21,21,v)
    #define   GET16CtxMPGx_WMV_dQProfile(r16)                  _BFGET_(r16, 5, 5)
    #define   SET16CtxMPGx_WMV_dQProfile(r16,v)                _BFSET_(r16, 5, 5,v)

    #define   GET32CtxMPGx_WMV_halfQP(r32)                     _BFGET_(r32,22,22)
    #define   SET32CtxMPGx_WMV_halfQP(r32,v)                   _BFSET_(r32,22,22,v)
    #define   GET16CtxMPGx_WMV_halfQP(r16)                     _BFGET_(r16, 6, 6)
    #define   SET16CtxMPGx_WMV_halfQP(r16,v)                   _BFSET_(r16, 6, 6,v)

    #define   GET32CtxMPGx_WMV_dQbiLvl(r32)                    _BFGET_(r32,23,23)
    #define   SET32CtxMPGx_WMV_dQbiLvl(r32,v)                  _BFSET_(r32,23,23,v)
    #define   GET16CtxMPGx_WMV_dQbiLvl(r16)                    _BFGET_(r16, 7, 7)
    #define   SET16CtxMPGx_WMV_dQbiLvl(r16,v)                  _BFSET_(r16, 7, 7,v)

    #define   GET32CtxMPGx_WMV_altQuant(r32)                   _BFGET_(r32,28,24)
    #define   SET32CtxMPGx_WMV_altQuant(r32,v)                 _BFSET_(r32,28,24,v)
    #define   GET16CtxMPGx_WMV_altQuant(r16)                   _BFGET_(r16,12, 8)
    #define   SET16CtxMPGx_WMV_altQuant(r16,v)                 _BFSET_(r16,12, 8,v)

    #define     w32CtxMPGx_WMV1                                {\
            UNSG32 uWMV_mvrange                                :  2;\
            UNSG32 uWMV_numerator                              :  3;\
            UNSG32 uWMV_denominator                            :  2;\
            UNSG32 uWMV_mvmode                                 :  2;\
            UNSG32 uWMV_4mvSwitch                              :  1;\
            UNSG32 uWMV_refDist                                :  1;\
            UNSG32 uWMV_refNum                                 :  1;\
            UNSG32 uWMV_refFiled                               :  1;\
            UNSG32 uWMV_exmvdx                                 :  1;\
            UNSG32 uWMV_exmvdy                                 :  1;\
            UNSG32 uWMV_fastUV                                 :  1;\
            UNSG32 uWMV_dQtype_0i                              :  1;\
            UNSG32 uWMV_dQtype_1i                              :  1;\
            UNSG32 uWMV_dQtype_2i                              :  1;\
            UNSG32 uWMV_dQtype_3i                              :  1;\
            UNSG32 uWMV_dQFrm                                  :  1;\
            UNSG32 uWMV_dQProfile                              :  1;\
            UNSG32 uWMV_halfQP                                 :  1;\
            UNSG32 uWMV_dQbiLvl                                :  1;\
            UNSG32 uWMV_altQuant                               :  5;\
            UNSG32 RSVDxC_b29                                  :  3;\
          }
    union { UNSG32 u32CtxMPGx_WMV1;
            struct w32CtxMPGx_WMV1;
          };
    ///////////////////////////////////////////////////////////
    } SIE_CtxMPGx;

    typedef union  T32CtxMPGx_MPG
          { UNSG32 u32;
            struct w32CtxMPGx_MPG;
                 } T32CtxMPGx_MPG;
    typedef union  T32CtxMPGx_MPG1
          { UNSG32 u32;
            struct w32CtxMPGx_MPG1;
                 } T32CtxMPGx_MPG1;
    typedef union  T32CtxMPGx_WMV
          { UNSG32 u32;
            struct w32CtxMPGx_WMV;
                 } T32CtxMPGx_WMV;
    typedef union  T32CtxMPGx_WMV1
          { UNSG32 u32;
            struct w32CtxMPGx_WMV1;
                 } T32CtxMPGx_WMV1;
    ///////////////////////////////////////////////////////////

    typedef union  TCtxMPGx_MPG
          { UNSG32 u32[2];
            struct {
            struct w32CtxMPGx_MPG;
            struct w32CtxMPGx_MPG1;
                   };
                 } TCtxMPGx_MPG;
    typedef union  TCtxMPGx_WMV
          { UNSG32 u32[2];
            struct {
            struct w32CtxMPGx_WMV;
            struct w32CtxMPGx_WMV1;
                   };
                 } TCtxMPGx_WMV;

    ///////////////////////////////////////////////////////////
     SIGN32 CtxMPGx_drvrd(SIE_CtxMPGx *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CtxMPGx_drvwr(SIE_CtxMPGx *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CtxMPGx_reset(SIE_CtxMPGx *p);
     SIGN32 CtxMPGx_cmp  (SIE_CtxMPGx *p, SIE_CtxMPGx *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CtxMPGx_check(p,pie,pfx,hLOG) CtxMPGx_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CtxMPGx_print(p,    pfx,hLOG) CtxMPGx_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CtxMPGx
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CtxJPEG                                  (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 2  H0                        
///                                    ###
///                                    * Horizontal block number of 0th component.
///                                    ###
///               %unsigned 2  V0                        
///                                    ###
///                                    * Vertical block number of 0th component.
///                                    ###
///               %unsigned 2  H1                        
///                                    ###
///                                    * Horizontal block number of 1th component.
///                                    ###
///               %unsigned 2  V1                        
///                                    ###
///                                    * Vertical block number of 1th component.
///                                    ###
///               %unsigned 2  H2                        
///                                    ###
///                                    * Horizontal block number of 2th component.
///                                    ###
///               %unsigned 2  V2                        
///                                    ###
///                                    * Vertical block number of 2th component.
///                                    ###
///               %unsigned 4  NumBlk                    
///                                    ###
///                                    * Block number to decode in one MCU.
///                                    ###
///               %unsigned 2  compid_0i                 
///               %unsigned 2  compid_1i                 
///               %unsigned 2  compid_2i                 
///               %unsigned 2  compid_3i                 
///               %unsigned 2  compid_4i                 
///               %unsigned 2  compid_5i                 
///                                    ###
///                                    * Component ID for all blocks.
///                                    * Indexed by block index.
///                                    ###
///               %unsigned 3  cformat                   
///                                    ###
///                                    * Chroma format
///                                    ###
///                                    : CHROMA_MONO               0x0
///                                    : CHROMA_420                0x1
///                                    : CHROMA_422                0x2
///                                    : CHROMA_422_rotate         0x3
///                                    : CHROMA_444                0x4
///               %unsigned 1  dSample                   
///     @ 0x00004                      (P)
///               %unsigned 4  NumBlkToPad               
///                                    ###
///                                    * Block number to pad in one MCU.
///                                    * For picture with less than 3 components.
///                                    ###
///               %unsigned 1  roi                       
///                                    ###
///                                    * ROI flag.
///                                    ###
///               %unsigned 1  slc                       
///                                    ###
///                                    * Slice flag.
///                                    ###
///               %unsigned 1  lastSlc                   
///                                    ###
///                                    * Last slice of picture.
///                                    ###
///               %unsigned 1  firstSlc                  
///                                    ###
///                                    * First slice of picture.
///                                    ###
///               %unsigned 1  vld                       
///                                    ###
///                                    * Use hardware vld tables for parser.
///                                    ###
///               %unsigned 1  asp                       
///                                    ###
///                                    * Use hardware asp for parser.
///                                    ###
///               %%        22         # Stuffing bits...
///     @ 0x00008                      (P)
///               %unsigned 16 mbxL                      
///                                    ###
///                                    * Mbx of left border in ROI.
///                                    ###
///               %unsigned 16 mbxR                      
///                                    ###
///                                    * Mbx of right border in ROI.
///                                    ###
///               %unsigned 16 mbyT                      
///                                    ###
///                                    * Mby of top border in ROI.
///                                    ###
///               %unsigned 16 mbyB                      
///                                    ###
///                                    * Mby of bottom border in ROI.
///                                    ###
///     @ 0x00010                      (P)
///     # 0x00010 dcPred               
///               $LUT64b              dcPred            REG          
///                                    ###
///                                    * DC predictor.
///                                    ###
///     @ 0x00018                      (P)
///     # 0x00018 blkIdx               
///               $LUT64b              blkIdx            REG       [6]
///                                    ###
///                                    * Decoding block index in a package.
///                                    ###
///     @ 0x00048                      (P)
///     # 0x00048 ctxBS                
///               $LUT64b              ctxBS             REG       [2]
///                                    ###
///                                    * Context for bitstream.
///                                    ###
///     @ 0x00058                      (P)
///     # 0x00058 ctxQmat              
///               $LUT64b              ctxQmat           REG          
///                                    ###
///                                    * Context for quant matrix address.
///                                    ###
///     @ 0x00060                      (P)
///     # 0x00060 ctxVldTab            
///               $LUT64b              ctxVldTab         REG       [4]
///                                    ###
///                                    * Context for vld table context.
///                                    * End of CtxJPEG
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     128B, bits:    1002b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CtxJPEG
#define h_CtxJPEG (){}

    #define     BA_CtxJPEG_H0                                  0x0000
    #define     B16CtxJPEG_H0                                  0x0000
    #define   LSb32CtxJPEG_H0                                     0
    #define   LSb16CtxJPEG_H0                                     0
    #define       bCtxJPEG_H0                                  2
    #define   MSK32CtxJPEG_H0                                     0x00000003

    #define     BA_CtxJPEG_V0                                  0x0000
    #define     B16CtxJPEG_V0                                  0x0000
    #define   LSb32CtxJPEG_V0                                     2
    #define   LSb16CtxJPEG_V0                                     2
    #define       bCtxJPEG_V0                                  2
    #define   MSK32CtxJPEG_V0                                     0x0000000C

    #define     BA_CtxJPEG_H1                                  0x0000
    #define     B16CtxJPEG_H1                                  0x0000
    #define   LSb32CtxJPEG_H1                                     4
    #define   LSb16CtxJPEG_H1                                     4
    #define       bCtxJPEG_H1                                  2
    #define   MSK32CtxJPEG_H1                                     0x00000030

    #define     BA_CtxJPEG_V1                                  0x0000
    #define     B16CtxJPEG_V1                                  0x0000
    #define   LSb32CtxJPEG_V1                                     6
    #define   LSb16CtxJPEG_V1                                     6
    #define       bCtxJPEG_V1                                  2
    #define   MSK32CtxJPEG_V1                                     0x000000C0

    #define     BA_CtxJPEG_H2                                  0x0001
    #define     B16CtxJPEG_H2                                  0x0000
    #define   LSb32CtxJPEG_H2                                     8
    #define   LSb16CtxJPEG_H2                                     8
    #define       bCtxJPEG_H2                                  2
    #define   MSK32CtxJPEG_H2                                     0x00000300

    #define     BA_CtxJPEG_V2                                  0x0001
    #define     B16CtxJPEG_V2                                  0x0000
    #define   LSb32CtxJPEG_V2                                     10
    #define   LSb16CtxJPEG_V2                                     10
    #define       bCtxJPEG_V2                                  2
    #define   MSK32CtxJPEG_V2                                     0x00000C00

    #define     BA_CtxJPEG_NumBlk                              0x0001
    #define     B16CtxJPEG_NumBlk                              0x0000
    #define   LSb32CtxJPEG_NumBlk                                 12
    #define   LSb16CtxJPEG_NumBlk                                 12
    #define       bCtxJPEG_NumBlk                              4
    #define   MSK32CtxJPEG_NumBlk                                 0x0000F000

    #define     BA_CtxJPEG_compid_0i                           0x0002
    #define     B16CtxJPEG_compid_0i                           0x0002
    #define   LSb32CtxJPEG_compid_0i                              16
    #define   LSb16CtxJPEG_compid_0i                              0
    #define       bCtxJPEG_compid_0i                           2
    #define   MSK32CtxJPEG_compid_0i                              0x00030000

    #define     BA_CtxJPEG_compid_1i                           0x0002
    #define     B16CtxJPEG_compid_1i                           0x0002
    #define   LSb32CtxJPEG_compid_1i                              18
    #define   LSb16CtxJPEG_compid_1i                              2
    #define       bCtxJPEG_compid_1i                           2
    #define   MSK32CtxJPEG_compid_1i                              0x000C0000

    #define     BA_CtxJPEG_compid_2i                           0x0002
    #define     B16CtxJPEG_compid_2i                           0x0002
    #define   LSb32CtxJPEG_compid_2i                              20
    #define   LSb16CtxJPEG_compid_2i                              4
    #define       bCtxJPEG_compid_2i                           2
    #define   MSK32CtxJPEG_compid_2i                              0x00300000

    #define     BA_CtxJPEG_compid_3i                           0x0002
    #define     B16CtxJPEG_compid_3i                           0x0002
    #define   LSb32CtxJPEG_compid_3i                              22
    #define   LSb16CtxJPEG_compid_3i                              6
    #define       bCtxJPEG_compid_3i                           2
    #define   MSK32CtxJPEG_compid_3i                              0x00C00000

    #define     BA_CtxJPEG_compid_4i                           0x0003
    #define     B16CtxJPEG_compid_4i                           0x0002
    #define   LSb32CtxJPEG_compid_4i                              24
    #define   LSb16CtxJPEG_compid_4i                              8
    #define       bCtxJPEG_compid_4i                           2
    #define   MSK32CtxJPEG_compid_4i                              0x03000000

    #define     BA_CtxJPEG_compid_5i                           0x0003
    #define     B16CtxJPEG_compid_5i                           0x0002
    #define   LSb32CtxJPEG_compid_5i                              26
    #define   LSb16CtxJPEG_compid_5i                              10
    #define       bCtxJPEG_compid_5i                           2
    #define   MSK32CtxJPEG_compid_5i                              0x0C000000

    #define     BA_CtxJPEG_cformat                             0x0003
    #define     B16CtxJPEG_cformat                             0x0002
    #define   LSb32CtxJPEG_cformat                                28
    #define   LSb16CtxJPEG_cformat                                12
    #define       bCtxJPEG_cformat                             3
    #define   MSK32CtxJPEG_cformat                                0x70000000
    #define        CtxJPEG_cformat_CHROMA_MONO                              0x0
    #define        CtxJPEG_cformat_CHROMA_420                               0x1
    #define        CtxJPEG_cformat_CHROMA_422                               0x2
    #define        CtxJPEG_cformat_CHROMA_422_rotate                        0x3
    #define        CtxJPEG_cformat_CHROMA_444                               0x4

    #define     BA_CtxJPEG_dSample                             0x0003
    #define     B16CtxJPEG_dSample                             0x0002
    #define   LSb32CtxJPEG_dSample                                31
    #define   LSb16CtxJPEG_dSample                                15
    #define       bCtxJPEG_dSample                             1
    #define   MSK32CtxJPEG_dSample                                0x80000000
    ///////////////////////////////////////////////////////////

    #define     BA_CtxJPEG_NumBlkToPad                         0x0004
    #define     B16CtxJPEG_NumBlkToPad                         0x0004
    #define   LSb32CtxJPEG_NumBlkToPad                            0
    #define   LSb16CtxJPEG_NumBlkToPad                            0
    #define       bCtxJPEG_NumBlkToPad                         4
    #define   MSK32CtxJPEG_NumBlkToPad                            0x0000000F

    #define     BA_CtxJPEG_roi                                 0x0004
    #define     B16CtxJPEG_roi                                 0x0004
    #define   LSb32CtxJPEG_roi                                    4
    #define   LSb16CtxJPEG_roi                                    4
    #define       bCtxJPEG_roi                                 1
    #define   MSK32CtxJPEG_roi                                    0x00000010

    #define     BA_CtxJPEG_slc                                 0x0004
    #define     B16CtxJPEG_slc                                 0x0004
    #define   LSb32CtxJPEG_slc                                    5
    #define   LSb16CtxJPEG_slc                                    5
    #define       bCtxJPEG_slc                                 1
    #define   MSK32CtxJPEG_slc                                    0x00000020

    #define     BA_CtxJPEG_lastSlc                             0x0004
    #define     B16CtxJPEG_lastSlc                             0x0004
    #define   LSb32CtxJPEG_lastSlc                                6
    #define   LSb16CtxJPEG_lastSlc                                6
    #define       bCtxJPEG_lastSlc                             1
    #define   MSK32CtxJPEG_lastSlc                                0x00000040

    #define     BA_CtxJPEG_firstSlc                            0x0004
    #define     B16CtxJPEG_firstSlc                            0x0004
    #define   LSb32CtxJPEG_firstSlc                               7
    #define   LSb16CtxJPEG_firstSlc                               7
    #define       bCtxJPEG_firstSlc                            1
    #define   MSK32CtxJPEG_firstSlc                               0x00000080

    #define     BA_CtxJPEG_vld                                 0x0005
    #define     B16CtxJPEG_vld                                 0x0004
    #define   LSb32CtxJPEG_vld                                    8
    #define   LSb16CtxJPEG_vld                                    8
    #define       bCtxJPEG_vld                                 1
    #define   MSK32CtxJPEG_vld                                    0x00000100

    #define     BA_CtxJPEG_asp                                 0x0005
    #define     B16CtxJPEG_asp                                 0x0004
    #define   LSb32CtxJPEG_asp                                    9
    #define   LSb16CtxJPEG_asp                                    9
    #define       bCtxJPEG_asp                                 1
    #define   MSK32CtxJPEG_asp                                    0x00000200
    ///////////////////////////////////////////////////////////

    #define     BA_CtxJPEG_mbxL                                0x0008
    #define     B16CtxJPEG_mbxL                                0x0008
    #define   LSb32CtxJPEG_mbxL                                   0
    #define   LSb16CtxJPEG_mbxL                                   0
    #define       bCtxJPEG_mbxL                                16
    #define   MSK32CtxJPEG_mbxL                                   0x0000FFFF

    #define     BA_CtxJPEG_mbxR                                0x000A
    #define     B16CtxJPEG_mbxR                                0x000A
    #define   LSb32CtxJPEG_mbxR                                   16
    #define   LSb16CtxJPEG_mbxR                                   0
    #define       bCtxJPEG_mbxR                                16
    #define   MSK32CtxJPEG_mbxR                                   0xFFFF0000

    #define     BA_CtxJPEG_mbyT                                0x000C
    #define     B16CtxJPEG_mbyT                                0x000C
    #define   LSb32CtxJPEG_mbyT                                   0
    #define   LSb16CtxJPEG_mbyT                                   0
    #define       bCtxJPEG_mbyT                                16
    #define   MSK32CtxJPEG_mbyT                                   0x0000FFFF

    #define     BA_CtxJPEG_mbyB                                0x000E
    #define     B16CtxJPEG_mbyB                                0x000E
    #define   LSb32CtxJPEG_mbyB                                   16
    #define   LSb16CtxJPEG_mbyB                                   0
    #define       bCtxJPEG_mbyB                                16
    #define   MSK32CtxJPEG_mbyB                                   0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_CtxJPEG_dcPred                              0x0010
    ///////////////////////////////////////////////////////////
    #define     RA_CtxJPEG_blkIdx                              0x0018
    ///////////////////////////////////////////////////////////
    #define     RA_CtxJPEG_ctxBS                               0x0048
    ///////////////////////////////////////////////////////////
    #define     RA_CtxJPEG_ctxQmat                             0x0058
    ///////////////////////////////////////////////////////////
    #define     RA_CtxJPEG_ctxVldTab                           0x0060
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CtxJPEG {
    ///////////////////////////////////////////////////////////
    #define   GET32CtxJPEG_H0(r32)                             _BFGET_(r32, 1, 0)
    #define   SET32CtxJPEG_H0(r32,v)                           _BFSET_(r32, 1, 0,v)
    #define   GET16CtxJPEG_H0(r16)                             _BFGET_(r16, 1, 0)
    #define   SET16CtxJPEG_H0(r16,v)                           _BFSET_(r16, 1, 0,v)

    #define   GET32CtxJPEG_V0(r32)                             _BFGET_(r32, 3, 2)
    #define   SET32CtxJPEG_V0(r32,v)                           _BFSET_(r32, 3, 2,v)
    #define   GET16CtxJPEG_V0(r16)                             _BFGET_(r16, 3, 2)
    #define   SET16CtxJPEG_V0(r16,v)                           _BFSET_(r16, 3, 2,v)

    #define   GET32CtxJPEG_H1(r32)                             _BFGET_(r32, 5, 4)
    #define   SET32CtxJPEG_H1(r32,v)                           _BFSET_(r32, 5, 4,v)
    #define   GET16CtxJPEG_H1(r16)                             _BFGET_(r16, 5, 4)
    #define   SET16CtxJPEG_H1(r16,v)                           _BFSET_(r16, 5, 4,v)

    #define   GET32CtxJPEG_V1(r32)                             _BFGET_(r32, 7, 6)
    #define   SET32CtxJPEG_V1(r32,v)                           _BFSET_(r32, 7, 6,v)
    #define   GET16CtxJPEG_V1(r16)                             _BFGET_(r16, 7, 6)
    #define   SET16CtxJPEG_V1(r16,v)                           _BFSET_(r16, 7, 6,v)

    #define   GET32CtxJPEG_H2(r32)                             _BFGET_(r32, 9, 8)
    #define   SET32CtxJPEG_H2(r32,v)                           _BFSET_(r32, 9, 8,v)
    #define   GET16CtxJPEG_H2(r16)                             _BFGET_(r16, 9, 8)
    #define   SET16CtxJPEG_H2(r16,v)                           _BFSET_(r16, 9, 8,v)

    #define   GET32CtxJPEG_V2(r32)                             _BFGET_(r32,11,10)
    #define   SET32CtxJPEG_V2(r32,v)                           _BFSET_(r32,11,10,v)
    #define   GET16CtxJPEG_V2(r16)                             _BFGET_(r16,11,10)
    #define   SET16CtxJPEG_V2(r16,v)                           _BFSET_(r16,11,10,v)

    #define   GET32CtxJPEG_NumBlk(r32)                         _BFGET_(r32,15,12)
    #define   SET32CtxJPEG_NumBlk(r32,v)                       _BFSET_(r32,15,12,v)
    #define   GET16CtxJPEG_NumBlk(r16)                         _BFGET_(r16,15,12)
    #define   SET16CtxJPEG_NumBlk(r16,v)                       _BFSET_(r16,15,12,v)

    #define   GET32CtxJPEG_compid_0i(r32)                      _BFGET_(r32,17,16)
    #define   SET32CtxJPEG_compid_0i(r32,v)                    _BFSET_(r32,17,16,v)
    #define   GET16CtxJPEG_compid_0i(r16)                      _BFGET_(r16, 1, 0)
    #define   SET16CtxJPEG_compid_0i(r16,v)                    _BFSET_(r16, 1, 0,v)

    #define   GET32CtxJPEG_compid_1i(r32)                      _BFGET_(r32,19,18)
    #define   SET32CtxJPEG_compid_1i(r32,v)                    _BFSET_(r32,19,18,v)
    #define   GET16CtxJPEG_compid_1i(r16)                      _BFGET_(r16, 3, 2)
    #define   SET16CtxJPEG_compid_1i(r16,v)                    _BFSET_(r16, 3, 2,v)

    #define   GET32CtxJPEG_compid_2i(r32)                      _BFGET_(r32,21,20)
    #define   SET32CtxJPEG_compid_2i(r32,v)                    _BFSET_(r32,21,20,v)
    #define   GET16CtxJPEG_compid_2i(r16)                      _BFGET_(r16, 5, 4)
    #define   SET16CtxJPEG_compid_2i(r16,v)                    _BFSET_(r16, 5, 4,v)

    #define   GET32CtxJPEG_compid_3i(r32)                      _BFGET_(r32,23,22)
    #define   SET32CtxJPEG_compid_3i(r32,v)                    _BFSET_(r32,23,22,v)
    #define   GET16CtxJPEG_compid_3i(r16)                      _BFGET_(r16, 7, 6)
    #define   SET16CtxJPEG_compid_3i(r16,v)                    _BFSET_(r16, 7, 6,v)

    #define   GET32CtxJPEG_compid_4i(r32)                      _BFGET_(r32,25,24)
    #define   SET32CtxJPEG_compid_4i(r32,v)                    _BFSET_(r32,25,24,v)
    #define   GET16CtxJPEG_compid_4i(r16)                      _BFGET_(r16, 9, 8)
    #define   SET16CtxJPEG_compid_4i(r16,v)                    _BFSET_(r16, 9, 8,v)

    #define   GET32CtxJPEG_compid_5i(r32)                      _BFGET_(r32,27,26)
    #define   SET32CtxJPEG_compid_5i(r32,v)                    _BFSET_(r32,27,26,v)
    #define   GET16CtxJPEG_compid_5i(r16)                      _BFGET_(r16,11,10)
    #define   SET16CtxJPEG_compid_5i(r16,v)                    _BFSET_(r16,11,10,v)

    #define   GET32CtxJPEG_cformat(r32)                        _BFGET_(r32,30,28)
    #define   SET32CtxJPEG_cformat(r32,v)                      _BFSET_(r32,30,28,v)
    #define   GET16CtxJPEG_cformat(r16)                        _BFGET_(r16,14,12)
    #define   SET16CtxJPEG_cformat(r16,v)                      _BFSET_(r16,14,12,v)

    #define   GET32CtxJPEG_dSample(r32)                        _BFGET_(r32,31,31)
    #define   SET32CtxJPEG_dSample(r32,v)                      _BFSET_(r32,31,31,v)
    #define   GET16CtxJPEG_dSample(r16)                        _BFGET_(r16,15,15)
    #define   SET16CtxJPEG_dSample(r16,v)                      _BFSET_(r16,15,15,v)

            UNSG32 u_H0                                        :  2;
            UNSG32 u_V0                                        :  2;
            UNSG32 u_H1                                        :  2;
            UNSG32 u_V1                                        :  2;
            UNSG32 u_H2                                        :  2;
            UNSG32 u_V2                                        :  2;
            UNSG32 u_NumBlk                                    :  4;
            UNSG32 u_compid_0i                                 :  2;
            UNSG32 u_compid_1i                                 :  2;
            UNSG32 u_compid_2i                                 :  2;
            UNSG32 u_compid_3i                                 :  2;
            UNSG32 u_compid_4i                                 :  2;
            UNSG32 u_compid_5i                                 :  2;
            UNSG32 u_cformat                                   :  3;
            UNSG32 u_dSample                                   :  1;
    ///////////////////////////////////////////////////////////
    #define   GET32CtxJPEG_NumBlkToPad(r32)                    _BFGET_(r32, 3, 0)
    #define   SET32CtxJPEG_NumBlkToPad(r32,v)                  _BFSET_(r32, 3, 0,v)
    #define   GET16CtxJPEG_NumBlkToPad(r16)                    _BFGET_(r16, 3, 0)
    #define   SET16CtxJPEG_NumBlkToPad(r16,v)                  _BFSET_(r16, 3, 0,v)

    #define   GET32CtxJPEG_roi(r32)                            _BFGET_(r32, 4, 4)
    #define   SET32CtxJPEG_roi(r32,v)                          _BFSET_(r32, 4, 4,v)
    #define   GET16CtxJPEG_roi(r16)                            _BFGET_(r16, 4, 4)
    #define   SET16CtxJPEG_roi(r16,v)                          _BFSET_(r16, 4, 4,v)

    #define   GET32CtxJPEG_slc(r32)                            _BFGET_(r32, 5, 5)
    #define   SET32CtxJPEG_slc(r32,v)                          _BFSET_(r32, 5, 5,v)
    #define   GET16CtxJPEG_slc(r16)                            _BFGET_(r16, 5, 5)
    #define   SET16CtxJPEG_slc(r16,v)                          _BFSET_(r16, 5, 5,v)

    #define   GET32CtxJPEG_lastSlc(r32)                        _BFGET_(r32, 6, 6)
    #define   SET32CtxJPEG_lastSlc(r32,v)                      _BFSET_(r32, 6, 6,v)
    #define   GET16CtxJPEG_lastSlc(r16)                        _BFGET_(r16, 6, 6)
    #define   SET16CtxJPEG_lastSlc(r16,v)                      _BFSET_(r16, 6, 6,v)

    #define   GET32CtxJPEG_firstSlc(r32)                       _BFGET_(r32, 7, 7)
    #define   SET32CtxJPEG_firstSlc(r32,v)                     _BFSET_(r32, 7, 7,v)
    #define   GET16CtxJPEG_firstSlc(r16)                       _BFGET_(r16, 7, 7)
    #define   SET16CtxJPEG_firstSlc(r16,v)                     _BFSET_(r16, 7, 7,v)

    #define   GET32CtxJPEG_vld(r32)                            _BFGET_(r32, 8, 8)
    #define   SET32CtxJPEG_vld(r32,v)                          _BFSET_(r32, 8, 8,v)
    #define   GET16CtxJPEG_vld(r16)                            _BFGET_(r16, 8, 8)
    #define   SET16CtxJPEG_vld(r16,v)                          _BFSET_(r16, 8, 8,v)

    #define   GET32CtxJPEG_asp(r32)                            _BFGET_(r32, 9, 9)
    #define   SET32CtxJPEG_asp(r32,v)                          _BFSET_(r32, 9, 9,v)
    #define   GET16CtxJPEG_asp(r16)                            _BFGET_(r16, 9, 9)
    #define   SET16CtxJPEG_asp(r16,v)                          _BFSET_(r16, 9, 9,v)

            UNSG32 u_NumBlkToPad                               :  4;
            UNSG32 u_roi                                       :  1;
            UNSG32 u_slc                                       :  1;
            UNSG32 u_lastSlc                                   :  1;
            UNSG32 u_firstSlc                                  :  1;
            UNSG32 u_vld                                       :  1;
            UNSG32 u_asp                                       :  1;
            UNSG32 RSVDx4_b10                                  : 22;
    ///////////////////////////////////////////////////////////
    #define   GET32CtxJPEG_mbxL(r32)                           _BFGET_(r32,15, 0)
    #define   SET32CtxJPEG_mbxL(r32,v)                         _BFSET_(r32,15, 0,v)
    #define   GET16CtxJPEG_mbxL(r16)                           _BFGET_(r16,15, 0)
    #define   SET16CtxJPEG_mbxL(r16,v)                         _BFSET_(r16,15, 0,v)

    #define   GET32CtxJPEG_mbxR(r32)                           _BFGET_(r32,31,16)
    #define   SET32CtxJPEG_mbxR(r32,v)                         _BFSET_(r32,31,16,v)
    #define   GET16CtxJPEG_mbxR(r16)                           _BFGET_(r16,15, 0)
    #define   SET16CtxJPEG_mbxR(r16,v)                         _BFSET_(r16,15, 0,v)

            UNSG32 u_mbxL                                      : 16;
            UNSG32 u_mbxR                                      : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32CtxJPEG_mbyT(r32)                           _BFGET_(r32,15, 0)
    #define   SET32CtxJPEG_mbyT(r32,v)                         _BFSET_(r32,15, 0,v)
    #define   GET16CtxJPEG_mbyT(r16)                           _BFGET_(r16,15, 0)
    #define   SET16CtxJPEG_mbyT(r16,v)                         _BFSET_(r16,15, 0,v)

    #define   GET32CtxJPEG_mbyB(r32)                           _BFGET_(r32,31,16)
    #define   SET32CtxJPEG_mbyB(r32,v)                         _BFSET_(r32,31,16,v)
    #define   GET16CtxJPEG_mbyB(r16)                           _BFGET_(r16,15, 0)
    #define   SET16CtxJPEG_mbyB(r16,v)                         _BFSET_(r16,15, 0,v)

            UNSG32 u_mbyT                                      : 16;
            UNSG32 u_mbyB                                      : 16;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_dcPred;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_blkIdx[6];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_ctxBS[2];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_ctxQmat;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_ctxVldTab[4];
    ///////////////////////////////////////////////////////////
    } SIE_CtxJPEG;

    ///////////////////////////////////////////////////////////
     SIGN32 CtxJPEG_drvrd(SIE_CtxJPEG *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CtxJPEG_drvwr(SIE_CtxJPEG *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CtxJPEG_reset(SIE_CtxJPEG *p);
     SIGN32 CtxJPEG_cmp  (SIE_CtxJPEG *p, SIE_CtxJPEG *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CtxJPEG_check(p,pie,pfx,hLOG) CtxJPEG_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CtxJPEG_print(p,    pfx,hLOG) CtxJPEG_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CtxJPEG
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CtxPSER                                  (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 DEC                  (P)
///               %unsigned 16 totalMBs                  
///                                    ###
///                                    * Number macroblock to decode
///                                    ###
///               %unsigned 16 moreSkip                  
///                                    ###
///                                    * Number pending skipped macroblocks
///                                    ###
///     # 0x00004 DEC1                 
///               %unsigned 16 MBs                       
///                                    ###
///                                    * Number macroblock successfully decoded
///                                    ###
///               %unsigned 8  error                     
///                                    ###
///                                    * Error status from entropy decoder
///                                    ###
///               %unsigned 1  eos                       
///                                    ###
///                                    * EOS-hit status from entropy decoder
///                                    ###
///               %unsigned 1  forceEND                  
///                                    ###
///                                    * Force LastInSeq after all requested MB done
///                                    ###
///               %%        6          # Stuffing bits...
///     @ 0x00008 SLICE                (P)
///               %unsigned 16 MBX                       
///                                    ###
///                                    * X-location of first MB in slice
///                                    ###
///               %unsigned 16 MBY                       
///                                    ###
///                                    * Y-location of first MB in slice
///                                    ###
///     # 0x0000C SLICE1               
///               %unsigned 16 hMBs                      
///                                    ###
///                                    * Horizontal MB count
///                                    ###
///               %unsigned 16 ID                        
///                                    ###
///                                    * Slice ID
///                                    * for vc1: this will be used as Picture height in MB
///                                    * unit
///                                    * for JPEG: number of MCU in the restart interval
///                                    ###
///     @ 0x00010 MB                   (P)
///               %unsigned 16 QP                        
///                                    ###
///                                    * Slice initial (& current) luma QP
///                                    * for vc1: PQUANT
///                                    ###
///               %signed   8  QuDlt                     
///                                    ###
///                                    * [-12,12] for Cb QP delta
///                                    ###
///               %signed   8  QvDlt                     
///                                    ###
///                                    * [-12,12] for Cr QP delta
///                                    ###
///     # 0x00014 MB1                  
///               %unsigned 16 type                      
///                                    : I                         0x0
///                                    : P                         0x1
///                                    : B                         0x2
///                                    : D                         0x3
///                                                 ###
///                                                 * Slice type (D for MPEG1)
///                                                 ###
///               %unsigned 1  MBAFF                     
///                                    ###
///                                    * H.264: if MBAFF picture
///                                    ###
///               %unsigned 1  mono                      
///                                    ###
///                                    * H.264: if luma only
///                                    ###
///               %unsigned 1  cabac                     
///                                    ###
///                                    * H.264: if coded by CABAC
///                                    ###
///               %unsigned 1  tsf8x8                    
///                                    ###
///                                    * H.264: if supporting 8x8 transform
///                                    * VC1: MB Transform switch enable flag
///                                    ###
///               %unsigned 1  direct8x8                 
///                                    ###
///                                    * H.264: direct 8x8 inference flag
///                                    ###
///               %unsigned 1  mtpL0                     
///                                    ###
///                                    * H.264: multiple reference frame in ref-List[0]
///                                    ###
///               %unsigned 1  mtpL1                     
///                                    ###
///                                    * H.264: multiple reference frame in ref-List[1]
///                                    ###
///               %unsigned 1  rIDX0                     
///                                    ###
///                                    * Run-time:
///                                    * Necessary to decode rIDX for ref-List[0]
///                                    ###
///               %unsigned 1  rIDX1                     
///                                    ###
///                                    * Run-time:
///                                    * Necessary to decode rIDX for ref-List[1]
///                                    ###
///               %unsigned 1  fieldMB                   
///                                    ###
///                                    * Run-time:
///                                    * Current field MB-pair in MBAFF picture
///                                    ###
///               %unsigned 1  fieldPendMB               
///                                    ###
///                                    * Run-time:
///                                    * Pending field MB-pair to skip
///                                    ###
///               %unsigned 1  decSkip                   
///                                    ###
///                                    * Run-time:
///                                    * If to decode skip_flag/skip_run for next MB
///                                    ###
///               %unsigned 1  FirstInPair               
///                                    ###
///                                    * Run-time:
///                                    * If to decode 1st MB in MBAFF pair
///                                    ###
///               %unsigned 1  cond_dQP                  
///                                    ###
///                                    * Run-time for CABAD only:
///                                    * Condition to decode mb_qp_delta
///                                    ###
///               %unsigned 1  has_dQP                   
///                                    ###
///                                    * Run-time for CABAD only:
///                                    * Whether mb_qp_delta is decoded for a MB
///                                    ###
///               %%        1          # Stuffing bits...
///     @ 0x00018 MaxIDX               (P)
///               %unsigned 16 L0                        
///                                    ###
///                                    * Max rIDX in ref-list[0] (frame)
///                                    ###
///               %unsigned 16 L1                        
///                                    ###
///                                    * Max rIDX in ref-list[1] (frame)
///                                    ###
///     # 0x0001C MaxIDX1              
///               %unsigned 16 fieldL0                   
///                                    ###
///                                    * Max rIDX in ref-list[0] (field)
///                                    ###
///               %unsigned 16 fieldL1                   
///                                    ###
///                                    * Max rIDX in ref-list[1] (field)
///                                    ###
///     @ 0x00020 IF                   (P)
///               %unsigned 16 err_MBs                   
///                                    ###
///                                    * Error MB number in current slice
///                                    ###
///               %unsigned 8  is_sync                   
///                                    ###
///                                    * Search next sync word or not
///                                    * End of CtxPSER
///                                    ###
///               %%        8          # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      36B, bits:     273b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CtxPSER
#define h_CtxPSER (){}

    #define     RA_CtxPSER_DEC                                 0x0000

    #define     BA_CtxPSER_DEC_totalMBs                        0x0000
    #define     B16CtxPSER_DEC_totalMBs                        0x0000
    #define   LSb32CtxPSER_DEC_totalMBs                           0
    #define   LSb16CtxPSER_DEC_totalMBs                           0
    #define       bCtxPSER_DEC_totalMBs                        16
    #define   MSK32CtxPSER_DEC_totalMBs                           0x0000FFFF

    #define     BA_CtxPSER_DEC_moreSkip                        0x0002
    #define     B16CtxPSER_DEC_moreSkip                        0x0002
    #define   LSb32CtxPSER_DEC_moreSkip                           16
    #define   LSb16CtxPSER_DEC_moreSkip                           0
    #define       bCtxPSER_DEC_moreSkip                        16
    #define   MSK32CtxPSER_DEC_moreSkip                           0xFFFF0000

    #define     RA_CtxPSER_DEC1                                0x0004

    #define     BA_CtxPSER_DEC_MBs                             0x0004
    #define     B16CtxPSER_DEC_MBs                             0x0004
    #define   LSb32CtxPSER_DEC_MBs                                0
    #define   LSb16CtxPSER_DEC_MBs                                0
    #define       bCtxPSER_DEC_MBs                             16
    #define   MSK32CtxPSER_DEC_MBs                                0x0000FFFF

    #define     BA_CtxPSER_DEC_error                           0x0006
    #define     B16CtxPSER_DEC_error                           0x0006
    #define   LSb32CtxPSER_DEC_error                              16
    #define   LSb16CtxPSER_DEC_error                              0
    #define       bCtxPSER_DEC_error                           8
    #define   MSK32CtxPSER_DEC_error                              0x00FF0000

    #define     BA_CtxPSER_DEC_eos                             0x0007
    #define     B16CtxPSER_DEC_eos                             0x0006
    #define   LSb32CtxPSER_DEC_eos                                24
    #define   LSb16CtxPSER_DEC_eos                                8
    #define       bCtxPSER_DEC_eos                             1
    #define   MSK32CtxPSER_DEC_eos                                0x01000000

    #define     BA_CtxPSER_DEC_forceEND                        0x0007
    #define     B16CtxPSER_DEC_forceEND                        0x0006
    #define   LSb32CtxPSER_DEC_forceEND                           25
    #define   LSb16CtxPSER_DEC_forceEND                           9
    #define       bCtxPSER_DEC_forceEND                        1
    #define   MSK32CtxPSER_DEC_forceEND                           0x02000000
    ///////////////////////////////////////////////////////////
    #define     RA_CtxPSER_SLICE                               0x0008

    #define     BA_CtxPSER_SLICE_MBX                           0x0008
    #define     B16CtxPSER_SLICE_MBX                           0x0008
    #define   LSb32CtxPSER_SLICE_MBX                              0
    #define   LSb16CtxPSER_SLICE_MBX                              0
    #define       bCtxPSER_SLICE_MBX                           16
    #define   MSK32CtxPSER_SLICE_MBX                              0x0000FFFF

    #define     BA_CtxPSER_SLICE_MBY                           0x000A
    #define     B16CtxPSER_SLICE_MBY                           0x000A
    #define   LSb32CtxPSER_SLICE_MBY                              16
    #define   LSb16CtxPSER_SLICE_MBY                              0
    #define       bCtxPSER_SLICE_MBY                           16
    #define   MSK32CtxPSER_SLICE_MBY                              0xFFFF0000

    #define     RA_CtxPSER_SLICE1                              0x000C

    #define     BA_CtxPSER_SLICE_hMBs                          0x000C
    #define     B16CtxPSER_SLICE_hMBs                          0x000C
    #define   LSb32CtxPSER_SLICE_hMBs                             0
    #define   LSb16CtxPSER_SLICE_hMBs                             0
    #define       bCtxPSER_SLICE_hMBs                          16
    #define   MSK32CtxPSER_SLICE_hMBs                             0x0000FFFF

    #define     BA_CtxPSER_SLICE_ID                            0x000E
    #define     B16CtxPSER_SLICE_ID                            0x000E
    #define   LSb32CtxPSER_SLICE_ID                               16
    #define   LSb16CtxPSER_SLICE_ID                               0
    #define       bCtxPSER_SLICE_ID                            16
    #define   MSK32CtxPSER_SLICE_ID                               0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_CtxPSER_MB                                  0x0010

    #define     BA_CtxPSER_MB_QP                               0x0010
    #define     B16CtxPSER_MB_QP                               0x0010
    #define   LSb32CtxPSER_MB_QP                                  0
    #define   LSb16CtxPSER_MB_QP                                  0
    #define       bCtxPSER_MB_QP                               16
    #define   MSK32CtxPSER_MB_QP                                  0x0000FFFF

    #define     BA_CtxPSER_MB_QuDlt                            0x0012
    #define     B16CtxPSER_MB_QuDlt                            0x0012
    #define   LSb32CtxPSER_MB_QuDlt                               16
    #define   LSb16CtxPSER_MB_QuDlt                               0
    #define       bCtxPSER_MB_QuDlt                            8
    #define   MSK32CtxPSER_MB_QuDlt                               0x00FF0000

    #define     BA_CtxPSER_MB_QvDlt                            0x0013
    #define     B16CtxPSER_MB_QvDlt                            0x0012
    #define   LSb32CtxPSER_MB_QvDlt                               24
    #define   LSb16CtxPSER_MB_QvDlt                               8
    #define       bCtxPSER_MB_QvDlt                            8
    #define   MSK32CtxPSER_MB_QvDlt                               0xFF000000

    #define     RA_CtxPSER_MB1                                 0x0014

    #define     BA_CtxPSER_MB_type                             0x0014
    #define     B16CtxPSER_MB_type                             0x0014
    #define   LSb32CtxPSER_MB_type                                0
    #define   LSb16CtxPSER_MB_type                                0
    #define       bCtxPSER_MB_type                             16
    #define   MSK32CtxPSER_MB_type                                0x0000FFFF
    #define        CtxPSER_MB_type_I                                        0x0
    #define        CtxPSER_MB_type_P                                        0x1
    #define        CtxPSER_MB_type_B                                        0x2
    #define        CtxPSER_MB_type_D                                        0x3

    #define     BA_CtxPSER_MB_MBAFF                            0x0016
    #define     B16CtxPSER_MB_MBAFF                            0x0016
    #define   LSb32CtxPSER_MB_MBAFF                               16
    #define   LSb16CtxPSER_MB_MBAFF                               0
    #define       bCtxPSER_MB_MBAFF                            1
    #define   MSK32CtxPSER_MB_MBAFF                               0x00010000

    #define     BA_CtxPSER_MB_mono                             0x0016
    #define     B16CtxPSER_MB_mono                             0x0016
    #define   LSb32CtxPSER_MB_mono                                17
    #define   LSb16CtxPSER_MB_mono                                1
    #define       bCtxPSER_MB_mono                             1
    #define   MSK32CtxPSER_MB_mono                                0x00020000

    #define     BA_CtxPSER_MB_cabac                            0x0016
    #define     B16CtxPSER_MB_cabac                            0x0016
    #define   LSb32CtxPSER_MB_cabac                               18
    #define   LSb16CtxPSER_MB_cabac                               2
    #define       bCtxPSER_MB_cabac                            1
    #define   MSK32CtxPSER_MB_cabac                               0x00040000

    #define     BA_CtxPSER_MB_tsf8x8                           0x0016
    #define     B16CtxPSER_MB_tsf8x8                           0x0016
    #define   LSb32CtxPSER_MB_tsf8x8                              19
    #define   LSb16CtxPSER_MB_tsf8x8                              3
    #define       bCtxPSER_MB_tsf8x8                           1
    #define   MSK32CtxPSER_MB_tsf8x8                              0x00080000

    #define     BA_CtxPSER_MB_direct8x8                        0x0016
    #define     B16CtxPSER_MB_direct8x8                        0x0016
    #define   LSb32CtxPSER_MB_direct8x8                           20
    #define   LSb16CtxPSER_MB_direct8x8                           4
    #define       bCtxPSER_MB_direct8x8                        1
    #define   MSK32CtxPSER_MB_direct8x8                           0x00100000

    #define     BA_CtxPSER_MB_mtpL0                            0x0016
    #define     B16CtxPSER_MB_mtpL0                            0x0016
    #define   LSb32CtxPSER_MB_mtpL0                               21
    #define   LSb16CtxPSER_MB_mtpL0                               5
    #define       bCtxPSER_MB_mtpL0                            1
    #define   MSK32CtxPSER_MB_mtpL0                               0x00200000

    #define     BA_CtxPSER_MB_mtpL1                            0x0016
    #define     B16CtxPSER_MB_mtpL1                            0x0016
    #define   LSb32CtxPSER_MB_mtpL1                               22
    #define   LSb16CtxPSER_MB_mtpL1                               6
    #define       bCtxPSER_MB_mtpL1                            1
    #define   MSK32CtxPSER_MB_mtpL1                               0x00400000

    #define     BA_CtxPSER_MB_rIDX0                            0x0016
    #define     B16CtxPSER_MB_rIDX0                            0x0016
    #define   LSb32CtxPSER_MB_rIDX0                               23
    #define   LSb16CtxPSER_MB_rIDX0                               7
    #define       bCtxPSER_MB_rIDX0                            1
    #define   MSK32CtxPSER_MB_rIDX0                               0x00800000

    #define     BA_CtxPSER_MB_rIDX1                            0x0017
    #define     B16CtxPSER_MB_rIDX1                            0x0016
    #define   LSb32CtxPSER_MB_rIDX1                               24
    #define   LSb16CtxPSER_MB_rIDX1                               8
    #define       bCtxPSER_MB_rIDX1                            1
    #define   MSK32CtxPSER_MB_rIDX1                               0x01000000

    #define     BA_CtxPSER_MB_fieldMB                          0x0017
    #define     B16CtxPSER_MB_fieldMB                          0x0016
    #define   LSb32CtxPSER_MB_fieldMB                             25
    #define   LSb16CtxPSER_MB_fieldMB                             9
    #define       bCtxPSER_MB_fieldMB                          1
    #define   MSK32CtxPSER_MB_fieldMB                             0x02000000

    #define     BA_CtxPSER_MB_fieldPendMB                      0x0017
    #define     B16CtxPSER_MB_fieldPendMB                      0x0016
    #define   LSb32CtxPSER_MB_fieldPendMB                         26
    #define   LSb16CtxPSER_MB_fieldPendMB                         10
    #define       bCtxPSER_MB_fieldPendMB                      1
    #define   MSK32CtxPSER_MB_fieldPendMB                         0x04000000

    #define     BA_CtxPSER_MB_decSkip                          0x0017
    #define     B16CtxPSER_MB_decSkip                          0x0016
    #define   LSb32CtxPSER_MB_decSkip                             27
    #define   LSb16CtxPSER_MB_decSkip                             11
    #define       bCtxPSER_MB_decSkip                          1
    #define   MSK32CtxPSER_MB_decSkip                             0x08000000

    #define     BA_CtxPSER_MB_FirstInPair                      0x0017
    #define     B16CtxPSER_MB_FirstInPair                      0x0016
    #define   LSb32CtxPSER_MB_FirstInPair                         28
    #define   LSb16CtxPSER_MB_FirstInPair                         12
    #define       bCtxPSER_MB_FirstInPair                      1
    #define   MSK32CtxPSER_MB_FirstInPair                         0x10000000

    #define     BA_CtxPSER_MB_cond_dQP                         0x0017
    #define     B16CtxPSER_MB_cond_dQP                         0x0016
    #define   LSb32CtxPSER_MB_cond_dQP                            29
    #define   LSb16CtxPSER_MB_cond_dQP                            13
    #define       bCtxPSER_MB_cond_dQP                         1
    #define   MSK32CtxPSER_MB_cond_dQP                            0x20000000

    #define     BA_CtxPSER_MB_has_dQP                          0x0017
    #define     B16CtxPSER_MB_has_dQP                          0x0016
    #define   LSb32CtxPSER_MB_has_dQP                             30
    #define   LSb16CtxPSER_MB_has_dQP                             14
    #define       bCtxPSER_MB_has_dQP                          1
    #define   MSK32CtxPSER_MB_has_dQP                             0x40000000
    ///////////////////////////////////////////////////////////
    #define     RA_CtxPSER_MaxIDX                              0x0018

    #define     BA_CtxPSER_MaxIDX_L0                           0x0018
    #define     B16CtxPSER_MaxIDX_L0                           0x0018
    #define   LSb32CtxPSER_MaxIDX_L0                              0
    #define   LSb16CtxPSER_MaxIDX_L0                              0
    #define       bCtxPSER_MaxIDX_L0                           16
    #define   MSK32CtxPSER_MaxIDX_L0                              0x0000FFFF

    #define     BA_CtxPSER_MaxIDX_L1                           0x001A
    #define     B16CtxPSER_MaxIDX_L1                           0x001A
    #define   LSb32CtxPSER_MaxIDX_L1                              16
    #define   LSb16CtxPSER_MaxIDX_L1                              0
    #define       bCtxPSER_MaxIDX_L1                           16
    #define   MSK32CtxPSER_MaxIDX_L1                              0xFFFF0000

    #define     RA_CtxPSER_MaxIDX1                             0x001C

    #define     BA_CtxPSER_MaxIDX_fieldL0                      0x001C
    #define     B16CtxPSER_MaxIDX_fieldL0                      0x001C
    #define   LSb32CtxPSER_MaxIDX_fieldL0                         0
    #define   LSb16CtxPSER_MaxIDX_fieldL0                         0
    #define       bCtxPSER_MaxIDX_fieldL0                      16
    #define   MSK32CtxPSER_MaxIDX_fieldL0                         0x0000FFFF

    #define     BA_CtxPSER_MaxIDX_fieldL1                      0x001E
    #define     B16CtxPSER_MaxIDX_fieldL1                      0x001E
    #define   LSb32CtxPSER_MaxIDX_fieldL1                         16
    #define   LSb16CtxPSER_MaxIDX_fieldL1                         0
    #define       bCtxPSER_MaxIDX_fieldL1                      16
    #define   MSK32CtxPSER_MaxIDX_fieldL1                         0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_CtxPSER_IF                                  0x0020

    #define     BA_CtxPSER_IF_err_MBs                          0x0020
    #define     B16CtxPSER_IF_err_MBs                          0x0020
    #define   LSb32CtxPSER_IF_err_MBs                             0
    #define   LSb16CtxPSER_IF_err_MBs                             0
    #define       bCtxPSER_IF_err_MBs                          16
    #define   MSK32CtxPSER_IF_err_MBs                             0x0000FFFF

    #define     BA_CtxPSER_IF_is_sync                          0x0022
    #define     B16CtxPSER_IF_is_sync                          0x0022
    #define   LSb32CtxPSER_IF_is_sync                             16
    #define   LSb16CtxPSER_IF_is_sync                             0
    #define       bCtxPSER_IF_is_sync                          8
    #define   MSK32CtxPSER_IF_is_sync                             0x00FF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CtxPSER {
    ///////////////////////////////////////////////////////////
    #define   GET32CtxPSER_DEC_totalMBs(r32)                   _BFGET_(r32,15, 0)
    #define   SET32CtxPSER_DEC_totalMBs(r32,v)                 _BFSET_(r32,15, 0,v)
    #define   GET16CtxPSER_DEC_totalMBs(r16)                   _BFGET_(r16,15, 0)
    #define   SET16CtxPSER_DEC_totalMBs(r16,v)                 _BFSET_(r16,15, 0,v)

    #define   GET32CtxPSER_DEC_moreSkip(r32)                   _BFGET_(r32,31,16)
    #define   SET32CtxPSER_DEC_moreSkip(r32,v)                 _BFSET_(r32,31,16,v)
    #define   GET16CtxPSER_DEC_moreSkip(r16)                   _BFGET_(r16,15, 0)
    #define   SET16CtxPSER_DEC_moreSkip(r16,v)                 _BFSET_(r16,15, 0,v)

    #define     w32CtxPSER_DEC                                 {\
            UNSG32 uDEC_totalMBs                               : 16;\
            UNSG32 uDEC_moreSkip                               : 16;\
          }
    union { UNSG32 u32CtxPSER_DEC;
            struct w32CtxPSER_DEC;
          };
    #define   GET32CtxPSER_DEC_MBs(r32)                        _BFGET_(r32,15, 0)
    #define   SET32CtxPSER_DEC_MBs(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16CtxPSER_DEC_MBs(r16)                        _BFGET_(r16,15, 0)
    #define   SET16CtxPSER_DEC_MBs(r16,v)                      _BFSET_(r16,15, 0,v)

    #define   GET32CtxPSER_DEC_error(r32)                      _BFGET_(r32,23,16)
    #define   SET32CtxPSER_DEC_error(r32,v)                    _BFSET_(r32,23,16,v)
    #define   GET16CtxPSER_DEC_error(r16)                      _BFGET_(r16, 7, 0)
    #define   SET16CtxPSER_DEC_error(r16,v)                    _BFSET_(r16, 7, 0,v)

    #define   GET32CtxPSER_DEC_eos(r32)                        _BFGET_(r32,24,24)
    #define   SET32CtxPSER_DEC_eos(r32,v)                      _BFSET_(r32,24,24,v)
    #define   GET16CtxPSER_DEC_eos(r16)                        _BFGET_(r16, 8, 8)
    #define   SET16CtxPSER_DEC_eos(r16,v)                      _BFSET_(r16, 8, 8,v)

    #define   GET32CtxPSER_DEC_forceEND(r32)                   _BFGET_(r32,25,25)
    #define   SET32CtxPSER_DEC_forceEND(r32,v)                 _BFSET_(r32,25,25,v)
    #define   GET16CtxPSER_DEC_forceEND(r16)                   _BFGET_(r16, 9, 9)
    #define   SET16CtxPSER_DEC_forceEND(r16,v)                 _BFSET_(r16, 9, 9,v)

    #define     w32CtxPSER_DEC1                                {\
            UNSG32 uDEC_MBs                                    : 16;\
            UNSG32 uDEC_error                                  :  8;\
            UNSG32 uDEC_eos                                    :  1;\
            UNSG32 uDEC_forceEND                               :  1;\
            UNSG32 RSVDx4_b26                                  :  6;\
          }
    union { UNSG32 u32CtxPSER_DEC1;
            struct w32CtxPSER_DEC1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxPSER_SLICE_MBX(r32)                      _BFGET_(r32,15, 0)
    #define   SET32CtxPSER_SLICE_MBX(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16CtxPSER_SLICE_MBX(r16)                      _BFGET_(r16,15, 0)
    #define   SET16CtxPSER_SLICE_MBX(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32CtxPSER_SLICE_MBY(r32)                      _BFGET_(r32,31,16)
    #define   SET32CtxPSER_SLICE_MBY(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16CtxPSER_SLICE_MBY(r16)                      _BFGET_(r16,15, 0)
    #define   SET16CtxPSER_SLICE_MBY(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32CtxPSER_SLICE                               {\
            UNSG32 uSLICE_MBX                                  : 16;\
            UNSG32 uSLICE_MBY                                  : 16;\
          }
    union { UNSG32 u32CtxPSER_SLICE;
            struct w32CtxPSER_SLICE;
          };
    #define   GET32CtxPSER_SLICE_hMBs(r32)                     _BFGET_(r32,15, 0)
    #define   SET32CtxPSER_SLICE_hMBs(r32,v)                   _BFSET_(r32,15, 0,v)
    #define   GET16CtxPSER_SLICE_hMBs(r16)                     _BFGET_(r16,15, 0)
    #define   SET16CtxPSER_SLICE_hMBs(r16,v)                   _BFSET_(r16,15, 0,v)

    #define   GET32CtxPSER_SLICE_ID(r32)                       _BFGET_(r32,31,16)
    #define   SET32CtxPSER_SLICE_ID(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16CtxPSER_SLICE_ID(r16)                       _BFGET_(r16,15, 0)
    #define   SET16CtxPSER_SLICE_ID(r16,v)                     _BFSET_(r16,15, 0,v)

    #define     w32CtxPSER_SLICE1                              {\
            UNSG32 uSLICE_hMBs                                 : 16;\
            UNSG32 uSLICE_ID                                   : 16;\
          }
    union { UNSG32 u32CtxPSER_SLICE1;
            struct w32CtxPSER_SLICE1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxPSER_MB_QP(r32)                          _BFGET_(r32,15, 0)
    #define   SET32CtxPSER_MB_QP(r32,v)                        _BFSET_(r32,15, 0,v)
    #define   GET16CtxPSER_MB_QP(r16)                          _BFGET_(r16,15, 0)
    #define   SET16CtxPSER_MB_QP(r16,v)                        _BFSET_(r16,15, 0,v)

    #define   GET32CtxPSER_MB_QuDlt(r32)                       _BFGET_(r32,23,16)
    #define   SET32CtxPSER_MB_QuDlt(r32,v)                     _BFSET_(r32,23,16,v)
    #define   GET16CtxPSER_MB_QuDlt(r16)                       _BFGET_(r16, 7, 0)
    #define   SET16CtxPSER_MB_QuDlt(r16,v)                     _BFSET_(r16, 7, 0,v)

    #define   GET32CtxPSER_MB_QvDlt(r32)                       _BFGET_(r32,31,24)
    #define   SET32CtxPSER_MB_QvDlt(r32,v)                     _BFSET_(r32,31,24,v)
    #define   GET16CtxPSER_MB_QvDlt(r16)                       _BFGET_(r16,15, 8)
    #define   SET16CtxPSER_MB_QvDlt(r16,v)                     _BFSET_(r16,15, 8,v)

    #define     w32CtxPSER_MB                                  {\
            UNSG32 uMB_QP                                      : 16;\
            UNSG32 sMB_QuDlt                                   :  8;\
            UNSG32 sMB_QvDlt                                   :  8;\
          }
    union { UNSG32 u32CtxPSER_MB;
            struct w32CtxPSER_MB;
          };
    #define   GET32CtxPSER_MB_type(r32)                        _BFGET_(r32,15, 0)
    #define   SET32CtxPSER_MB_type(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16CtxPSER_MB_type(r16)                        _BFGET_(r16,15, 0)
    #define   SET16CtxPSER_MB_type(r16,v)                      _BFSET_(r16,15, 0,v)

    #define   GET32CtxPSER_MB_MBAFF(r32)                       _BFGET_(r32,16,16)
    #define   SET32CtxPSER_MB_MBAFF(r32,v)                     _BFSET_(r32,16,16,v)
    #define   GET16CtxPSER_MB_MBAFF(r16)                       _BFGET_(r16, 0, 0)
    #define   SET16CtxPSER_MB_MBAFF(r16,v)                     _BFSET_(r16, 0, 0,v)

    #define   GET32CtxPSER_MB_mono(r32)                        _BFGET_(r32,17,17)
    #define   SET32CtxPSER_MB_mono(r32,v)                      _BFSET_(r32,17,17,v)
    #define   GET16CtxPSER_MB_mono(r16)                        _BFGET_(r16, 1, 1)
    #define   SET16CtxPSER_MB_mono(r16,v)                      _BFSET_(r16, 1, 1,v)

    #define   GET32CtxPSER_MB_cabac(r32)                       _BFGET_(r32,18,18)
    #define   SET32CtxPSER_MB_cabac(r32,v)                     _BFSET_(r32,18,18,v)
    #define   GET16CtxPSER_MB_cabac(r16)                       _BFGET_(r16, 2, 2)
    #define   SET16CtxPSER_MB_cabac(r16,v)                     _BFSET_(r16, 2, 2,v)

    #define   GET32CtxPSER_MB_tsf8x8(r32)                      _BFGET_(r32,19,19)
    #define   SET32CtxPSER_MB_tsf8x8(r32,v)                    _BFSET_(r32,19,19,v)
    #define   GET16CtxPSER_MB_tsf8x8(r16)                      _BFGET_(r16, 3, 3)
    #define   SET16CtxPSER_MB_tsf8x8(r16,v)                    _BFSET_(r16, 3, 3,v)

    #define   GET32CtxPSER_MB_direct8x8(r32)                   _BFGET_(r32,20,20)
    #define   SET32CtxPSER_MB_direct8x8(r32,v)                 _BFSET_(r32,20,20,v)
    #define   GET16CtxPSER_MB_direct8x8(r16)                   _BFGET_(r16, 4, 4)
    #define   SET16CtxPSER_MB_direct8x8(r16,v)                 _BFSET_(r16, 4, 4,v)

    #define   GET32CtxPSER_MB_mtpL0(r32)                       _BFGET_(r32,21,21)
    #define   SET32CtxPSER_MB_mtpL0(r32,v)                     _BFSET_(r32,21,21,v)
    #define   GET16CtxPSER_MB_mtpL0(r16)                       _BFGET_(r16, 5, 5)
    #define   SET16CtxPSER_MB_mtpL0(r16,v)                     _BFSET_(r16, 5, 5,v)

    #define   GET32CtxPSER_MB_mtpL1(r32)                       _BFGET_(r32,22,22)
    #define   SET32CtxPSER_MB_mtpL1(r32,v)                     _BFSET_(r32,22,22,v)
    #define   GET16CtxPSER_MB_mtpL1(r16)                       _BFGET_(r16, 6, 6)
    #define   SET16CtxPSER_MB_mtpL1(r16,v)                     _BFSET_(r16, 6, 6,v)

    #define   GET32CtxPSER_MB_rIDX0(r32)                       _BFGET_(r32,23,23)
    #define   SET32CtxPSER_MB_rIDX0(r32,v)                     _BFSET_(r32,23,23,v)
    #define   GET16CtxPSER_MB_rIDX0(r16)                       _BFGET_(r16, 7, 7)
    #define   SET16CtxPSER_MB_rIDX0(r16,v)                     _BFSET_(r16, 7, 7,v)

    #define   GET32CtxPSER_MB_rIDX1(r32)                       _BFGET_(r32,24,24)
    #define   SET32CtxPSER_MB_rIDX1(r32,v)                     _BFSET_(r32,24,24,v)
    #define   GET16CtxPSER_MB_rIDX1(r16)                       _BFGET_(r16, 8, 8)
    #define   SET16CtxPSER_MB_rIDX1(r16,v)                     _BFSET_(r16, 8, 8,v)

    #define   GET32CtxPSER_MB_fieldMB(r32)                     _BFGET_(r32,25,25)
    #define   SET32CtxPSER_MB_fieldMB(r32,v)                   _BFSET_(r32,25,25,v)
    #define   GET16CtxPSER_MB_fieldMB(r16)                     _BFGET_(r16, 9, 9)
    #define   SET16CtxPSER_MB_fieldMB(r16,v)                   _BFSET_(r16, 9, 9,v)

    #define   GET32CtxPSER_MB_fieldPendMB(r32)                 _BFGET_(r32,26,26)
    #define   SET32CtxPSER_MB_fieldPendMB(r32,v)               _BFSET_(r32,26,26,v)
    #define   GET16CtxPSER_MB_fieldPendMB(r16)                 _BFGET_(r16,10,10)
    #define   SET16CtxPSER_MB_fieldPendMB(r16,v)               _BFSET_(r16,10,10,v)

    #define   GET32CtxPSER_MB_decSkip(r32)                     _BFGET_(r32,27,27)
    #define   SET32CtxPSER_MB_decSkip(r32,v)                   _BFSET_(r32,27,27,v)
    #define   GET16CtxPSER_MB_decSkip(r16)                     _BFGET_(r16,11,11)
    #define   SET16CtxPSER_MB_decSkip(r16,v)                   _BFSET_(r16,11,11,v)

    #define   GET32CtxPSER_MB_FirstInPair(r32)                 _BFGET_(r32,28,28)
    #define   SET32CtxPSER_MB_FirstInPair(r32,v)               _BFSET_(r32,28,28,v)
    #define   GET16CtxPSER_MB_FirstInPair(r16)                 _BFGET_(r16,12,12)
    #define   SET16CtxPSER_MB_FirstInPair(r16,v)               _BFSET_(r16,12,12,v)

    #define   GET32CtxPSER_MB_cond_dQP(r32)                    _BFGET_(r32,29,29)
    #define   SET32CtxPSER_MB_cond_dQP(r32,v)                  _BFSET_(r32,29,29,v)
    #define   GET16CtxPSER_MB_cond_dQP(r16)                    _BFGET_(r16,13,13)
    #define   SET16CtxPSER_MB_cond_dQP(r16,v)                  _BFSET_(r16,13,13,v)

    #define   GET32CtxPSER_MB_has_dQP(r32)                     _BFGET_(r32,30,30)
    #define   SET32CtxPSER_MB_has_dQP(r32,v)                   _BFSET_(r32,30,30,v)
    #define   GET16CtxPSER_MB_has_dQP(r16)                     _BFGET_(r16,14,14)
    #define   SET16CtxPSER_MB_has_dQP(r16,v)                   _BFSET_(r16,14,14,v)

    #define     w32CtxPSER_MB1                                 {\
            UNSG32 uMB_type                                    : 16;\
            UNSG32 uMB_MBAFF                                   :  1;\
            UNSG32 uMB_mono                                    :  1;\
            UNSG32 uMB_cabac                                   :  1;\
            UNSG32 uMB_tsf8x8                                  :  1;\
            UNSG32 uMB_direct8x8                               :  1;\
            UNSG32 uMB_mtpL0                                   :  1;\
            UNSG32 uMB_mtpL1                                   :  1;\
            UNSG32 uMB_rIDX0                                   :  1;\
            UNSG32 uMB_rIDX1                                   :  1;\
            UNSG32 uMB_fieldMB                                 :  1;\
            UNSG32 uMB_fieldPendMB                             :  1;\
            UNSG32 uMB_decSkip                                 :  1;\
            UNSG32 uMB_FirstInPair                             :  1;\
            UNSG32 uMB_cond_dQP                                :  1;\
            UNSG32 uMB_has_dQP                                 :  1;\
            UNSG32 RSVDx14_b31                                 :  1;\
          }
    union { UNSG32 u32CtxPSER_MB1;
            struct w32CtxPSER_MB1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxPSER_MaxIDX_L0(r32)                      _BFGET_(r32,15, 0)
    #define   SET32CtxPSER_MaxIDX_L0(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16CtxPSER_MaxIDX_L0(r16)                      _BFGET_(r16,15, 0)
    #define   SET16CtxPSER_MaxIDX_L0(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32CtxPSER_MaxIDX_L1(r32)                      _BFGET_(r32,31,16)
    #define   SET32CtxPSER_MaxIDX_L1(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16CtxPSER_MaxIDX_L1(r16)                      _BFGET_(r16,15, 0)
    #define   SET16CtxPSER_MaxIDX_L1(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32CtxPSER_MaxIDX                              {\
            UNSG32 uMaxIDX_L0                                  : 16;\
            UNSG32 uMaxIDX_L1                                  : 16;\
          }
    union { UNSG32 u32CtxPSER_MaxIDX;
            struct w32CtxPSER_MaxIDX;
          };
    #define   GET32CtxPSER_MaxIDX_fieldL0(r32)                 _BFGET_(r32,15, 0)
    #define   SET32CtxPSER_MaxIDX_fieldL0(r32,v)               _BFSET_(r32,15, 0,v)
    #define   GET16CtxPSER_MaxIDX_fieldL0(r16)                 _BFGET_(r16,15, 0)
    #define   SET16CtxPSER_MaxIDX_fieldL0(r16,v)               _BFSET_(r16,15, 0,v)

    #define   GET32CtxPSER_MaxIDX_fieldL1(r32)                 _BFGET_(r32,31,16)
    #define   SET32CtxPSER_MaxIDX_fieldL1(r32,v)               _BFSET_(r32,31,16,v)
    #define   GET16CtxPSER_MaxIDX_fieldL1(r16)                 _BFGET_(r16,15, 0)
    #define   SET16CtxPSER_MaxIDX_fieldL1(r16,v)               _BFSET_(r16,15, 0,v)

    #define     w32CtxPSER_MaxIDX1                             {\
            UNSG32 uMaxIDX_fieldL0                             : 16;\
            UNSG32 uMaxIDX_fieldL1                             : 16;\
          }
    union { UNSG32 u32CtxPSER_MaxIDX1;
            struct w32CtxPSER_MaxIDX1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxPSER_IF_err_MBs(r32)                     _BFGET_(r32,15, 0)
    #define   SET32CtxPSER_IF_err_MBs(r32,v)                   _BFSET_(r32,15, 0,v)
    #define   GET16CtxPSER_IF_err_MBs(r16)                     _BFGET_(r16,15, 0)
    #define   SET16CtxPSER_IF_err_MBs(r16,v)                   _BFSET_(r16,15, 0,v)

    #define   GET32CtxPSER_IF_is_sync(r32)                     _BFGET_(r32,23,16)
    #define   SET32CtxPSER_IF_is_sync(r32,v)                   _BFSET_(r32,23,16,v)
    #define   GET16CtxPSER_IF_is_sync(r16)                     _BFGET_(r16, 7, 0)
    #define   SET16CtxPSER_IF_is_sync(r16,v)                   _BFSET_(r16, 7, 0,v)

    #define     w32CtxPSER_IF                                  {\
            UNSG32 uIF_err_MBs                                 : 16;\
            UNSG32 uIF_is_sync                                 :  8;\
            UNSG32 RSVDx20_b24                                 :  8;\
          }
    union { UNSG32 u32CtxPSER_IF;
            struct w32CtxPSER_IF;
          };
    ///////////////////////////////////////////////////////////
    } SIE_CtxPSER;

    typedef union  T32CtxPSER_DEC
          { UNSG32 u32;
            struct w32CtxPSER_DEC;
                 } T32CtxPSER_DEC;
    typedef union  T32CtxPSER_DEC1
          { UNSG32 u32;
            struct w32CtxPSER_DEC1;
                 } T32CtxPSER_DEC1;
    typedef union  T32CtxPSER_SLICE
          { UNSG32 u32;
            struct w32CtxPSER_SLICE;
                 } T32CtxPSER_SLICE;
    typedef union  T32CtxPSER_SLICE1
          { UNSG32 u32;
            struct w32CtxPSER_SLICE1;
                 } T32CtxPSER_SLICE1;
    typedef union  T32CtxPSER_MB
          { UNSG32 u32;
            struct w32CtxPSER_MB;
                 } T32CtxPSER_MB;
    typedef union  T32CtxPSER_MB1
          { UNSG32 u32;
            struct w32CtxPSER_MB1;
                 } T32CtxPSER_MB1;
    typedef union  T32CtxPSER_MaxIDX
          { UNSG32 u32;
            struct w32CtxPSER_MaxIDX;
                 } T32CtxPSER_MaxIDX;
    typedef union  T32CtxPSER_MaxIDX1
          { UNSG32 u32;
            struct w32CtxPSER_MaxIDX1;
                 } T32CtxPSER_MaxIDX1;
    typedef union  T32CtxPSER_IF
          { UNSG32 u32;
            struct w32CtxPSER_IF;
                 } T32CtxPSER_IF;
    ///////////////////////////////////////////////////////////

    typedef union  TCtxPSER_DEC
          { UNSG32 u32[2];
            struct {
            struct w32CtxPSER_DEC;
            struct w32CtxPSER_DEC1;
                   };
                 } TCtxPSER_DEC;
    typedef union  TCtxPSER_SLICE
          { UNSG32 u32[2];
            struct {
            struct w32CtxPSER_SLICE;
            struct w32CtxPSER_SLICE1;
                   };
                 } TCtxPSER_SLICE;
    typedef union  TCtxPSER_MB
          { UNSG32 u32[2];
            struct {
            struct w32CtxPSER_MB;
            struct w32CtxPSER_MB1;
                   };
                 } TCtxPSER_MB;
    typedef union  TCtxPSER_MaxIDX
          { UNSG32 u32[2];
            struct {
            struct w32CtxPSER_MaxIDX;
            struct w32CtxPSER_MaxIDX1;
                   };
                 } TCtxPSER_MaxIDX;
    typedef union  TCtxPSER_IF
          { UNSG32 u32[1];
            struct {
            struct w32CtxPSER_IF;
                   };
                 } TCtxPSER_IF;

    ///////////////////////////////////////////////////////////
     SIGN32 CtxPSER_drvrd(SIE_CtxPSER *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CtxPSER_drvwr(SIE_CtxPSER *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CtxPSER_reset(SIE_CtxPSER *p);
     SIGN32 CtxPSER_cmp  (SIE_CtxPSER *p, SIE_CtxPSER *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CtxPSER_check(p,pie,pfx,hLOG) CtxPSER_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CtxPSER_print(p,    pfx,hLOG) CtxPSER_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CtxPSER
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE CtxSYNP                                  (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 prop                 (P)
///               %unsigned 16 start                     
///                                    ###
///                                    * Kick off syntax processor
///                                    ###
///               %unsigned 16 rBID                      
///                                    ###
///                                    * Current buffer ID, last 1b indicates access mode:
///                                    * 0: frame/progressive or top field
///                                    * 1: bottom field
///                                    ###
///     # 0x00004 prop1                
///               %unsigned 1  MBAFF                     
///                                    ###
///                                    * H.264: if MBAFF picture
///                                    ###
///               %unsigned 1  PicFLD                    
///                                    ###
///                                    * If field picture
///                                    ###
///               %unsigned 1  CoLocFLD                  
///                                    ###
///                                    * If co-located picture is field picture
///                                    ###
///               %unsigned 1  PairCoLoc                 
///                                    ###
///                                    * If to load co-located MB pair:
///                                    * = (MBAFF || PicFLD) && !CoLocFLD
///                                    ###
///               %unsigned 1  refCtx                    
///                                    ###
///                                    * If to output tCtx for future co-located use
///                                    ###
///               %unsigned 1  sliceB                    
///                                    ###
///                                    * If B-slice
///                                    ###
///               %unsigned 1  directEnb                 
///                                    ###
///                                    * If B-slice and direct mode enabled
///                                    ###
///               %unsigned 1  direct8x8                 
///                                    ###
///                                    * H.264: direct 8x8 inference flag
///                                    ###
///               %unsigned 1  directSpatial             
///                                    ###
///                                    * H.264: 0/1 for temporal/spatial direct mode
///                                    ###
///               %unsigned 1  loopFlt                   
///                                    ###
///                                    * If enable loop-filter
///                                    ###
///               %unsigned 1  LFInSlice                 
///                                    ###
///                                    * Loop-filter within slice
///                                    ###
///               %unsigned 1  CoLocFLDMB                
///                                    ###
///                                    * Run-time: if co-located MB is field MB
///                                    ###
///               %unsigned 1  CoLoc8x8                  
///                                    ###
///                                    * Run-time: if co-located MB has no sub-8x8
///                                    ###
///               %unsigned 1  CoLoc16x16                
///                                    ###
///                                    * Run-time: if co-located bottom MB has only 1 partition
///                                    ###
///               %unsigned 1  CoLoc8x8Btm               
///                                    ###
///                                    * Run-time: if co-located bottom MB has no sub-8x8
///                                    ###
///               %unsigned 1  CoLoc16x16Btm             
///                                    ###
///                                    * Run-time: if co-located MB has only 1 partition
///                                    ###
///               %unsigned 1  consIntra                 
///                                    ###
///                                    * H.264: if to constrain intra predictors
///                                    ###
///               %unsigned 1  btmCloser                 
///                                    ###
///                                    * H.264 direct mode: coloc is AFF and current is AFF and bottom POC is closer to curr POC
///                                    ###
///               %unsigned 1  tCtxDirect8x8             
///                                    ###
///                                    * H.264 direct mode:
///                                    * (frame_mbs_only_flag & direct_8x8_inference_flag)
///                                    ###
///               %unsigned 1  nFrmFld                   
///                                    ###
///                                    * H.264 direct mode: not Frame Field
///                                    * !(!MBAFF && !PicFLD && CoLocFLD)
///                                    ###
///               %unsigned 1  BtmFLD                    
///                                    ###
///                                    * Is current picture a bottom field
///                                    * PicFLD must be 1 if btmFLD is 1
///                                    ###
///               %%        11         # Stuffing bits...
///     @ 0x00008 tCtx                 (P)
///               %unsigned 32 CoLocMB                   
///                                    ###
///                                    * Co-located tCtx buffer (MB pointer) to input
///                                    * 0x20000000 | CoLoc.tCtx[MB]
///                                    ###
///     # 0x0000C tCtx1                
///               %unsigned 32 CurMB                     
///                                    ###
///                                    * Current tCtx buffer (MB pointer) to output
///                                    * 0x60000000 | Cur.tCtx[MB]
///                                    ###
///     # 0x00010 tCtx2                
///               %unsigned 32 CoLocPic                  
///                                    ###
///                                    * Co-located tCtx buffer to input
///                                    * 0x20000000 | CoLoc.tCtx
///                                    ###
///     # 0x00014 tCtx3                
///               %unsigned 32 CurPic                    
///                                    ###
///                                    * Current tCtx buffer to output
///                                    * 0x60000000 | Cur.tCtx
///                                    ###
///     @ 0x00018 SN                   (P)
///               %unsigned 16 parser                    
///                                    ###
///                                    * Running MB counter of stream parsing
///                                    * Maintained by stream parser:
///                                    * parser ++;
///                                    ###
///               %unsigned 16 synproc                   
///                                    ###
///                                    * Running MB counter of syntax processing
///                                    * Maintained by syntax processor:
///                                    * synproc ++; fifo.ctxIn.pop(); fifo.ctxOut.push();
///                                    ###
///     # 0x0001C SN1                  
///               %unsigned 16 ctxIn                     
///                                    ###
///                                    * Running MB counter of input MB context
///                                    * Maintained by syntax processor:
///                                    * = synproc + FLOOR( fifo.ctxIn.lvl() )
///                                    ###
///               %unsigned 16 ctxOut                    
///                                    ###
///                                    * Running MB counter of output MB context
///                                    * Maintained by syntax processor:
///                                    * = synproc - CEIL( fifo.ctxOut.lvl() )
///                                    ###
///     # 0x00020 SN2                  
///               %unsigned 16 P3MsgQ                    
///                                    ###
///                                    * Running MB counter of P3Msg (mbprop) output
///                                    * Maintained by syntax processor:
///                                    * = synproc - CEIL( fifo.P3Msg.lvl() )
///                                    ###
///               %unsigned 16 P3FopQ                    
///                                    ###
///                                    * Running MB counter of FOP output
///                                    ###
///     # 0x00024 SN3                  
///               %unsigned 16 VCMsgQ                    
///                                    ###
///                                    * Running counter of vCache message output
///                                    ###
///               %unsigned 16 P3TCQ                     
///                                    ###
///                                    * Running counter of non-zero 8x8 TC output
///                                    ###
///     # 0x00028 SN4                  
///               %unsigned 16 tCtxIn                    
///                                    ###
///                                    * Running counter of temporal context input
///                                    ###
///               %unsigned 16 tCtxOut                   
///                                    ###
///                                    * Running counter of temporal context output
///                                    ###
///     # 0x0002C SN5                  
///               %unsigned 16 cmdDS                     
///                                    ###
///                                    * Running counter of data streamer command
///                                    * Starting from 0xFF at each picture
///                                    ###
///               %unsigned 16 vcmDesc                   
///                                    ###
///                                    * Running counter of vcMSG descriptor bank
///                                    * Staring from 0xFFFF at each picture
///                                    * End of CtxSYNP
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      48B, bits:     373b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_CtxSYNP
#define h_CtxSYNP (){}

    #define     RA_CtxSYNP_prop                                0x0000

    #define     BA_CtxSYNP_prop_start                          0x0000
    #define     B16CtxSYNP_prop_start                          0x0000
    #define   LSb32CtxSYNP_prop_start                             0
    #define   LSb16CtxSYNP_prop_start                             0
    #define       bCtxSYNP_prop_start                          16
    #define   MSK32CtxSYNP_prop_start                             0x0000FFFF

    #define     BA_CtxSYNP_prop_rBID                           0x0002
    #define     B16CtxSYNP_prop_rBID                           0x0002
    #define   LSb32CtxSYNP_prop_rBID                              16
    #define   LSb16CtxSYNP_prop_rBID                              0
    #define       bCtxSYNP_prop_rBID                           16
    #define   MSK32CtxSYNP_prop_rBID                              0xFFFF0000

    #define     RA_CtxSYNP_prop1                               0x0004

    #define     BA_CtxSYNP_prop_MBAFF                          0x0004
    #define     B16CtxSYNP_prop_MBAFF                          0x0004
    #define   LSb32CtxSYNP_prop_MBAFF                             0
    #define   LSb16CtxSYNP_prop_MBAFF                             0
    #define       bCtxSYNP_prop_MBAFF                          1
    #define   MSK32CtxSYNP_prop_MBAFF                             0x00000001

    #define     BA_CtxSYNP_prop_PicFLD                         0x0004
    #define     B16CtxSYNP_prop_PicFLD                         0x0004
    #define   LSb32CtxSYNP_prop_PicFLD                            1
    #define   LSb16CtxSYNP_prop_PicFLD                            1
    #define       bCtxSYNP_prop_PicFLD                         1
    #define   MSK32CtxSYNP_prop_PicFLD                            0x00000002

    #define     BA_CtxSYNP_prop_CoLocFLD                       0x0004
    #define     B16CtxSYNP_prop_CoLocFLD                       0x0004
    #define   LSb32CtxSYNP_prop_CoLocFLD                          2
    #define   LSb16CtxSYNP_prop_CoLocFLD                          2
    #define       bCtxSYNP_prop_CoLocFLD                       1
    #define   MSK32CtxSYNP_prop_CoLocFLD                          0x00000004

    #define     BA_CtxSYNP_prop_PairCoLoc                      0x0004
    #define     B16CtxSYNP_prop_PairCoLoc                      0x0004
    #define   LSb32CtxSYNP_prop_PairCoLoc                         3
    #define   LSb16CtxSYNP_prop_PairCoLoc                         3
    #define       bCtxSYNP_prop_PairCoLoc                      1
    #define   MSK32CtxSYNP_prop_PairCoLoc                         0x00000008

    #define     BA_CtxSYNP_prop_refCtx                         0x0004
    #define     B16CtxSYNP_prop_refCtx                         0x0004
    #define   LSb32CtxSYNP_prop_refCtx                            4
    #define   LSb16CtxSYNP_prop_refCtx                            4
    #define       bCtxSYNP_prop_refCtx                         1
    #define   MSK32CtxSYNP_prop_refCtx                            0x00000010

    #define     BA_CtxSYNP_prop_sliceB                         0x0004
    #define     B16CtxSYNP_prop_sliceB                         0x0004
    #define   LSb32CtxSYNP_prop_sliceB                            5
    #define   LSb16CtxSYNP_prop_sliceB                            5
    #define       bCtxSYNP_prop_sliceB                         1
    #define   MSK32CtxSYNP_prop_sliceB                            0x00000020

    #define     BA_CtxSYNP_prop_directEnb                      0x0004
    #define     B16CtxSYNP_prop_directEnb                      0x0004
    #define   LSb32CtxSYNP_prop_directEnb                         6
    #define   LSb16CtxSYNP_prop_directEnb                         6
    #define       bCtxSYNP_prop_directEnb                      1
    #define   MSK32CtxSYNP_prop_directEnb                         0x00000040

    #define     BA_CtxSYNP_prop_direct8x8                      0x0004
    #define     B16CtxSYNP_prop_direct8x8                      0x0004
    #define   LSb32CtxSYNP_prop_direct8x8                         7
    #define   LSb16CtxSYNP_prop_direct8x8                         7
    #define       bCtxSYNP_prop_direct8x8                      1
    #define   MSK32CtxSYNP_prop_direct8x8                         0x00000080

    #define     BA_CtxSYNP_prop_directSpatial                  0x0005
    #define     B16CtxSYNP_prop_directSpatial                  0x0004
    #define   LSb32CtxSYNP_prop_directSpatial                     8
    #define   LSb16CtxSYNP_prop_directSpatial                     8
    #define       bCtxSYNP_prop_directSpatial                  1
    #define   MSK32CtxSYNP_prop_directSpatial                     0x00000100

    #define     BA_CtxSYNP_prop_loopFlt                        0x0005
    #define     B16CtxSYNP_prop_loopFlt                        0x0004
    #define   LSb32CtxSYNP_prop_loopFlt                           9
    #define   LSb16CtxSYNP_prop_loopFlt                           9
    #define       bCtxSYNP_prop_loopFlt                        1
    #define   MSK32CtxSYNP_prop_loopFlt                           0x00000200

    #define     BA_CtxSYNP_prop_LFInSlice                      0x0005
    #define     B16CtxSYNP_prop_LFInSlice                      0x0004
    #define   LSb32CtxSYNP_prop_LFInSlice                         10
    #define   LSb16CtxSYNP_prop_LFInSlice                         10
    #define       bCtxSYNP_prop_LFInSlice                      1
    #define   MSK32CtxSYNP_prop_LFInSlice                         0x00000400

    #define     BA_CtxSYNP_prop_CoLocFLDMB                     0x0005
    #define     B16CtxSYNP_prop_CoLocFLDMB                     0x0004
    #define   LSb32CtxSYNP_prop_CoLocFLDMB                        11
    #define   LSb16CtxSYNP_prop_CoLocFLDMB                        11
    #define       bCtxSYNP_prop_CoLocFLDMB                     1
    #define   MSK32CtxSYNP_prop_CoLocFLDMB                        0x00000800

    #define     BA_CtxSYNP_prop_CoLoc8x8                       0x0005
    #define     B16CtxSYNP_prop_CoLoc8x8                       0x0004
    #define   LSb32CtxSYNP_prop_CoLoc8x8                          12
    #define   LSb16CtxSYNP_prop_CoLoc8x8                          12
    #define       bCtxSYNP_prop_CoLoc8x8                       1
    #define   MSK32CtxSYNP_prop_CoLoc8x8                          0x00001000

    #define     BA_CtxSYNP_prop_CoLoc16x16                     0x0005
    #define     B16CtxSYNP_prop_CoLoc16x16                     0x0004
    #define   LSb32CtxSYNP_prop_CoLoc16x16                        13
    #define   LSb16CtxSYNP_prop_CoLoc16x16                        13
    #define       bCtxSYNP_prop_CoLoc16x16                     1
    #define   MSK32CtxSYNP_prop_CoLoc16x16                        0x00002000

    #define     BA_CtxSYNP_prop_CoLoc8x8Btm                    0x0005
    #define     B16CtxSYNP_prop_CoLoc8x8Btm                    0x0004
    #define   LSb32CtxSYNP_prop_CoLoc8x8Btm                       14
    #define   LSb16CtxSYNP_prop_CoLoc8x8Btm                       14
    #define       bCtxSYNP_prop_CoLoc8x8Btm                    1
    #define   MSK32CtxSYNP_prop_CoLoc8x8Btm                       0x00004000

    #define     BA_CtxSYNP_prop_CoLoc16x16Btm                  0x0005
    #define     B16CtxSYNP_prop_CoLoc16x16Btm                  0x0004
    #define   LSb32CtxSYNP_prop_CoLoc16x16Btm                     15
    #define   LSb16CtxSYNP_prop_CoLoc16x16Btm                     15
    #define       bCtxSYNP_prop_CoLoc16x16Btm                  1
    #define   MSK32CtxSYNP_prop_CoLoc16x16Btm                     0x00008000

    #define     BA_CtxSYNP_prop_consIntra                      0x0006
    #define     B16CtxSYNP_prop_consIntra                      0x0006
    #define   LSb32CtxSYNP_prop_consIntra                         16
    #define   LSb16CtxSYNP_prop_consIntra                         0
    #define       bCtxSYNP_prop_consIntra                      1
    #define   MSK32CtxSYNP_prop_consIntra                         0x00010000

    #define     BA_CtxSYNP_prop_btmCloser                      0x0006
    #define     B16CtxSYNP_prop_btmCloser                      0x0006
    #define   LSb32CtxSYNP_prop_btmCloser                         17
    #define   LSb16CtxSYNP_prop_btmCloser                         1
    #define       bCtxSYNP_prop_btmCloser                      1
    #define   MSK32CtxSYNP_prop_btmCloser                         0x00020000

    #define     BA_CtxSYNP_prop_tCtxDirect8x8                  0x0006
    #define     B16CtxSYNP_prop_tCtxDirect8x8                  0x0006
    #define   LSb32CtxSYNP_prop_tCtxDirect8x8                     18
    #define   LSb16CtxSYNP_prop_tCtxDirect8x8                     2
    #define       bCtxSYNP_prop_tCtxDirect8x8                  1
    #define   MSK32CtxSYNP_prop_tCtxDirect8x8                     0x00040000

    #define     BA_CtxSYNP_prop_nFrmFld                        0x0006
    #define     B16CtxSYNP_prop_nFrmFld                        0x0006
    #define   LSb32CtxSYNP_prop_nFrmFld                           19
    #define   LSb16CtxSYNP_prop_nFrmFld                           3
    #define       bCtxSYNP_prop_nFrmFld                        1
    #define   MSK32CtxSYNP_prop_nFrmFld                           0x00080000

    #define     BA_CtxSYNP_prop_BtmFLD                         0x0006
    #define     B16CtxSYNP_prop_BtmFLD                         0x0006
    #define   LSb32CtxSYNP_prop_BtmFLD                            20
    #define   LSb16CtxSYNP_prop_BtmFLD                            4
    #define       bCtxSYNP_prop_BtmFLD                         1
    #define   MSK32CtxSYNP_prop_BtmFLD                            0x00100000
    ///////////////////////////////////////////////////////////
    #define     RA_CtxSYNP_tCtx                                0x0008

    #define     BA_CtxSYNP_tCtx_CoLocMB                        0x0008
    #define     B16CtxSYNP_tCtx_CoLocMB                        0x0008
    #define   LSb32CtxSYNP_tCtx_CoLocMB                           0
    #define   LSb16CtxSYNP_tCtx_CoLocMB                           0
    #define       bCtxSYNP_tCtx_CoLocMB                        32
    #define   MSK32CtxSYNP_tCtx_CoLocMB                           0xFFFFFFFF

    #define     RA_CtxSYNP_tCtx1                               0x000C

    #define     BA_CtxSYNP_tCtx_CurMB                          0x000C
    #define     B16CtxSYNP_tCtx_CurMB                          0x000C
    #define   LSb32CtxSYNP_tCtx_CurMB                             0
    #define   LSb16CtxSYNP_tCtx_CurMB                             0
    #define       bCtxSYNP_tCtx_CurMB                          32
    #define   MSK32CtxSYNP_tCtx_CurMB                             0xFFFFFFFF

    #define     RA_CtxSYNP_tCtx2                               0x0010

    #define     BA_CtxSYNP_tCtx_CoLocPic                       0x0010
    #define     B16CtxSYNP_tCtx_CoLocPic                       0x0010
    #define   LSb32CtxSYNP_tCtx_CoLocPic                          0
    #define   LSb16CtxSYNP_tCtx_CoLocPic                          0
    #define       bCtxSYNP_tCtx_CoLocPic                       32
    #define   MSK32CtxSYNP_tCtx_CoLocPic                          0xFFFFFFFF

    #define     RA_CtxSYNP_tCtx3                               0x0014

    #define     BA_CtxSYNP_tCtx_CurPic                         0x0014
    #define     B16CtxSYNP_tCtx_CurPic                         0x0014
    #define   LSb32CtxSYNP_tCtx_CurPic                            0
    #define   LSb16CtxSYNP_tCtx_CurPic                            0
    #define       bCtxSYNP_tCtx_CurPic                         32
    #define   MSK32CtxSYNP_tCtx_CurPic                            0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_CtxSYNP_SN                                  0x0018

    #define     BA_CtxSYNP_SN_parser                           0x0018
    #define     B16CtxSYNP_SN_parser                           0x0018
    #define   LSb32CtxSYNP_SN_parser                              0
    #define   LSb16CtxSYNP_SN_parser                              0
    #define       bCtxSYNP_SN_parser                           16
    #define   MSK32CtxSYNP_SN_parser                              0x0000FFFF

    #define     BA_CtxSYNP_SN_synproc                          0x001A
    #define     B16CtxSYNP_SN_synproc                          0x001A
    #define   LSb32CtxSYNP_SN_synproc                             16
    #define   LSb16CtxSYNP_SN_synproc                             0
    #define       bCtxSYNP_SN_synproc                          16
    #define   MSK32CtxSYNP_SN_synproc                             0xFFFF0000

    #define     RA_CtxSYNP_SN1                                 0x001C

    #define     BA_CtxSYNP_SN_ctxIn                            0x001C
    #define     B16CtxSYNP_SN_ctxIn                            0x001C
    #define   LSb32CtxSYNP_SN_ctxIn                               0
    #define   LSb16CtxSYNP_SN_ctxIn                               0
    #define       bCtxSYNP_SN_ctxIn                            16
    #define   MSK32CtxSYNP_SN_ctxIn                               0x0000FFFF

    #define     BA_CtxSYNP_SN_ctxOut                           0x001E
    #define     B16CtxSYNP_SN_ctxOut                           0x001E
    #define   LSb32CtxSYNP_SN_ctxOut                              16
    #define   LSb16CtxSYNP_SN_ctxOut                              0
    #define       bCtxSYNP_SN_ctxOut                           16
    #define   MSK32CtxSYNP_SN_ctxOut                              0xFFFF0000

    #define     RA_CtxSYNP_SN2                                 0x0020

    #define     BA_CtxSYNP_SN_P3MsgQ                           0x0020
    #define     B16CtxSYNP_SN_P3MsgQ                           0x0020
    #define   LSb32CtxSYNP_SN_P3MsgQ                              0
    #define   LSb16CtxSYNP_SN_P3MsgQ                              0
    #define       bCtxSYNP_SN_P3MsgQ                           16
    #define   MSK32CtxSYNP_SN_P3MsgQ                              0x0000FFFF

    #define     BA_CtxSYNP_SN_P3FopQ                           0x0022
    #define     B16CtxSYNP_SN_P3FopQ                           0x0022
    #define   LSb32CtxSYNP_SN_P3FopQ                              16
    #define   LSb16CtxSYNP_SN_P3FopQ                              0
    #define       bCtxSYNP_SN_P3FopQ                           16
    #define   MSK32CtxSYNP_SN_P3FopQ                              0xFFFF0000

    #define     RA_CtxSYNP_SN3                                 0x0024

    #define     BA_CtxSYNP_SN_VCMsgQ                           0x0024
    #define     B16CtxSYNP_SN_VCMsgQ                           0x0024
    #define   LSb32CtxSYNP_SN_VCMsgQ                              0
    #define   LSb16CtxSYNP_SN_VCMsgQ                              0
    #define       bCtxSYNP_SN_VCMsgQ                           16
    #define   MSK32CtxSYNP_SN_VCMsgQ                              0x0000FFFF

    #define     BA_CtxSYNP_SN_P3TCQ                            0x0026
    #define     B16CtxSYNP_SN_P3TCQ                            0x0026
    #define   LSb32CtxSYNP_SN_P3TCQ                               16
    #define   LSb16CtxSYNP_SN_P3TCQ                               0
    #define       bCtxSYNP_SN_P3TCQ                            16
    #define   MSK32CtxSYNP_SN_P3TCQ                               0xFFFF0000

    #define     RA_CtxSYNP_SN4                                 0x0028

    #define     BA_CtxSYNP_SN_tCtxIn                           0x0028
    #define     B16CtxSYNP_SN_tCtxIn                           0x0028
    #define   LSb32CtxSYNP_SN_tCtxIn                              0
    #define   LSb16CtxSYNP_SN_tCtxIn                              0
    #define       bCtxSYNP_SN_tCtxIn                           16
    #define   MSK32CtxSYNP_SN_tCtxIn                              0x0000FFFF

    #define     BA_CtxSYNP_SN_tCtxOut                          0x002A
    #define     B16CtxSYNP_SN_tCtxOut                          0x002A
    #define   LSb32CtxSYNP_SN_tCtxOut                             16
    #define   LSb16CtxSYNP_SN_tCtxOut                             0
    #define       bCtxSYNP_SN_tCtxOut                          16
    #define   MSK32CtxSYNP_SN_tCtxOut                             0xFFFF0000

    #define     RA_CtxSYNP_SN5                                 0x002C

    #define     BA_CtxSYNP_SN_cmdDS                            0x002C
    #define     B16CtxSYNP_SN_cmdDS                            0x002C
    #define   LSb32CtxSYNP_SN_cmdDS                               0
    #define   LSb16CtxSYNP_SN_cmdDS                               0
    #define       bCtxSYNP_SN_cmdDS                            16
    #define   MSK32CtxSYNP_SN_cmdDS                               0x0000FFFF

    #define     BA_CtxSYNP_SN_vcmDesc                          0x002E
    #define     B16CtxSYNP_SN_vcmDesc                          0x002E
    #define   LSb32CtxSYNP_SN_vcmDesc                             16
    #define   LSb16CtxSYNP_SN_vcmDesc                             0
    #define       bCtxSYNP_SN_vcmDesc                          16
    #define   MSK32CtxSYNP_SN_vcmDesc                             0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_CtxSYNP {
    ///////////////////////////////////////////////////////////
    #define   GET32CtxSYNP_prop_start(r32)                     _BFGET_(r32,15, 0)
    #define   SET32CtxSYNP_prop_start(r32,v)                   _BFSET_(r32,15, 0,v)
    #define   GET16CtxSYNP_prop_start(r16)                     _BFGET_(r16,15, 0)
    #define   SET16CtxSYNP_prop_start(r16,v)                   _BFSET_(r16,15, 0,v)

    #define   GET32CtxSYNP_prop_rBID(r32)                      _BFGET_(r32,31,16)
    #define   SET32CtxSYNP_prop_rBID(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16CtxSYNP_prop_rBID(r16)                      _BFGET_(r16,15, 0)
    #define   SET16CtxSYNP_prop_rBID(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32CtxSYNP_prop                                {\
            UNSG32 uprop_start                                 : 16;\
            UNSG32 uprop_rBID                                  : 16;\
          }
    union { UNSG32 u32CtxSYNP_prop;
            struct w32CtxSYNP_prop;
          };
    #define   GET32CtxSYNP_prop_MBAFF(r32)                     _BFGET_(r32, 0, 0)
    #define   SET32CtxSYNP_prop_MBAFF(r32,v)                   _BFSET_(r32, 0, 0,v)
    #define   GET16CtxSYNP_prop_MBAFF(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16CtxSYNP_prop_MBAFF(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define   GET32CtxSYNP_prop_PicFLD(r32)                    _BFGET_(r32, 1, 1)
    #define   SET32CtxSYNP_prop_PicFLD(r32,v)                  _BFSET_(r32, 1, 1,v)
    #define   GET16CtxSYNP_prop_PicFLD(r16)                    _BFGET_(r16, 1, 1)
    #define   SET16CtxSYNP_prop_PicFLD(r16,v)                  _BFSET_(r16, 1, 1,v)

    #define   GET32CtxSYNP_prop_CoLocFLD(r32)                  _BFGET_(r32, 2, 2)
    #define   SET32CtxSYNP_prop_CoLocFLD(r32,v)                _BFSET_(r32, 2, 2,v)
    #define   GET16CtxSYNP_prop_CoLocFLD(r16)                  _BFGET_(r16, 2, 2)
    #define   SET16CtxSYNP_prop_CoLocFLD(r16,v)                _BFSET_(r16, 2, 2,v)

    #define   GET32CtxSYNP_prop_PairCoLoc(r32)                 _BFGET_(r32, 3, 3)
    #define   SET32CtxSYNP_prop_PairCoLoc(r32,v)               _BFSET_(r32, 3, 3,v)
    #define   GET16CtxSYNP_prop_PairCoLoc(r16)                 _BFGET_(r16, 3, 3)
    #define   SET16CtxSYNP_prop_PairCoLoc(r16,v)               _BFSET_(r16, 3, 3,v)

    #define   GET32CtxSYNP_prop_refCtx(r32)                    _BFGET_(r32, 4, 4)
    #define   SET32CtxSYNP_prop_refCtx(r32,v)                  _BFSET_(r32, 4, 4,v)
    #define   GET16CtxSYNP_prop_refCtx(r16)                    _BFGET_(r16, 4, 4)
    #define   SET16CtxSYNP_prop_refCtx(r16,v)                  _BFSET_(r16, 4, 4,v)

    #define   GET32CtxSYNP_prop_sliceB(r32)                    _BFGET_(r32, 5, 5)
    #define   SET32CtxSYNP_prop_sliceB(r32,v)                  _BFSET_(r32, 5, 5,v)
    #define   GET16CtxSYNP_prop_sliceB(r16)                    _BFGET_(r16, 5, 5)
    #define   SET16CtxSYNP_prop_sliceB(r16,v)                  _BFSET_(r16, 5, 5,v)

    #define   GET32CtxSYNP_prop_directEnb(r32)                 _BFGET_(r32, 6, 6)
    #define   SET32CtxSYNP_prop_directEnb(r32,v)               _BFSET_(r32, 6, 6,v)
    #define   GET16CtxSYNP_prop_directEnb(r16)                 _BFGET_(r16, 6, 6)
    #define   SET16CtxSYNP_prop_directEnb(r16,v)               _BFSET_(r16, 6, 6,v)

    #define   GET32CtxSYNP_prop_direct8x8(r32)                 _BFGET_(r32, 7, 7)
    #define   SET32CtxSYNP_prop_direct8x8(r32,v)               _BFSET_(r32, 7, 7,v)
    #define   GET16CtxSYNP_prop_direct8x8(r16)                 _BFGET_(r16, 7, 7)
    #define   SET16CtxSYNP_prop_direct8x8(r16,v)               _BFSET_(r16, 7, 7,v)

    #define   GET32CtxSYNP_prop_directSpatial(r32)             _BFGET_(r32, 8, 8)
    #define   SET32CtxSYNP_prop_directSpatial(r32,v)           _BFSET_(r32, 8, 8,v)
    #define   GET16CtxSYNP_prop_directSpatial(r16)             _BFGET_(r16, 8, 8)
    #define   SET16CtxSYNP_prop_directSpatial(r16,v)           _BFSET_(r16, 8, 8,v)

    #define   GET32CtxSYNP_prop_loopFlt(r32)                   _BFGET_(r32, 9, 9)
    #define   SET32CtxSYNP_prop_loopFlt(r32,v)                 _BFSET_(r32, 9, 9,v)
    #define   GET16CtxSYNP_prop_loopFlt(r16)                   _BFGET_(r16, 9, 9)
    #define   SET16CtxSYNP_prop_loopFlt(r16,v)                 _BFSET_(r16, 9, 9,v)

    #define   GET32CtxSYNP_prop_LFInSlice(r32)                 _BFGET_(r32,10,10)
    #define   SET32CtxSYNP_prop_LFInSlice(r32,v)               _BFSET_(r32,10,10,v)
    #define   GET16CtxSYNP_prop_LFInSlice(r16)                 _BFGET_(r16,10,10)
    #define   SET16CtxSYNP_prop_LFInSlice(r16,v)               _BFSET_(r16,10,10,v)

    #define   GET32CtxSYNP_prop_CoLocFLDMB(r32)                _BFGET_(r32,11,11)
    #define   SET32CtxSYNP_prop_CoLocFLDMB(r32,v)              _BFSET_(r32,11,11,v)
    #define   GET16CtxSYNP_prop_CoLocFLDMB(r16)                _BFGET_(r16,11,11)
    #define   SET16CtxSYNP_prop_CoLocFLDMB(r16,v)              _BFSET_(r16,11,11,v)

    #define   GET32CtxSYNP_prop_CoLoc8x8(r32)                  _BFGET_(r32,12,12)
    #define   SET32CtxSYNP_prop_CoLoc8x8(r32,v)                _BFSET_(r32,12,12,v)
    #define   GET16CtxSYNP_prop_CoLoc8x8(r16)                  _BFGET_(r16,12,12)
    #define   SET16CtxSYNP_prop_CoLoc8x8(r16,v)                _BFSET_(r16,12,12,v)

    #define   GET32CtxSYNP_prop_CoLoc16x16(r32)                _BFGET_(r32,13,13)
    #define   SET32CtxSYNP_prop_CoLoc16x16(r32,v)              _BFSET_(r32,13,13,v)
    #define   GET16CtxSYNP_prop_CoLoc16x16(r16)                _BFGET_(r16,13,13)
    #define   SET16CtxSYNP_prop_CoLoc16x16(r16,v)              _BFSET_(r16,13,13,v)

    #define   GET32CtxSYNP_prop_CoLoc8x8Btm(r32)               _BFGET_(r32,14,14)
    #define   SET32CtxSYNP_prop_CoLoc8x8Btm(r32,v)             _BFSET_(r32,14,14,v)
    #define   GET16CtxSYNP_prop_CoLoc8x8Btm(r16)               _BFGET_(r16,14,14)
    #define   SET16CtxSYNP_prop_CoLoc8x8Btm(r16,v)             _BFSET_(r16,14,14,v)

    #define   GET32CtxSYNP_prop_CoLoc16x16Btm(r32)             _BFGET_(r32,15,15)
    #define   SET32CtxSYNP_prop_CoLoc16x16Btm(r32,v)           _BFSET_(r32,15,15,v)
    #define   GET16CtxSYNP_prop_CoLoc16x16Btm(r16)             _BFGET_(r16,15,15)
    #define   SET16CtxSYNP_prop_CoLoc16x16Btm(r16,v)           _BFSET_(r16,15,15,v)

    #define   GET32CtxSYNP_prop_consIntra(r32)                 _BFGET_(r32,16,16)
    #define   SET32CtxSYNP_prop_consIntra(r32,v)               _BFSET_(r32,16,16,v)
    #define   GET16CtxSYNP_prop_consIntra(r16)                 _BFGET_(r16, 0, 0)
    #define   SET16CtxSYNP_prop_consIntra(r16,v)               _BFSET_(r16, 0, 0,v)

    #define   GET32CtxSYNP_prop_btmCloser(r32)                 _BFGET_(r32,17,17)
    #define   SET32CtxSYNP_prop_btmCloser(r32,v)               _BFSET_(r32,17,17,v)
    #define   GET16CtxSYNP_prop_btmCloser(r16)                 _BFGET_(r16, 1, 1)
    #define   SET16CtxSYNP_prop_btmCloser(r16,v)               _BFSET_(r16, 1, 1,v)

    #define   GET32CtxSYNP_prop_tCtxDirect8x8(r32)             _BFGET_(r32,18,18)
    #define   SET32CtxSYNP_prop_tCtxDirect8x8(r32,v)           _BFSET_(r32,18,18,v)
    #define   GET16CtxSYNP_prop_tCtxDirect8x8(r16)             _BFGET_(r16, 2, 2)
    #define   SET16CtxSYNP_prop_tCtxDirect8x8(r16,v)           _BFSET_(r16, 2, 2,v)

    #define   GET32CtxSYNP_prop_nFrmFld(r32)                   _BFGET_(r32,19,19)
    #define   SET32CtxSYNP_prop_nFrmFld(r32,v)                 _BFSET_(r32,19,19,v)
    #define   GET16CtxSYNP_prop_nFrmFld(r16)                   _BFGET_(r16, 3, 3)
    #define   SET16CtxSYNP_prop_nFrmFld(r16,v)                 _BFSET_(r16, 3, 3,v)

    #define   GET32CtxSYNP_prop_BtmFLD(r32)                    _BFGET_(r32,20,20)
    #define   SET32CtxSYNP_prop_BtmFLD(r32,v)                  _BFSET_(r32,20,20,v)
    #define   GET16CtxSYNP_prop_BtmFLD(r16)                    _BFGET_(r16, 4, 4)
    #define   SET16CtxSYNP_prop_BtmFLD(r16,v)                  _BFSET_(r16, 4, 4,v)

    #define     w32CtxSYNP_prop1                               {\
            UNSG32 uprop_MBAFF                                 :  1;\
            UNSG32 uprop_PicFLD                                :  1;\
            UNSG32 uprop_CoLocFLD                              :  1;\
            UNSG32 uprop_PairCoLoc                             :  1;\
            UNSG32 uprop_refCtx                                :  1;\
            UNSG32 uprop_sliceB                                :  1;\
            UNSG32 uprop_directEnb                             :  1;\
            UNSG32 uprop_direct8x8                             :  1;\
            UNSG32 uprop_directSpatial                         :  1;\
            UNSG32 uprop_loopFlt                               :  1;\
            UNSG32 uprop_LFInSlice                             :  1;\
            UNSG32 uprop_CoLocFLDMB                            :  1;\
            UNSG32 uprop_CoLoc8x8                              :  1;\
            UNSG32 uprop_CoLoc16x16                            :  1;\
            UNSG32 uprop_CoLoc8x8Btm                           :  1;\
            UNSG32 uprop_CoLoc16x16Btm                         :  1;\
            UNSG32 uprop_consIntra                             :  1;\
            UNSG32 uprop_btmCloser                             :  1;\
            UNSG32 uprop_tCtxDirect8x8                         :  1;\
            UNSG32 uprop_nFrmFld                               :  1;\
            UNSG32 uprop_BtmFLD                                :  1;\
            UNSG32 RSVDx4_b21                                  : 11;\
          }
    union { UNSG32 u32CtxSYNP_prop1;
            struct w32CtxSYNP_prop1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxSYNP_tCtx_CoLocMB(r32)                   _BFGET_(r32,31, 0)
    #define   SET32CtxSYNP_tCtx_CoLocMB(r32,v)                 _BFSET_(r32,31, 0,v)

    #define     w32CtxSYNP_tCtx                                {\
            UNSG32 utCtx_CoLocMB                               : 32;\
          }
    union { UNSG32 u32CtxSYNP_tCtx;
            struct w32CtxSYNP_tCtx;
          };
    #define   GET32CtxSYNP_tCtx_CurMB(r32)                     _BFGET_(r32,31, 0)
    #define   SET32CtxSYNP_tCtx_CurMB(r32,v)                   _BFSET_(r32,31, 0,v)

    #define     w32CtxSYNP_tCtx1                               {\
            UNSG32 utCtx_CurMB                                 : 32;\
          }
    union { UNSG32 u32CtxSYNP_tCtx1;
            struct w32CtxSYNP_tCtx1;
          };
    #define   GET32CtxSYNP_tCtx_CoLocPic(r32)                  _BFGET_(r32,31, 0)
    #define   SET32CtxSYNP_tCtx_CoLocPic(r32,v)                _BFSET_(r32,31, 0,v)

    #define     w32CtxSYNP_tCtx2                               {\
            UNSG32 utCtx_CoLocPic                              : 32;\
          }
    union { UNSG32 u32CtxSYNP_tCtx2;
            struct w32CtxSYNP_tCtx2;
          };
    #define   GET32CtxSYNP_tCtx_CurPic(r32)                    _BFGET_(r32,31, 0)
    #define   SET32CtxSYNP_tCtx_CurPic(r32,v)                  _BFSET_(r32,31, 0,v)

    #define     w32CtxSYNP_tCtx3                               {\
            UNSG32 utCtx_CurPic                                : 32;\
          }
    union { UNSG32 u32CtxSYNP_tCtx3;
            struct w32CtxSYNP_tCtx3;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32CtxSYNP_SN_parser(r32)                      _BFGET_(r32,15, 0)
    #define   SET32CtxSYNP_SN_parser(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16CtxSYNP_SN_parser(r16)                      _BFGET_(r16,15, 0)
    #define   SET16CtxSYNP_SN_parser(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32CtxSYNP_SN_synproc(r32)                     _BFGET_(r32,31,16)
    #define   SET32CtxSYNP_SN_synproc(r32,v)                   _BFSET_(r32,31,16,v)
    #define   GET16CtxSYNP_SN_synproc(r16)                     _BFGET_(r16,15, 0)
    #define   SET16CtxSYNP_SN_synproc(r16,v)                   _BFSET_(r16,15, 0,v)

    #define     w32CtxSYNP_SN                                  {\
            UNSG32 uSN_parser                                  : 16;\
            UNSG32 uSN_synproc                                 : 16;\
          }
    union { UNSG32 u32CtxSYNP_SN;
            struct w32CtxSYNP_SN;
          };
    #define   GET32CtxSYNP_SN_ctxIn(r32)                       _BFGET_(r32,15, 0)
    #define   SET32CtxSYNP_SN_ctxIn(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16CtxSYNP_SN_ctxIn(r16)                       _BFGET_(r16,15, 0)
    #define   SET16CtxSYNP_SN_ctxIn(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32CtxSYNP_SN_ctxOut(r32)                      _BFGET_(r32,31,16)
    #define   SET32CtxSYNP_SN_ctxOut(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16CtxSYNP_SN_ctxOut(r16)                      _BFGET_(r16,15, 0)
    #define   SET16CtxSYNP_SN_ctxOut(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32CtxSYNP_SN1                                 {\
            UNSG32 uSN_ctxIn                                   : 16;\
            UNSG32 uSN_ctxOut                                  : 16;\
          }
    union { UNSG32 u32CtxSYNP_SN1;
            struct w32CtxSYNP_SN1;
          };
    #define   GET32CtxSYNP_SN_P3MsgQ(r32)                      _BFGET_(r32,15, 0)
    #define   SET32CtxSYNP_SN_P3MsgQ(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16CtxSYNP_SN_P3MsgQ(r16)                      _BFGET_(r16,15, 0)
    #define   SET16CtxSYNP_SN_P3MsgQ(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32CtxSYNP_SN_P3FopQ(r32)                      _BFGET_(r32,31,16)
    #define   SET32CtxSYNP_SN_P3FopQ(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16CtxSYNP_SN_P3FopQ(r16)                      _BFGET_(r16,15, 0)
    #define   SET16CtxSYNP_SN_P3FopQ(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32CtxSYNP_SN2                                 {\
            UNSG32 uSN_P3MsgQ                                  : 16;\
            UNSG32 uSN_P3FopQ                                  : 16;\
          }
    union { UNSG32 u32CtxSYNP_SN2;
            struct w32CtxSYNP_SN2;
          };
    #define   GET32CtxSYNP_SN_VCMsgQ(r32)                      _BFGET_(r32,15, 0)
    #define   SET32CtxSYNP_SN_VCMsgQ(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16CtxSYNP_SN_VCMsgQ(r16)                      _BFGET_(r16,15, 0)
    #define   SET16CtxSYNP_SN_VCMsgQ(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32CtxSYNP_SN_P3TCQ(r32)                       _BFGET_(r32,31,16)
    #define   SET32CtxSYNP_SN_P3TCQ(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16CtxSYNP_SN_P3TCQ(r16)                       _BFGET_(r16,15, 0)
    #define   SET16CtxSYNP_SN_P3TCQ(r16,v)                     _BFSET_(r16,15, 0,v)

    #define     w32CtxSYNP_SN3                                 {\
            UNSG32 uSN_VCMsgQ                                  : 16;\
            UNSG32 uSN_P3TCQ                                   : 16;\
          }
    union { UNSG32 u32CtxSYNP_SN3;
            struct w32CtxSYNP_SN3;
          };
    #define   GET32CtxSYNP_SN_tCtxIn(r32)                      _BFGET_(r32,15, 0)
    #define   SET32CtxSYNP_SN_tCtxIn(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16CtxSYNP_SN_tCtxIn(r16)                      _BFGET_(r16,15, 0)
    #define   SET16CtxSYNP_SN_tCtxIn(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32CtxSYNP_SN_tCtxOut(r32)                     _BFGET_(r32,31,16)
    #define   SET32CtxSYNP_SN_tCtxOut(r32,v)                   _BFSET_(r32,31,16,v)
    #define   GET16CtxSYNP_SN_tCtxOut(r16)                     _BFGET_(r16,15, 0)
    #define   SET16CtxSYNP_SN_tCtxOut(r16,v)                   _BFSET_(r16,15, 0,v)

    #define     w32CtxSYNP_SN4                                 {\
            UNSG32 uSN_tCtxIn                                  : 16;\
            UNSG32 uSN_tCtxOut                                 : 16;\
          }
    union { UNSG32 u32CtxSYNP_SN4;
            struct w32CtxSYNP_SN4;
          };
    #define   GET32CtxSYNP_SN_cmdDS(r32)                       _BFGET_(r32,15, 0)
    #define   SET32CtxSYNP_SN_cmdDS(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16CtxSYNP_SN_cmdDS(r16)                       _BFGET_(r16,15, 0)
    #define   SET16CtxSYNP_SN_cmdDS(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32CtxSYNP_SN_vcmDesc(r32)                     _BFGET_(r32,31,16)
    #define   SET32CtxSYNP_SN_vcmDesc(r32,v)                   _BFSET_(r32,31,16,v)
    #define   GET16CtxSYNP_SN_vcmDesc(r16)                     _BFGET_(r16,15, 0)
    #define   SET16CtxSYNP_SN_vcmDesc(r16,v)                   _BFSET_(r16,15, 0,v)

    #define     w32CtxSYNP_SN5                                 {\
            UNSG32 uSN_cmdDS                                   : 16;\
            UNSG32 uSN_vcmDesc                                 : 16;\
          }
    union { UNSG32 u32CtxSYNP_SN5;
            struct w32CtxSYNP_SN5;
          };
    ///////////////////////////////////////////////////////////
    } SIE_CtxSYNP;

    typedef union  T32CtxSYNP_prop
          { UNSG32 u32;
            struct w32CtxSYNP_prop;
                 } T32CtxSYNP_prop;
    typedef union  T32CtxSYNP_prop1
          { UNSG32 u32;
            struct w32CtxSYNP_prop1;
                 } T32CtxSYNP_prop1;
    typedef union  T32CtxSYNP_tCtx
          { UNSG32 u32;
            struct w32CtxSYNP_tCtx;
                 } T32CtxSYNP_tCtx;
    typedef union  T32CtxSYNP_tCtx1
          { UNSG32 u32;
            struct w32CtxSYNP_tCtx1;
                 } T32CtxSYNP_tCtx1;
    typedef union  T32CtxSYNP_tCtx2
          { UNSG32 u32;
            struct w32CtxSYNP_tCtx2;
                 } T32CtxSYNP_tCtx2;
    typedef union  T32CtxSYNP_tCtx3
          { UNSG32 u32;
            struct w32CtxSYNP_tCtx3;
                 } T32CtxSYNP_tCtx3;
    typedef union  T32CtxSYNP_SN
          { UNSG32 u32;
            struct w32CtxSYNP_SN;
                 } T32CtxSYNP_SN;
    typedef union  T32CtxSYNP_SN1
          { UNSG32 u32;
            struct w32CtxSYNP_SN1;
                 } T32CtxSYNP_SN1;
    typedef union  T32CtxSYNP_SN2
          { UNSG32 u32;
            struct w32CtxSYNP_SN2;
                 } T32CtxSYNP_SN2;
    typedef union  T32CtxSYNP_SN3
          { UNSG32 u32;
            struct w32CtxSYNP_SN3;
                 } T32CtxSYNP_SN3;
    typedef union  T32CtxSYNP_SN4
          { UNSG32 u32;
            struct w32CtxSYNP_SN4;
                 } T32CtxSYNP_SN4;
    typedef union  T32CtxSYNP_SN5
          { UNSG32 u32;
            struct w32CtxSYNP_SN5;
                 } T32CtxSYNP_SN5;
    ///////////////////////////////////////////////////////////

    typedef union  TCtxSYNP_prop
          { UNSG32 u32[2];
            struct {
            struct w32CtxSYNP_prop;
            struct w32CtxSYNP_prop1;
                   };
                 } TCtxSYNP_prop;
    typedef union  TCtxSYNP_tCtx
          { UNSG32 u32[4];
            struct {
            struct w32CtxSYNP_tCtx;
            struct w32CtxSYNP_tCtx1;
            struct w32CtxSYNP_tCtx2;
            struct w32CtxSYNP_tCtx3;
                   };
                 } TCtxSYNP_tCtx;
    typedef union  TCtxSYNP_SN
          { UNSG32 u32[6];
            struct {
            struct w32CtxSYNP_SN;
            struct w32CtxSYNP_SN1;
            struct w32CtxSYNP_SN2;
            struct w32CtxSYNP_SN3;
            struct w32CtxSYNP_SN4;
            struct w32CtxSYNP_SN5;
                   };
                 } TCtxSYNP_SN;

    ///////////////////////////////////////////////////////////
     SIGN32 CtxSYNP_drvrd(SIE_CtxSYNP *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 CtxSYNP_drvwr(SIE_CtxSYNP *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void CtxSYNP_reset(SIE_CtxSYNP *p);
     SIGN32 CtxSYNP_cmp  (SIE_CtxSYNP *p, SIE_CtxSYNP *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define CtxSYNP_check(p,pie,pfx,hLOG) CtxSYNP_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define CtxSYNP_print(p,    pfx,hLOG) CtxSYNP_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: CtxSYNP
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE VSLocal                                  (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 zero                 (P)
///               %unsigned 16 reg_0i                    
///               %unsigned 16 reg_1i                    
///     # 0x00004 zero1                
///               %unsigned 16 reg_2i                    
///               %unsigned 16 reg_3i                    
///                                    ###
///                                    * Holding zeros
///                                    ###
///     @ 0x00008 desc                 (P)
///               %unsigned 16 A                         
///                                    ###
///                                    * Descriptor for mbA
///                                    ###
///               %unsigned 16 B                         
///                                    ###
///                                    * Descriptor for mbB
///                                    ###
///     # 0x0000C desc1                
///               %unsigned 16 X                         
///                                    ###
///                                    * Descriptor for mbX (current)
///                                    ###
///               %unsigned 16 D                         
///                                    ###
///                                    * Descriptor for mbD
///                                    ###
///     @ 0x00010 cur                  (P)
///               %unsigned 16 neighbor                  
///                                    ###
///                                    * Parameter to setup Neighbor Look-up HW:
///                                    * {MBPROP[0][15:3], bank[2:0]}
///                                    ###
///               %unsigned 16 bank                      
///                                    ###
///                                    * Current bank
///                                    ###
///     # 0x00014 cur1                 
///               %unsigned 16 prop                      
///                                    ###
///                                    * Current MBPROP pointer
///                                    ###
///               %unsigned 16 pending                   
///                                    ###
///                                    * Temporally holding variable for pending change
///                                    ###
///     @ 0x00018 ctx                  (P)
///               %unsigned 16 v_0i                      
///               %unsigned 16 v_1i                      
///     # 0x0001C ctx1                 
///               %unsigned 16 v_2i                      
///               %unsigned 16 v_3i                      
///                                    ###
///                                    * FCTX/BCTX template
///                                    ###
///     @ 0x00020 slice                (P)
///               %unsigned 16 v_0i                      
///               %unsigned 16 v_1i                      
///     # 0x00024 slice1               
///               %unsigned 16 v_2i                      
///               %unsigned 16 v_3i                      
///                                    ###
///                                    * Local variables for sliceData()
///                                    ###
///     @ 0x00028 mb                   (P)
///               %unsigned 16 v_0i                      
///               %unsigned 16 v_1i                      
///     # 0x0002C mb1                  
///               %unsigned 16 v_2i                      
///               %unsigned 16 v_3i                      
///                                    ###
///                                    * Local variables for macroblockLayer()
///                                    ###
///     @ 0x00030 pred                 (P)
///               %unsigned 16 v_0i                      
///               %unsigned 16 v_1i                      
///     # 0x00034 pred1                
///               %unsigned 16 v_2i                      
///               %unsigned 16 v_3i                      
///                                    ###
///                                    * Local variables for mb/submbPred()
///                                    ###
///     @ 0x00038 residual             (P)
///               %unsigned 16 v_0i                      
///               %unsigned 16 v_1i                      
///     # 0x0003C residual1            
///               %unsigned 16 v_2i                      
///               %unsigned 16 v_3i                      
///                                    ###
///                                    * Local variables for residual()
///                                    ###
///     @ 0x00040 tmp                  (P)
///               %unsigned 16 v_0i                      
///               %unsigned 16 v_1i                      
///     # 0x00044 tmp1                 
///               %unsigned 16 v_2i                      
///               %unsigned 16 v_3i                      
///     # 0x00048 tmp2                 
///               %unsigned 16 v_4i                      
///               %unsigned 16 v_5i                      
///     # 0x0004C tmp3                 
///               %unsigned 16 v_6i                      
///               %unsigned 16 v_7i                      
///     # 0x00050 tmp4                 
///               %unsigned 16 v_8i                      
///               %unsigned 16 v_9i                      
///     # 0x00054 tmp5                 
///               %unsigned 16 v_10i                     
///               %unsigned 16 v_11i                     
///     # 0x00058 tmp6                 
///               %unsigned 16 v_12i                     
///               %unsigned 16 v_13i                     
///     # 0x0005C tmp7                 
///               %unsigned 16 v_14i                     
///               %unsigned 16 v_15i                     
///     # 0x00060 tmp8                 
///               %unsigned 16 v_16i                     
///               %unsigned 16 v_17i                     
///     # 0x00064 tmp9                 
///               %unsigned 16 v_18i                     
///               %unsigned 16 v_19i                     
///     # 0x00068 tmp10                
///               %unsigned 16 v_20i                     
///               %unsigned 16 v_21i                     
///     # 0x0006C tmp11                
///               %unsigned 16 v_22i                     
///               %unsigned 16 v_23i                     
///     # 0x00070 tmp12                
///               %unsigned 16 v_24i                     
///               %unsigned 16 v_25i                     
///     # 0x00074 tmp13                
///               %unsigned 16 v_26i                     
///               %unsigned 16 v_27i                     
///     # 0x00078 tmp14                
///               %unsigned 16 v_28i                     
///               %unsigned 16 v_29i                     
///     # 0x0007C tmp15                
///               %unsigned 16 v_30i                     
///               %unsigned 16 v_31i                     
///                                    ###
///                                    * Temporal values
///                                    * End of VSLocal
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     128B, bits:    1024b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_VSLocal
#define h_VSLocal (){}

    #define     RA_VSLocal_zero                                0x0000

    #define     BA_VSLocal_zero_reg_0i                         0x0000
    #define     B16VSLocal_zero_reg_0i                         0x0000
    #define   LSb32VSLocal_zero_reg_0i                            0
    #define   LSb16VSLocal_zero_reg_0i                            0
    #define       bVSLocal_zero_reg_0i                         16
    #define   MSK32VSLocal_zero_reg_0i                            0x0000FFFF

    #define     BA_VSLocal_zero_reg_1i                         0x0002
    #define     B16VSLocal_zero_reg_1i                         0x0002
    #define   LSb32VSLocal_zero_reg_1i                            16
    #define   LSb16VSLocal_zero_reg_1i                            0
    #define       bVSLocal_zero_reg_1i                         16
    #define   MSK32VSLocal_zero_reg_1i                            0xFFFF0000

    #define     RA_VSLocal_zero1                               0x0004

    #define     BA_VSLocal_zero_reg_2i                         0x0004
    #define     B16VSLocal_zero_reg_2i                         0x0004
    #define   LSb32VSLocal_zero_reg_2i                            0
    #define   LSb16VSLocal_zero_reg_2i                            0
    #define       bVSLocal_zero_reg_2i                         16
    #define   MSK32VSLocal_zero_reg_2i                            0x0000FFFF

    #define     BA_VSLocal_zero_reg_3i                         0x0006
    #define     B16VSLocal_zero_reg_3i                         0x0006
    #define   LSb32VSLocal_zero_reg_3i                            16
    #define   LSb16VSLocal_zero_reg_3i                            0
    #define       bVSLocal_zero_reg_3i                         16
    #define   MSK32VSLocal_zero_reg_3i                            0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_VSLocal_desc                                0x0008

    #define     BA_VSLocal_desc_A                              0x0008
    #define     B16VSLocal_desc_A                              0x0008
    #define   LSb32VSLocal_desc_A                                 0
    #define   LSb16VSLocal_desc_A                                 0
    #define       bVSLocal_desc_A                              16
    #define   MSK32VSLocal_desc_A                                 0x0000FFFF

    #define     BA_VSLocal_desc_B                              0x000A
    #define     B16VSLocal_desc_B                              0x000A
    #define   LSb32VSLocal_desc_B                                 16
    #define   LSb16VSLocal_desc_B                                 0
    #define       bVSLocal_desc_B                              16
    #define   MSK32VSLocal_desc_B                                 0xFFFF0000

    #define     RA_VSLocal_desc1                               0x000C

    #define     BA_VSLocal_desc_X                              0x000C
    #define     B16VSLocal_desc_X                              0x000C
    #define   LSb32VSLocal_desc_X                                 0
    #define   LSb16VSLocal_desc_X                                 0
    #define       bVSLocal_desc_X                              16
    #define   MSK32VSLocal_desc_X                                 0x0000FFFF

    #define     BA_VSLocal_desc_D                              0x000E
    #define     B16VSLocal_desc_D                              0x000E
    #define   LSb32VSLocal_desc_D                                 16
    #define   LSb16VSLocal_desc_D                                 0
    #define       bVSLocal_desc_D                              16
    #define   MSK32VSLocal_desc_D                                 0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_VSLocal_cur                                 0x0010

    #define     BA_VSLocal_cur_neighbor                        0x0010
    #define     B16VSLocal_cur_neighbor                        0x0010
    #define   LSb32VSLocal_cur_neighbor                           0
    #define   LSb16VSLocal_cur_neighbor                           0
    #define       bVSLocal_cur_neighbor                        16
    #define   MSK32VSLocal_cur_neighbor                           0x0000FFFF

    #define     BA_VSLocal_cur_bank                            0x0012
    #define     B16VSLocal_cur_bank                            0x0012
    #define   LSb32VSLocal_cur_bank                               16
    #define   LSb16VSLocal_cur_bank                               0
    #define       bVSLocal_cur_bank                            16
    #define   MSK32VSLocal_cur_bank                               0xFFFF0000

    #define     RA_VSLocal_cur1                                0x0014

    #define     BA_VSLocal_cur_prop                            0x0014
    #define     B16VSLocal_cur_prop                            0x0014
    #define   LSb32VSLocal_cur_prop                               0
    #define   LSb16VSLocal_cur_prop                               0
    #define       bVSLocal_cur_prop                            16
    #define   MSK32VSLocal_cur_prop                               0x0000FFFF

    #define     BA_VSLocal_cur_pending                         0x0016
    #define     B16VSLocal_cur_pending                         0x0016
    #define   LSb32VSLocal_cur_pending                            16
    #define   LSb16VSLocal_cur_pending                            0
    #define       bVSLocal_cur_pending                         16
    #define   MSK32VSLocal_cur_pending                            0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_VSLocal_ctx                                 0x0018

    #define     BA_VSLocal_ctx_v_0i                            0x0018
    #define     B16VSLocal_ctx_v_0i                            0x0018
    #define   LSb32VSLocal_ctx_v_0i                               0
    #define   LSb16VSLocal_ctx_v_0i                               0
    #define       bVSLocal_ctx_v_0i                            16
    #define   MSK32VSLocal_ctx_v_0i                               0x0000FFFF

    #define     BA_VSLocal_ctx_v_1i                            0x001A
    #define     B16VSLocal_ctx_v_1i                            0x001A
    #define   LSb32VSLocal_ctx_v_1i                               16
    #define   LSb16VSLocal_ctx_v_1i                               0
    #define       bVSLocal_ctx_v_1i                            16
    #define   MSK32VSLocal_ctx_v_1i                               0xFFFF0000

    #define     RA_VSLocal_ctx1                                0x001C

    #define     BA_VSLocal_ctx_v_2i                            0x001C
    #define     B16VSLocal_ctx_v_2i                            0x001C
    #define   LSb32VSLocal_ctx_v_2i                               0
    #define   LSb16VSLocal_ctx_v_2i                               0
    #define       bVSLocal_ctx_v_2i                            16
    #define   MSK32VSLocal_ctx_v_2i                               0x0000FFFF

    #define     BA_VSLocal_ctx_v_3i                            0x001E
    #define     B16VSLocal_ctx_v_3i                            0x001E
    #define   LSb32VSLocal_ctx_v_3i                               16
    #define   LSb16VSLocal_ctx_v_3i                               0
    #define       bVSLocal_ctx_v_3i                            16
    #define   MSK32VSLocal_ctx_v_3i                               0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_VSLocal_slice                               0x0020

    #define     BA_VSLocal_slice_v_0i                          0x0020
    #define     B16VSLocal_slice_v_0i                          0x0020
    #define   LSb32VSLocal_slice_v_0i                             0
    #define   LSb16VSLocal_slice_v_0i                             0
    #define       bVSLocal_slice_v_0i                          16
    #define   MSK32VSLocal_slice_v_0i                             0x0000FFFF

    #define     BA_VSLocal_slice_v_1i                          0x0022
    #define     B16VSLocal_slice_v_1i                          0x0022
    #define   LSb32VSLocal_slice_v_1i                             16
    #define   LSb16VSLocal_slice_v_1i                             0
    #define       bVSLocal_slice_v_1i                          16
    #define   MSK32VSLocal_slice_v_1i                             0xFFFF0000

    #define     RA_VSLocal_slice1                              0x0024

    #define     BA_VSLocal_slice_v_2i                          0x0024
    #define     B16VSLocal_slice_v_2i                          0x0024
    #define   LSb32VSLocal_slice_v_2i                             0
    #define   LSb16VSLocal_slice_v_2i                             0
    #define       bVSLocal_slice_v_2i                          16
    #define   MSK32VSLocal_slice_v_2i                             0x0000FFFF

    #define     BA_VSLocal_slice_v_3i                          0x0026
    #define     B16VSLocal_slice_v_3i                          0x0026
    #define   LSb32VSLocal_slice_v_3i                             16
    #define   LSb16VSLocal_slice_v_3i                             0
    #define       bVSLocal_slice_v_3i                          16
    #define   MSK32VSLocal_slice_v_3i                             0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_VSLocal_mb                                  0x0028

    #define     BA_VSLocal_mb_v_0i                             0x0028
    #define     B16VSLocal_mb_v_0i                             0x0028
    #define   LSb32VSLocal_mb_v_0i                                0
    #define   LSb16VSLocal_mb_v_0i                                0
    #define       bVSLocal_mb_v_0i                             16
    #define   MSK32VSLocal_mb_v_0i                                0x0000FFFF

    #define     BA_VSLocal_mb_v_1i                             0x002A
    #define     B16VSLocal_mb_v_1i                             0x002A
    #define   LSb32VSLocal_mb_v_1i                                16
    #define   LSb16VSLocal_mb_v_1i                                0
    #define       bVSLocal_mb_v_1i                             16
    #define   MSK32VSLocal_mb_v_1i                                0xFFFF0000

    #define     RA_VSLocal_mb1                                 0x002C

    #define     BA_VSLocal_mb_v_2i                             0x002C
    #define     B16VSLocal_mb_v_2i                             0x002C
    #define   LSb32VSLocal_mb_v_2i                                0
    #define   LSb16VSLocal_mb_v_2i                                0
    #define       bVSLocal_mb_v_2i                             16
    #define   MSK32VSLocal_mb_v_2i                                0x0000FFFF

    #define     BA_VSLocal_mb_v_3i                             0x002E
    #define     B16VSLocal_mb_v_3i                             0x002E
    #define   LSb32VSLocal_mb_v_3i                                16
    #define   LSb16VSLocal_mb_v_3i                                0
    #define       bVSLocal_mb_v_3i                             16
    #define   MSK32VSLocal_mb_v_3i                                0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_VSLocal_pred                                0x0030

    #define     BA_VSLocal_pred_v_0i                           0x0030
    #define     B16VSLocal_pred_v_0i                           0x0030
    #define   LSb32VSLocal_pred_v_0i                              0
    #define   LSb16VSLocal_pred_v_0i                              0
    #define       bVSLocal_pred_v_0i                           16
    #define   MSK32VSLocal_pred_v_0i                              0x0000FFFF

    #define     BA_VSLocal_pred_v_1i                           0x0032
    #define     B16VSLocal_pred_v_1i                           0x0032
    #define   LSb32VSLocal_pred_v_1i                              16
    #define   LSb16VSLocal_pred_v_1i                              0
    #define       bVSLocal_pred_v_1i                           16
    #define   MSK32VSLocal_pred_v_1i                              0xFFFF0000

    #define     RA_VSLocal_pred1                               0x0034

    #define     BA_VSLocal_pred_v_2i                           0x0034
    #define     B16VSLocal_pred_v_2i                           0x0034
    #define   LSb32VSLocal_pred_v_2i                              0
    #define   LSb16VSLocal_pred_v_2i                              0
    #define       bVSLocal_pred_v_2i                           16
    #define   MSK32VSLocal_pred_v_2i                              0x0000FFFF

    #define     BA_VSLocal_pred_v_3i                           0x0036
    #define     B16VSLocal_pred_v_3i                           0x0036
    #define   LSb32VSLocal_pred_v_3i                              16
    #define   LSb16VSLocal_pred_v_3i                              0
    #define       bVSLocal_pred_v_3i                           16
    #define   MSK32VSLocal_pred_v_3i                              0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_VSLocal_residual                            0x0038

    #define     BA_VSLocal_residual_v_0i                       0x0038
    #define     B16VSLocal_residual_v_0i                       0x0038
    #define   LSb32VSLocal_residual_v_0i                          0
    #define   LSb16VSLocal_residual_v_0i                          0
    #define       bVSLocal_residual_v_0i                       16
    #define   MSK32VSLocal_residual_v_0i                          0x0000FFFF

    #define     BA_VSLocal_residual_v_1i                       0x003A
    #define     B16VSLocal_residual_v_1i                       0x003A
    #define   LSb32VSLocal_residual_v_1i                          16
    #define   LSb16VSLocal_residual_v_1i                          0
    #define       bVSLocal_residual_v_1i                       16
    #define   MSK32VSLocal_residual_v_1i                          0xFFFF0000

    #define     RA_VSLocal_residual1                           0x003C

    #define     BA_VSLocal_residual_v_2i                       0x003C
    #define     B16VSLocal_residual_v_2i                       0x003C
    #define   LSb32VSLocal_residual_v_2i                          0
    #define   LSb16VSLocal_residual_v_2i                          0
    #define       bVSLocal_residual_v_2i                       16
    #define   MSK32VSLocal_residual_v_2i                          0x0000FFFF

    #define     BA_VSLocal_residual_v_3i                       0x003E
    #define     B16VSLocal_residual_v_3i                       0x003E
    #define   LSb32VSLocal_residual_v_3i                          16
    #define   LSb16VSLocal_residual_v_3i                          0
    #define       bVSLocal_residual_v_3i                       16
    #define   MSK32VSLocal_residual_v_3i                          0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_VSLocal_tmp                                 0x0040

    #define     BA_VSLocal_tmp_v_0i                            0x0040
    #define     B16VSLocal_tmp_v_0i                            0x0040
    #define   LSb32VSLocal_tmp_v_0i                               0
    #define   LSb16VSLocal_tmp_v_0i                               0
    #define       bVSLocal_tmp_v_0i                            16
    #define   MSK32VSLocal_tmp_v_0i                               0x0000FFFF

    #define     BA_VSLocal_tmp_v_1i                            0x0042
    #define     B16VSLocal_tmp_v_1i                            0x0042
    #define   LSb32VSLocal_tmp_v_1i                               16
    #define   LSb16VSLocal_tmp_v_1i                               0
    #define       bVSLocal_tmp_v_1i                            16
    #define   MSK32VSLocal_tmp_v_1i                               0xFFFF0000

    #define     RA_VSLocal_tmp1                                0x0044

    #define     BA_VSLocal_tmp_v_2i                            0x0044
    #define     B16VSLocal_tmp_v_2i                            0x0044
    #define   LSb32VSLocal_tmp_v_2i                               0
    #define   LSb16VSLocal_tmp_v_2i                               0
    #define       bVSLocal_tmp_v_2i                            16
    #define   MSK32VSLocal_tmp_v_2i                               0x0000FFFF

    #define     BA_VSLocal_tmp_v_3i                            0x0046
    #define     B16VSLocal_tmp_v_3i                            0x0046
    #define   LSb32VSLocal_tmp_v_3i                               16
    #define   LSb16VSLocal_tmp_v_3i                               0
    #define       bVSLocal_tmp_v_3i                            16
    #define   MSK32VSLocal_tmp_v_3i                               0xFFFF0000

    #define     RA_VSLocal_tmp2                                0x0048

    #define     BA_VSLocal_tmp_v_4i                            0x0048
    #define     B16VSLocal_tmp_v_4i                            0x0048
    #define   LSb32VSLocal_tmp_v_4i                               0
    #define   LSb16VSLocal_tmp_v_4i                               0
    #define       bVSLocal_tmp_v_4i                            16
    #define   MSK32VSLocal_tmp_v_4i                               0x0000FFFF

    #define     BA_VSLocal_tmp_v_5i                            0x004A
    #define     B16VSLocal_tmp_v_5i                            0x004A
    #define   LSb32VSLocal_tmp_v_5i                               16
    #define   LSb16VSLocal_tmp_v_5i                               0
    #define       bVSLocal_tmp_v_5i                            16
    #define   MSK32VSLocal_tmp_v_5i                               0xFFFF0000

    #define     RA_VSLocal_tmp3                                0x004C

    #define     BA_VSLocal_tmp_v_6i                            0x004C
    #define     B16VSLocal_tmp_v_6i                            0x004C
    #define   LSb32VSLocal_tmp_v_6i                               0
    #define   LSb16VSLocal_tmp_v_6i                               0
    #define       bVSLocal_tmp_v_6i                            16
    #define   MSK32VSLocal_tmp_v_6i                               0x0000FFFF

    #define     BA_VSLocal_tmp_v_7i                            0x004E
    #define     B16VSLocal_tmp_v_7i                            0x004E
    #define   LSb32VSLocal_tmp_v_7i                               16
    #define   LSb16VSLocal_tmp_v_7i                               0
    #define       bVSLocal_tmp_v_7i                            16
    #define   MSK32VSLocal_tmp_v_7i                               0xFFFF0000

    #define     RA_VSLocal_tmp4                                0x0050

    #define     BA_VSLocal_tmp_v_8i                            0x0050
    #define     B16VSLocal_tmp_v_8i                            0x0050
    #define   LSb32VSLocal_tmp_v_8i                               0
    #define   LSb16VSLocal_tmp_v_8i                               0
    #define       bVSLocal_tmp_v_8i                            16
    #define   MSK32VSLocal_tmp_v_8i                               0x0000FFFF

    #define     BA_VSLocal_tmp_v_9i                            0x0052
    #define     B16VSLocal_tmp_v_9i                            0x0052
    #define   LSb32VSLocal_tmp_v_9i                               16
    #define   LSb16VSLocal_tmp_v_9i                               0
    #define       bVSLocal_tmp_v_9i                            16
    #define   MSK32VSLocal_tmp_v_9i                               0xFFFF0000

    #define     RA_VSLocal_tmp5                                0x0054

    #define     BA_VSLocal_tmp_v_10i                           0x0054
    #define     B16VSLocal_tmp_v_10i                           0x0054
    #define   LSb32VSLocal_tmp_v_10i                              0
    #define   LSb16VSLocal_tmp_v_10i                              0
    #define       bVSLocal_tmp_v_10i                           16
    #define   MSK32VSLocal_tmp_v_10i                              0x0000FFFF

    #define     BA_VSLocal_tmp_v_11i                           0x0056
    #define     B16VSLocal_tmp_v_11i                           0x0056
    #define   LSb32VSLocal_tmp_v_11i                              16
    #define   LSb16VSLocal_tmp_v_11i                              0
    #define       bVSLocal_tmp_v_11i                           16
    #define   MSK32VSLocal_tmp_v_11i                              0xFFFF0000

    #define     RA_VSLocal_tmp6                                0x0058

    #define     BA_VSLocal_tmp_v_12i                           0x0058
    #define     B16VSLocal_tmp_v_12i                           0x0058
    #define   LSb32VSLocal_tmp_v_12i                              0
    #define   LSb16VSLocal_tmp_v_12i                              0
    #define       bVSLocal_tmp_v_12i                           16
    #define   MSK32VSLocal_tmp_v_12i                              0x0000FFFF

    #define     BA_VSLocal_tmp_v_13i                           0x005A
    #define     B16VSLocal_tmp_v_13i                           0x005A
    #define   LSb32VSLocal_tmp_v_13i                              16
    #define   LSb16VSLocal_tmp_v_13i                              0
    #define       bVSLocal_tmp_v_13i                           16
    #define   MSK32VSLocal_tmp_v_13i                              0xFFFF0000

    #define     RA_VSLocal_tmp7                                0x005C

    #define     BA_VSLocal_tmp_v_14i                           0x005C
    #define     B16VSLocal_tmp_v_14i                           0x005C
    #define   LSb32VSLocal_tmp_v_14i                              0
    #define   LSb16VSLocal_tmp_v_14i                              0
    #define       bVSLocal_tmp_v_14i                           16
    #define   MSK32VSLocal_tmp_v_14i                              0x0000FFFF

    #define     BA_VSLocal_tmp_v_15i                           0x005E
    #define     B16VSLocal_tmp_v_15i                           0x005E
    #define   LSb32VSLocal_tmp_v_15i                              16
    #define   LSb16VSLocal_tmp_v_15i                              0
    #define       bVSLocal_tmp_v_15i                           16
    #define   MSK32VSLocal_tmp_v_15i                              0xFFFF0000

    #define     RA_VSLocal_tmp8                                0x0060

    #define     BA_VSLocal_tmp_v_16i                           0x0060
    #define     B16VSLocal_tmp_v_16i                           0x0060
    #define   LSb32VSLocal_tmp_v_16i                              0
    #define   LSb16VSLocal_tmp_v_16i                              0
    #define       bVSLocal_tmp_v_16i                           16
    #define   MSK32VSLocal_tmp_v_16i                              0x0000FFFF

    #define     BA_VSLocal_tmp_v_17i                           0x0062
    #define     B16VSLocal_tmp_v_17i                           0x0062
    #define   LSb32VSLocal_tmp_v_17i                              16
    #define   LSb16VSLocal_tmp_v_17i                              0
    #define       bVSLocal_tmp_v_17i                           16
    #define   MSK32VSLocal_tmp_v_17i                              0xFFFF0000

    #define     RA_VSLocal_tmp9                                0x0064

    #define     BA_VSLocal_tmp_v_18i                           0x0064
    #define     B16VSLocal_tmp_v_18i                           0x0064
    #define   LSb32VSLocal_tmp_v_18i                              0
    #define   LSb16VSLocal_tmp_v_18i                              0
    #define       bVSLocal_tmp_v_18i                           16
    #define   MSK32VSLocal_tmp_v_18i                              0x0000FFFF

    #define     BA_VSLocal_tmp_v_19i                           0x0066
    #define     B16VSLocal_tmp_v_19i                           0x0066
    #define   LSb32VSLocal_tmp_v_19i                              16
    #define   LSb16VSLocal_tmp_v_19i                              0
    #define       bVSLocal_tmp_v_19i                           16
    #define   MSK32VSLocal_tmp_v_19i                              0xFFFF0000

    #define     RA_VSLocal_tmp10                               0x0068

    #define     BA_VSLocal_tmp_v_20i                           0x0068
    #define     B16VSLocal_tmp_v_20i                           0x0068
    #define   LSb32VSLocal_tmp_v_20i                              0
    #define   LSb16VSLocal_tmp_v_20i                              0
    #define       bVSLocal_tmp_v_20i                           16
    #define   MSK32VSLocal_tmp_v_20i                              0x0000FFFF

    #define     BA_VSLocal_tmp_v_21i                           0x006A
    #define     B16VSLocal_tmp_v_21i                           0x006A
    #define   LSb32VSLocal_tmp_v_21i                              16
    #define   LSb16VSLocal_tmp_v_21i                              0
    #define       bVSLocal_tmp_v_21i                           16
    #define   MSK32VSLocal_tmp_v_21i                              0xFFFF0000

    #define     RA_VSLocal_tmp11                               0x006C

    #define     BA_VSLocal_tmp_v_22i                           0x006C
    #define     B16VSLocal_tmp_v_22i                           0x006C
    #define   LSb32VSLocal_tmp_v_22i                              0
    #define   LSb16VSLocal_tmp_v_22i                              0
    #define       bVSLocal_tmp_v_22i                           16
    #define   MSK32VSLocal_tmp_v_22i                              0x0000FFFF

    #define     BA_VSLocal_tmp_v_23i                           0x006E
    #define     B16VSLocal_tmp_v_23i                           0x006E
    #define   LSb32VSLocal_tmp_v_23i                              16
    #define   LSb16VSLocal_tmp_v_23i                              0
    #define       bVSLocal_tmp_v_23i                           16
    #define   MSK32VSLocal_tmp_v_23i                              0xFFFF0000

    #define     RA_VSLocal_tmp12                               0x0070

    #define     BA_VSLocal_tmp_v_24i                           0x0070
    #define     B16VSLocal_tmp_v_24i                           0x0070
    #define   LSb32VSLocal_tmp_v_24i                              0
    #define   LSb16VSLocal_tmp_v_24i                              0
    #define       bVSLocal_tmp_v_24i                           16
    #define   MSK32VSLocal_tmp_v_24i                              0x0000FFFF

    #define     BA_VSLocal_tmp_v_25i                           0x0072
    #define     B16VSLocal_tmp_v_25i                           0x0072
    #define   LSb32VSLocal_tmp_v_25i                              16
    #define   LSb16VSLocal_tmp_v_25i                              0
    #define       bVSLocal_tmp_v_25i                           16
    #define   MSK32VSLocal_tmp_v_25i                              0xFFFF0000

    #define     RA_VSLocal_tmp13                               0x0074

    #define     BA_VSLocal_tmp_v_26i                           0x0074
    #define     B16VSLocal_tmp_v_26i                           0x0074
    #define   LSb32VSLocal_tmp_v_26i                              0
    #define   LSb16VSLocal_tmp_v_26i                              0
    #define       bVSLocal_tmp_v_26i                           16
    #define   MSK32VSLocal_tmp_v_26i                              0x0000FFFF

    #define     BA_VSLocal_tmp_v_27i                           0x0076
    #define     B16VSLocal_tmp_v_27i                           0x0076
    #define   LSb32VSLocal_tmp_v_27i                              16
    #define   LSb16VSLocal_tmp_v_27i                              0
    #define       bVSLocal_tmp_v_27i                           16
    #define   MSK32VSLocal_tmp_v_27i                              0xFFFF0000

    #define     RA_VSLocal_tmp14                               0x0078

    #define     BA_VSLocal_tmp_v_28i                           0x0078
    #define     B16VSLocal_tmp_v_28i                           0x0078
    #define   LSb32VSLocal_tmp_v_28i                              0
    #define   LSb16VSLocal_tmp_v_28i                              0
    #define       bVSLocal_tmp_v_28i                           16
    #define   MSK32VSLocal_tmp_v_28i                              0x0000FFFF

    #define     BA_VSLocal_tmp_v_29i                           0x007A
    #define     B16VSLocal_tmp_v_29i                           0x007A
    #define   LSb32VSLocal_tmp_v_29i                              16
    #define   LSb16VSLocal_tmp_v_29i                              0
    #define       bVSLocal_tmp_v_29i                           16
    #define   MSK32VSLocal_tmp_v_29i                              0xFFFF0000

    #define     RA_VSLocal_tmp15                               0x007C

    #define     BA_VSLocal_tmp_v_30i                           0x007C
    #define     B16VSLocal_tmp_v_30i                           0x007C
    #define   LSb32VSLocal_tmp_v_30i                              0
    #define   LSb16VSLocal_tmp_v_30i                              0
    #define       bVSLocal_tmp_v_30i                           16
    #define   MSK32VSLocal_tmp_v_30i                              0x0000FFFF

    #define     BA_VSLocal_tmp_v_31i                           0x007E
    #define     B16VSLocal_tmp_v_31i                           0x007E
    #define   LSb32VSLocal_tmp_v_31i                              16
    #define   LSb16VSLocal_tmp_v_31i                              0
    #define       bVSLocal_tmp_v_31i                           16
    #define   MSK32VSLocal_tmp_v_31i                              0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_VSLocal {
    ///////////////////////////////////////////////////////////
    #define   GET32VSLocal_zero_reg_0i(r32)                    _BFGET_(r32,15, 0)
    #define   SET32VSLocal_zero_reg_0i(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_zero_reg_0i(r16)                    _BFGET_(r16,15, 0)
    #define   SET16VSLocal_zero_reg_0i(r16,v)                  _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_zero_reg_1i(r32)                    _BFGET_(r32,31,16)
    #define   SET32VSLocal_zero_reg_1i(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_zero_reg_1i(r16)                    _BFGET_(r16,15, 0)
    #define   SET16VSLocal_zero_reg_1i(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_zero                                {\
            UNSG32 uzero_reg_0i                                : 16;\
            UNSG32 uzero_reg_1i                                : 16;\
          }
    union { UNSG32 u32VSLocal_zero;
            struct w32VSLocal_zero;
          };
    #define   GET32VSLocal_zero_reg_2i(r32)                    _BFGET_(r32,15, 0)
    #define   SET32VSLocal_zero_reg_2i(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_zero_reg_2i(r16)                    _BFGET_(r16,15, 0)
    #define   SET16VSLocal_zero_reg_2i(r16,v)                  _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_zero_reg_3i(r32)                    _BFGET_(r32,31,16)
    #define   SET32VSLocal_zero_reg_3i(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_zero_reg_3i(r16)                    _BFGET_(r16,15, 0)
    #define   SET16VSLocal_zero_reg_3i(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_zero1                               {\
            UNSG32 uzero_reg_2i                                : 16;\
            UNSG32 uzero_reg_3i                                : 16;\
          }
    union { UNSG32 u32VSLocal_zero1;
            struct w32VSLocal_zero1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32VSLocal_desc_A(r32)                         _BFGET_(r32,15, 0)
    #define   SET32VSLocal_desc_A(r32,v)                       _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_desc_A(r16)                         _BFGET_(r16,15, 0)
    #define   SET16VSLocal_desc_A(r16,v)                       _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_desc_B(r32)                         _BFGET_(r32,31,16)
    #define   SET32VSLocal_desc_B(r32,v)                       _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_desc_B(r16)                         _BFGET_(r16,15, 0)
    #define   SET16VSLocal_desc_B(r16,v)                       _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_desc                                {\
            UNSG32 udesc_A                                     : 16;\
            UNSG32 udesc_B                                     : 16;\
          }
    union { UNSG32 u32VSLocal_desc;
            struct w32VSLocal_desc;
          };
    #define   GET32VSLocal_desc_X(r32)                         _BFGET_(r32,15, 0)
    #define   SET32VSLocal_desc_X(r32,v)                       _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_desc_X(r16)                         _BFGET_(r16,15, 0)
    #define   SET16VSLocal_desc_X(r16,v)                       _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_desc_D(r32)                         _BFGET_(r32,31,16)
    #define   SET32VSLocal_desc_D(r32,v)                       _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_desc_D(r16)                         _BFGET_(r16,15, 0)
    #define   SET16VSLocal_desc_D(r16,v)                       _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_desc1                               {\
            UNSG32 udesc_X                                     : 16;\
            UNSG32 udesc_D                                     : 16;\
          }
    union { UNSG32 u32VSLocal_desc1;
            struct w32VSLocal_desc1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32VSLocal_cur_neighbor(r32)                   _BFGET_(r32,15, 0)
    #define   SET32VSLocal_cur_neighbor(r32,v)                 _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_cur_neighbor(r16)                   _BFGET_(r16,15, 0)
    #define   SET16VSLocal_cur_neighbor(r16,v)                 _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_cur_bank(r32)                       _BFGET_(r32,31,16)
    #define   SET32VSLocal_cur_bank(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_cur_bank(r16)                       _BFGET_(r16,15, 0)
    #define   SET16VSLocal_cur_bank(r16,v)                     _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_cur                                 {\
            UNSG32 ucur_neighbor                               : 16;\
            UNSG32 ucur_bank                                   : 16;\
          }
    union { UNSG32 u32VSLocal_cur;
            struct w32VSLocal_cur;
          };
    #define   GET32VSLocal_cur_prop(r32)                       _BFGET_(r32,15, 0)
    #define   SET32VSLocal_cur_prop(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_cur_prop(r16)                       _BFGET_(r16,15, 0)
    #define   SET16VSLocal_cur_prop(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_cur_pending(r32)                    _BFGET_(r32,31,16)
    #define   SET32VSLocal_cur_pending(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_cur_pending(r16)                    _BFGET_(r16,15, 0)
    #define   SET16VSLocal_cur_pending(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_cur1                                {\
            UNSG32 ucur_prop                                   : 16;\
            UNSG32 ucur_pending                                : 16;\
          }
    union { UNSG32 u32VSLocal_cur1;
            struct w32VSLocal_cur1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32VSLocal_ctx_v_0i(r32)                       _BFGET_(r32,15, 0)
    #define   SET32VSLocal_ctx_v_0i(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_ctx_v_0i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16VSLocal_ctx_v_0i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_ctx_v_1i(r32)                       _BFGET_(r32,31,16)
    #define   SET32VSLocal_ctx_v_1i(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_ctx_v_1i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16VSLocal_ctx_v_1i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_ctx                                 {\
            UNSG32 uctx_v_0i                                   : 16;\
            UNSG32 uctx_v_1i                                   : 16;\
          }
    union { UNSG32 u32VSLocal_ctx;
            struct w32VSLocal_ctx;
          };
    #define   GET32VSLocal_ctx_v_2i(r32)                       _BFGET_(r32,15, 0)
    #define   SET32VSLocal_ctx_v_2i(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_ctx_v_2i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16VSLocal_ctx_v_2i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_ctx_v_3i(r32)                       _BFGET_(r32,31,16)
    #define   SET32VSLocal_ctx_v_3i(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_ctx_v_3i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16VSLocal_ctx_v_3i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_ctx1                                {\
            UNSG32 uctx_v_2i                                   : 16;\
            UNSG32 uctx_v_3i                                   : 16;\
          }
    union { UNSG32 u32VSLocal_ctx1;
            struct w32VSLocal_ctx1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32VSLocal_slice_v_0i(r32)                     _BFGET_(r32,15, 0)
    #define   SET32VSLocal_slice_v_0i(r32,v)                   _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_slice_v_0i(r16)                     _BFGET_(r16,15, 0)
    #define   SET16VSLocal_slice_v_0i(r16,v)                   _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_slice_v_1i(r32)                     _BFGET_(r32,31,16)
    #define   SET32VSLocal_slice_v_1i(r32,v)                   _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_slice_v_1i(r16)                     _BFGET_(r16,15, 0)
    #define   SET16VSLocal_slice_v_1i(r16,v)                   _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_slice                               {\
            UNSG32 uslice_v_0i                                 : 16;\
            UNSG32 uslice_v_1i                                 : 16;\
          }
    union { UNSG32 u32VSLocal_slice;
            struct w32VSLocal_slice;
          };
    #define   GET32VSLocal_slice_v_2i(r32)                     _BFGET_(r32,15, 0)
    #define   SET32VSLocal_slice_v_2i(r32,v)                   _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_slice_v_2i(r16)                     _BFGET_(r16,15, 0)
    #define   SET16VSLocal_slice_v_2i(r16,v)                   _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_slice_v_3i(r32)                     _BFGET_(r32,31,16)
    #define   SET32VSLocal_slice_v_3i(r32,v)                   _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_slice_v_3i(r16)                     _BFGET_(r16,15, 0)
    #define   SET16VSLocal_slice_v_3i(r16,v)                   _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_slice1                              {\
            UNSG32 uslice_v_2i                                 : 16;\
            UNSG32 uslice_v_3i                                 : 16;\
          }
    union { UNSG32 u32VSLocal_slice1;
            struct w32VSLocal_slice1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32VSLocal_mb_v_0i(r32)                        _BFGET_(r32,15, 0)
    #define   SET32VSLocal_mb_v_0i(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_mb_v_0i(r16)                        _BFGET_(r16,15, 0)
    #define   SET16VSLocal_mb_v_0i(r16,v)                      _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_mb_v_1i(r32)                        _BFGET_(r32,31,16)
    #define   SET32VSLocal_mb_v_1i(r32,v)                      _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_mb_v_1i(r16)                        _BFGET_(r16,15, 0)
    #define   SET16VSLocal_mb_v_1i(r16,v)                      _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_mb                                  {\
            UNSG32 umb_v_0i                                    : 16;\
            UNSG32 umb_v_1i                                    : 16;\
          }
    union { UNSG32 u32VSLocal_mb;
            struct w32VSLocal_mb;
          };
    #define   GET32VSLocal_mb_v_2i(r32)                        _BFGET_(r32,15, 0)
    #define   SET32VSLocal_mb_v_2i(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_mb_v_2i(r16)                        _BFGET_(r16,15, 0)
    #define   SET16VSLocal_mb_v_2i(r16,v)                      _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_mb_v_3i(r32)                        _BFGET_(r32,31,16)
    #define   SET32VSLocal_mb_v_3i(r32,v)                      _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_mb_v_3i(r16)                        _BFGET_(r16,15, 0)
    #define   SET16VSLocal_mb_v_3i(r16,v)                      _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_mb1                                 {\
            UNSG32 umb_v_2i                                    : 16;\
            UNSG32 umb_v_3i                                    : 16;\
          }
    union { UNSG32 u32VSLocal_mb1;
            struct w32VSLocal_mb1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32VSLocal_pred_v_0i(r32)                      _BFGET_(r32,15, 0)
    #define   SET32VSLocal_pred_v_0i(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_pred_v_0i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_pred_v_0i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_pred_v_1i(r32)                      _BFGET_(r32,31,16)
    #define   SET32VSLocal_pred_v_1i(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_pred_v_1i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_pred_v_1i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_pred                                {\
            UNSG32 upred_v_0i                                  : 16;\
            UNSG32 upred_v_1i                                  : 16;\
          }
    union { UNSG32 u32VSLocal_pred;
            struct w32VSLocal_pred;
          };
    #define   GET32VSLocal_pred_v_2i(r32)                      _BFGET_(r32,15, 0)
    #define   SET32VSLocal_pred_v_2i(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_pred_v_2i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_pred_v_2i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_pred_v_3i(r32)                      _BFGET_(r32,31,16)
    #define   SET32VSLocal_pred_v_3i(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_pred_v_3i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_pred_v_3i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_pred1                               {\
            UNSG32 upred_v_2i                                  : 16;\
            UNSG32 upred_v_3i                                  : 16;\
          }
    union { UNSG32 u32VSLocal_pred1;
            struct w32VSLocal_pred1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32VSLocal_residual_v_0i(r32)                  _BFGET_(r32,15, 0)
    #define   SET32VSLocal_residual_v_0i(r32,v)                _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_residual_v_0i(r16)                  _BFGET_(r16,15, 0)
    #define   SET16VSLocal_residual_v_0i(r16,v)                _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_residual_v_1i(r32)                  _BFGET_(r32,31,16)
    #define   SET32VSLocal_residual_v_1i(r32,v)                _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_residual_v_1i(r16)                  _BFGET_(r16,15, 0)
    #define   SET16VSLocal_residual_v_1i(r16,v)                _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_residual                            {\
            UNSG32 uresidual_v_0i                              : 16;\
            UNSG32 uresidual_v_1i                              : 16;\
          }
    union { UNSG32 u32VSLocal_residual;
            struct w32VSLocal_residual;
          };
    #define   GET32VSLocal_residual_v_2i(r32)                  _BFGET_(r32,15, 0)
    #define   SET32VSLocal_residual_v_2i(r32,v)                _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_residual_v_2i(r16)                  _BFGET_(r16,15, 0)
    #define   SET16VSLocal_residual_v_2i(r16,v)                _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_residual_v_3i(r32)                  _BFGET_(r32,31,16)
    #define   SET32VSLocal_residual_v_3i(r32,v)                _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_residual_v_3i(r16)                  _BFGET_(r16,15, 0)
    #define   SET16VSLocal_residual_v_3i(r16,v)                _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_residual1                           {\
            UNSG32 uresidual_v_2i                              : 16;\
            UNSG32 uresidual_v_3i                              : 16;\
          }
    union { UNSG32 u32VSLocal_residual1;
            struct w32VSLocal_residual1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32VSLocal_tmp_v_0i(r32)                       _BFGET_(r32,15, 0)
    #define   SET32VSLocal_tmp_v_0i(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_tmp_v_0i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_0i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_tmp_v_1i(r32)                       _BFGET_(r32,31,16)
    #define   SET32VSLocal_tmp_v_1i(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_tmp_v_1i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_1i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_tmp                                 {\
            UNSG32 utmp_v_0i                                   : 16;\
            UNSG32 utmp_v_1i                                   : 16;\
          }
    union { UNSG32 u32VSLocal_tmp;
            struct w32VSLocal_tmp;
          };
    #define   GET32VSLocal_tmp_v_2i(r32)                       _BFGET_(r32,15, 0)
    #define   SET32VSLocal_tmp_v_2i(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_tmp_v_2i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_2i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_tmp_v_3i(r32)                       _BFGET_(r32,31,16)
    #define   SET32VSLocal_tmp_v_3i(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_tmp_v_3i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_3i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_tmp1                                {\
            UNSG32 utmp_v_2i                                   : 16;\
            UNSG32 utmp_v_3i                                   : 16;\
          }
    union { UNSG32 u32VSLocal_tmp1;
            struct w32VSLocal_tmp1;
          };
    #define   GET32VSLocal_tmp_v_4i(r32)                       _BFGET_(r32,15, 0)
    #define   SET32VSLocal_tmp_v_4i(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_tmp_v_4i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_4i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_tmp_v_5i(r32)                       _BFGET_(r32,31,16)
    #define   SET32VSLocal_tmp_v_5i(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_tmp_v_5i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_5i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_tmp2                                {\
            UNSG32 utmp_v_4i                                   : 16;\
            UNSG32 utmp_v_5i                                   : 16;\
          }
    union { UNSG32 u32VSLocal_tmp2;
            struct w32VSLocal_tmp2;
          };
    #define   GET32VSLocal_tmp_v_6i(r32)                       _BFGET_(r32,15, 0)
    #define   SET32VSLocal_tmp_v_6i(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_tmp_v_6i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_6i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_tmp_v_7i(r32)                       _BFGET_(r32,31,16)
    #define   SET32VSLocal_tmp_v_7i(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_tmp_v_7i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_7i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_tmp3                                {\
            UNSG32 utmp_v_6i                                   : 16;\
            UNSG32 utmp_v_7i                                   : 16;\
          }
    union { UNSG32 u32VSLocal_tmp3;
            struct w32VSLocal_tmp3;
          };
    #define   GET32VSLocal_tmp_v_8i(r32)                       _BFGET_(r32,15, 0)
    #define   SET32VSLocal_tmp_v_8i(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_tmp_v_8i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_8i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_tmp_v_9i(r32)                       _BFGET_(r32,31,16)
    #define   SET32VSLocal_tmp_v_9i(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_tmp_v_9i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_9i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_tmp4                                {\
            UNSG32 utmp_v_8i                                   : 16;\
            UNSG32 utmp_v_9i                                   : 16;\
          }
    union { UNSG32 u32VSLocal_tmp4;
            struct w32VSLocal_tmp4;
          };
    #define   GET32VSLocal_tmp_v_10i(r32)                      _BFGET_(r32,15, 0)
    #define   SET32VSLocal_tmp_v_10i(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_tmp_v_10i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_10i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_tmp_v_11i(r32)                      _BFGET_(r32,31,16)
    #define   SET32VSLocal_tmp_v_11i(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_tmp_v_11i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_11i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_tmp5                                {\
            UNSG32 utmp_v_10i                                  : 16;\
            UNSG32 utmp_v_11i                                  : 16;\
          }
    union { UNSG32 u32VSLocal_tmp5;
            struct w32VSLocal_tmp5;
          };
    #define   GET32VSLocal_tmp_v_12i(r32)                      _BFGET_(r32,15, 0)
    #define   SET32VSLocal_tmp_v_12i(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_tmp_v_12i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_12i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_tmp_v_13i(r32)                      _BFGET_(r32,31,16)
    #define   SET32VSLocal_tmp_v_13i(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_tmp_v_13i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_13i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_tmp6                                {\
            UNSG32 utmp_v_12i                                  : 16;\
            UNSG32 utmp_v_13i                                  : 16;\
          }
    union { UNSG32 u32VSLocal_tmp6;
            struct w32VSLocal_tmp6;
          };
    #define   GET32VSLocal_tmp_v_14i(r32)                      _BFGET_(r32,15, 0)
    #define   SET32VSLocal_tmp_v_14i(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_tmp_v_14i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_14i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_tmp_v_15i(r32)                      _BFGET_(r32,31,16)
    #define   SET32VSLocal_tmp_v_15i(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_tmp_v_15i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_15i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_tmp7                                {\
            UNSG32 utmp_v_14i                                  : 16;\
            UNSG32 utmp_v_15i                                  : 16;\
          }
    union { UNSG32 u32VSLocal_tmp7;
            struct w32VSLocal_tmp7;
          };
    #define   GET32VSLocal_tmp_v_16i(r32)                      _BFGET_(r32,15, 0)
    #define   SET32VSLocal_tmp_v_16i(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_tmp_v_16i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_16i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_tmp_v_17i(r32)                      _BFGET_(r32,31,16)
    #define   SET32VSLocal_tmp_v_17i(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_tmp_v_17i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_17i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_tmp8                                {\
            UNSG32 utmp_v_16i                                  : 16;\
            UNSG32 utmp_v_17i                                  : 16;\
          }
    union { UNSG32 u32VSLocal_tmp8;
            struct w32VSLocal_tmp8;
          };
    #define   GET32VSLocal_tmp_v_18i(r32)                      _BFGET_(r32,15, 0)
    #define   SET32VSLocal_tmp_v_18i(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_tmp_v_18i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_18i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_tmp_v_19i(r32)                      _BFGET_(r32,31,16)
    #define   SET32VSLocal_tmp_v_19i(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_tmp_v_19i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_19i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_tmp9                                {\
            UNSG32 utmp_v_18i                                  : 16;\
            UNSG32 utmp_v_19i                                  : 16;\
          }
    union { UNSG32 u32VSLocal_tmp9;
            struct w32VSLocal_tmp9;
          };
    #define   GET32VSLocal_tmp_v_20i(r32)                      _BFGET_(r32,15, 0)
    #define   SET32VSLocal_tmp_v_20i(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_tmp_v_20i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_20i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_tmp_v_21i(r32)                      _BFGET_(r32,31,16)
    #define   SET32VSLocal_tmp_v_21i(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_tmp_v_21i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_21i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_tmp10                               {\
            UNSG32 utmp_v_20i                                  : 16;\
            UNSG32 utmp_v_21i                                  : 16;\
          }
    union { UNSG32 u32VSLocal_tmp10;
            struct w32VSLocal_tmp10;
          };
    #define   GET32VSLocal_tmp_v_22i(r32)                      _BFGET_(r32,15, 0)
    #define   SET32VSLocal_tmp_v_22i(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_tmp_v_22i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_22i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_tmp_v_23i(r32)                      _BFGET_(r32,31,16)
    #define   SET32VSLocal_tmp_v_23i(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_tmp_v_23i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_23i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_tmp11                               {\
            UNSG32 utmp_v_22i                                  : 16;\
            UNSG32 utmp_v_23i                                  : 16;\
          }
    union { UNSG32 u32VSLocal_tmp11;
            struct w32VSLocal_tmp11;
          };
    #define   GET32VSLocal_tmp_v_24i(r32)                      _BFGET_(r32,15, 0)
    #define   SET32VSLocal_tmp_v_24i(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_tmp_v_24i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_24i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_tmp_v_25i(r32)                      _BFGET_(r32,31,16)
    #define   SET32VSLocal_tmp_v_25i(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_tmp_v_25i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_25i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_tmp12                               {\
            UNSG32 utmp_v_24i                                  : 16;\
            UNSG32 utmp_v_25i                                  : 16;\
          }
    union { UNSG32 u32VSLocal_tmp12;
            struct w32VSLocal_tmp12;
          };
    #define   GET32VSLocal_tmp_v_26i(r32)                      _BFGET_(r32,15, 0)
    #define   SET32VSLocal_tmp_v_26i(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_tmp_v_26i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_26i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_tmp_v_27i(r32)                      _BFGET_(r32,31,16)
    #define   SET32VSLocal_tmp_v_27i(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_tmp_v_27i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_27i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_tmp13                               {\
            UNSG32 utmp_v_26i                                  : 16;\
            UNSG32 utmp_v_27i                                  : 16;\
          }
    union { UNSG32 u32VSLocal_tmp13;
            struct w32VSLocal_tmp13;
          };
    #define   GET32VSLocal_tmp_v_28i(r32)                      _BFGET_(r32,15, 0)
    #define   SET32VSLocal_tmp_v_28i(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_tmp_v_28i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_28i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_tmp_v_29i(r32)                      _BFGET_(r32,31,16)
    #define   SET32VSLocal_tmp_v_29i(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_tmp_v_29i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_29i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_tmp14                               {\
            UNSG32 utmp_v_28i                                  : 16;\
            UNSG32 utmp_v_29i                                  : 16;\
          }
    union { UNSG32 u32VSLocal_tmp14;
            struct w32VSLocal_tmp14;
          };
    #define   GET32VSLocal_tmp_v_30i(r32)                      _BFGET_(r32,15, 0)
    #define   SET32VSLocal_tmp_v_30i(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16VSLocal_tmp_v_30i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_30i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32VSLocal_tmp_v_31i(r32)                      _BFGET_(r32,31,16)
    #define   SET32VSLocal_tmp_v_31i(r32,v)                    _BFSET_(r32,31,16,v)
    #define   GET16VSLocal_tmp_v_31i(r16)                      _BFGET_(r16,15, 0)
    #define   SET16VSLocal_tmp_v_31i(r16,v)                    _BFSET_(r16,15, 0,v)

    #define     w32VSLocal_tmp15                               {\
            UNSG32 utmp_v_30i                                  : 16;\
            UNSG32 utmp_v_31i                                  : 16;\
          }
    union { UNSG32 u32VSLocal_tmp15;
            struct w32VSLocal_tmp15;
          };
    ///////////////////////////////////////////////////////////
    } SIE_VSLocal;

    typedef union  T32VSLocal_zero
          { UNSG32 u32;
            struct w32VSLocal_zero;
                 } T32VSLocal_zero;
    typedef union  T32VSLocal_zero1
          { UNSG32 u32;
            struct w32VSLocal_zero1;
                 } T32VSLocal_zero1;
    typedef union  T32VSLocal_desc
          { UNSG32 u32;
            struct w32VSLocal_desc;
                 } T32VSLocal_desc;
    typedef union  T32VSLocal_desc1
          { UNSG32 u32;
            struct w32VSLocal_desc1;
                 } T32VSLocal_desc1;
    typedef union  T32VSLocal_cur
          { UNSG32 u32;
            struct w32VSLocal_cur;
                 } T32VSLocal_cur;
    typedef union  T32VSLocal_cur1
          { UNSG32 u32;
            struct w32VSLocal_cur1;
                 } T32VSLocal_cur1;
    typedef union  T32VSLocal_ctx
          { UNSG32 u32;
            struct w32VSLocal_ctx;
                 } T32VSLocal_ctx;
    typedef union  T32VSLocal_ctx1
          { UNSG32 u32;
            struct w32VSLocal_ctx1;
                 } T32VSLocal_ctx1;
    typedef union  T32VSLocal_slice
          { UNSG32 u32;
            struct w32VSLocal_slice;
                 } T32VSLocal_slice;
    typedef union  T32VSLocal_slice1
          { UNSG32 u32;
            struct w32VSLocal_slice1;
                 } T32VSLocal_slice1;
    typedef union  T32VSLocal_mb
          { UNSG32 u32;
            struct w32VSLocal_mb;
                 } T32VSLocal_mb;
    typedef union  T32VSLocal_mb1
          { UNSG32 u32;
            struct w32VSLocal_mb1;
                 } T32VSLocal_mb1;
    typedef union  T32VSLocal_pred
          { UNSG32 u32;
            struct w32VSLocal_pred;
                 } T32VSLocal_pred;
    typedef union  T32VSLocal_pred1
          { UNSG32 u32;
            struct w32VSLocal_pred1;
                 } T32VSLocal_pred1;
    typedef union  T32VSLocal_residual
          { UNSG32 u32;
            struct w32VSLocal_residual;
                 } T32VSLocal_residual;
    typedef union  T32VSLocal_residual1
          { UNSG32 u32;
            struct w32VSLocal_residual1;
                 } T32VSLocal_residual1;
    typedef union  T32VSLocal_tmp
          { UNSG32 u32;
            struct w32VSLocal_tmp;
                 } T32VSLocal_tmp;
    typedef union  T32VSLocal_tmp1
          { UNSG32 u32;
            struct w32VSLocal_tmp1;
                 } T32VSLocal_tmp1;
    typedef union  T32VSLocal_tmp2
          { UNSG32 u32;
            struct w32VSLocal_tmp2;
                 } T32VSLocal_tmp2;
    typedef union  T32VSLocal_tmp3
          { UNSG32 u32;
            struct w32VSLocal_tmp3;
                 } T32VSLocal_tmp3;
    typedef union  T32VSLocal_tmp4
          { UNSG32 u32;
            struct w32VSLocal_tmp4;
                 } T32VSLocal_tmp4;
    typedef union  T32VSLocal_tmp5
          { UNSG32 u32;
            struct w32VSLocal_tmp5;
                 } T32VSLocal_tmp5;
    typedef union  T32VSLocal_tmp6
          { UNSG32 u32;
            struct w32VSLocal_tmp6;
                 } T32VSLocal_tmp6;
    typedef union  T32VSLocal_tmp7
          { UNSG32 u32;
            struct w32VSLocal_tmp7;
                 } T32VSLocal_tmp7;
    typedef union  T32VSLocal_tmp8
          { UNSG32 u32;
            struct w32VSLocal_tmp8;
                 } T32VSLocal_tmp8;
    typedef union  T32VSLocal_tmp9
          { UNSG32 u32;
            struct w32VSLocal_tmp9;
                 } T32VSLocal_tmp9;
    typedef union  T32VSLocal_tmp10
          { UNSG32 u32;
            struct w32VSLocal_tmp10;
                 } T32VSLocal_tmp10;
    typedef union  T32VSLocal_tmp11
          { UNSG32 u32;
            struct w32VSLocal_tmp11;
                 } T32VSLocal_tmp11;
    typedef union  T32VSLocal_tmp12
          { UNSG32 u32;
            struct w32VSLocal_tmp12;
                 } T32VSLocal_tmp12;
    typedef union  T32VSLocal_tmp13
          { UNSG32 u32;
            struct w32VSLocal_tmp13;
                 } T32VSLocal_tmp13;
    typedef union  T32VSLocal_tmp14
          { UNSG32 u32;
            struct w32VSLocal_tmp14;
                 } T32VSLocal_tmp14;
    typedef union  T32VSLocal_tmp15
          { UNSG32 u32;
            struct w32VSLocal_tmp15;
                 } T32VSLocal_tmp15;
    ///////////////////////////////////////////////////////////

    typedef union  TVSLocal_zero
          { UNSG32 u32[2];
            struct {
            struct w32VSLocal_zero;
            struct w32VSLocal_zero1;
                   };
                 } TVSLocal_zero;
    typedef union  TVSLocal_desc
          { UNSG32 u32[2];
            struct {
            struct w32VSLocal_desc;
            struct w32VSLocal_desc1;
                   };
                 } TVSLocal_desc;
    typedef union  TVSLocal_cur
          { UNSG32 u32[2];
            struct {
            struct w32VSLocal_cur;
            struct w32VSLocal_cur1;
                   };
                 } TVSLocal_cur;
    typedef union  TVSLocal_ctx
          { UNSG32 u32[2];
            struct {
            struct w32VSLocal_ctx;
            struct w32VSLocal_ctx1;
                   };
                 } TVSLocal_ctx;
    typedef union  TVSLocal_slice
          { UNSG32 u32[2];
            struct {
            struct w32VSLocal_slice;
            struct w32VSLocal_slice1;
                   };
                 } TVSLocal_slice;
    typedef union  TVSLocal_mb
          { UNSG32 u32[2];
            struct {
            struct w32VSLocal_mb;
            struct w32VSLocal_mb1;
                   };
                 } TVSLocal_mb;
    typedef union  TVSLocal_pred
          { UNSG32 u32[2];
            struct {
            struct w32VSLocal_pred;
            struct w32VSLocal_pred1;
                   };
                 } TVSLocal_pred;
    typedef union  TVSLocal_residual
          { UNSG32 u32[2];
            struct {
            struct w32VSLocal_residual;
            struct w32VSLocal_residual1;
                   };
                 } TVSLocal_residual;
    typedef union  TVSLocal_tmp
          { UNSG32 u32[16];
            struct {
            struct w32VSLocal_tmp;
            struct w32VSLocal_tmp1;
            struct w32VSLocal_tmp2;
            struct w32VSLocal_tmp3;
            struct w32VSLocal_tmp4;
            struct w32VSLocal_tmp5;
            struct w32VSLocal_tmp6;
            struct w32VSLocal_tmp7;
            struct w32VSLocal_tmp8;
            struct w32VSLocal_tmp9;
            struct w32VSLocal_tmp10;
            struct w32VSLocal_tmp11;
            struct w32VSLocal_tmp12;
            struct w32VSLocal_tmp13;
            struct w32VSLocal_tmp14;
            struct w32VSLocal_tmp15;
                   };
                 } TVSLocal_tmp;

    ///////////////////////////////////////////////////////////
     SIGN32 VSLocal_drvrd(SIE_VSLocal *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 VSLocal_drvwr(SIE_VSLocal *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void VSLocal_reset(SIE_VSLocal *p);
     SIGN32 VSLocal_cmp  (SIE_VSLocal *p, SIE_VSLocal *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define VSLocal_check(p,pie,pfx,hLOG) VSLocal_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define VSLocal_print(p,    pfx,hLOG) VSLocal_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: VSLocal
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE tCtxDP                                   (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 32 CoLocPic1                 
///                                    ###
///                                    * Co-located tCtx buffer
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 32 CurPic1                   
///                                    ###
///                                    * Current tCtx buffer
///                                    ###
///     @ 0x00008                      (P)
///               %unsigned 32 EndCoLocPic               
///                                    ###
///                                    * End of colocate tCtx buffer
///                                    ###
///     @ 0x0000C                      (P)
///               %unsigned 32 EndCurPic                 
///                                    ###
///                                    * End of current tCtx buffer
///                                    * End of tCtxDP
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:     128b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_tCtxDP
#define h_tCtxDP (){}

    #define     BA_tCtxDP_CoLocPic1                            0x0000
    #define     B16tCtxDP_CoLocPic1                            0x0000
    #define   LSb32tCtxDP_CoLocPic1                               0
    #define   LSb16tCtxDP_CoLocPic1                               0
    #define       btCtxDP_CoLocPic1                            32
    #define   MSK32tCtxDP_CoLocPic1                               0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    #define     BA_tCtxDP_CurPic1                              0x0004
    #define     B16tCtxDP_CurPic1                              0x0004
    #define   LSb32tCtxDP_CurPic1                                 0
    #define   LSb16tCtxDP_CurPic1                                 0
    #define       btCtxDP_CurPic1                              32
    #define   MSK32tCtxDP_CurPic1                                 0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    #define     BA_tCtxDP_EndCoLocPic                          0x0008
    #define     B16tCtxDP_EndCoLocPic                          0x0008
    #define   LSb32tCtxDP_EndCoLocPic                             0
    #define   LSb16tCtxDP_EndCoLocPic                             0
    #define       btCtxDP_EndCoLocPic                          32
    #define   MSK32tCtxDP_EndCoLocPic                             0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    #define     BA_tCtxDP_EndCurPic                            0x000C
    #define     B16tCtxDP_EndCurPic                            0x000C
    #define   LSb32tCtxDP_EndCurPic                               0
    #define   LSb16tCtxDP_EndCurPic                               0
    #define       btCtxDP_EndCurPic                            32
    #define   MSK32tCtxDP_EndCurPic                               0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_tCtxDP {
    ///////////////////////////////////////////////////////////
    #define   GET32tCtxDP_CoLocPic1(r32)                       _BFGET_(r32,31, 0)
    #define   SET32tCtxDP_CoLocPic1(r32,v)                     _BFSET_(r32,31, 0,v)

            UNSG32 u_CoLocPic1                                 : 32;
    ///////////////////////////////////////////////////////////
    #define   GET32tCtxDP_CurPic1(r32)                         _BFGET_(r32,31, 0)
    #define   SET32tCtxDP_CurPic1(r32,v)                       _BFSET_(r32,31, 0,v)

            UNSG32 u_CurPic1                                   : 32;
    ///////////////////////////////////////////////////////////
    #define   GET32tCtxDP_EndCoLocPic(r32)                     _BFGET_(r32,31, 0)
    #define   SET32tCtxDP_EndCoLocPic(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 u_EndCoLocPic                               : 32;
    ///////////////////////////////////////////////////////////
    #define   GET32tCtxDP_EndCurPic(r32)                       _BFGET_(r32,31, 0)
    #define   SET32tCtxDP_EndCurPic(r32,v)                     _BFSET_(r32,31, 0,v)

            UNSG32 u_EndCurPic                                 : 32;
    ///////////////////////////////////////////////////////////
    } SIE_tCtxDP;

    ///////////////////////////////////////////////////////////
     SIGN32 tCtxDP_drvrd(SIE_tCtxDP *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 tCtxDP_drvwr(SIE_tCtxDP *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void tCtxDP_reset(SIE_tCtxDP *p);
     SIGN32 tCtxDP_cmp  (SIE_tCtxDP *p, SIE_tCtxDP *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define tCtxDP_check(p,pie,pfx,hLOG) tCtxDP_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define tCtxDP_print(p,    pfx,hLOG) tCtxDP_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: tCtxDP
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE halData                                  (4,4)
///     # # ----------------------------------------------------------
///               : stackPSER          0x2000
///               : stackSYNP          0x3000
///     @ 0x00000                      (P)
///     # 0x00000 mbCtxQ               
///               $MBCTXQ              mbCtxQ            REG          
///                                    ###
///                                    * 8 bank MB context buffer
///                                    * Including history context in & out
///                                    ###
///     @ 0x00A10                      (P)
///     # 0x00A10 mbpropQ              
///               $MBPROP              mbpropQ           REG       [8]
///                                    ###
///                                    * MB properties to syntax processor
///                                    * Also know as P3MsgQ:
///                                    * HBO FIFO (m2h):
///                                    * Message queue to vpro.hbo to vCache
///                                    ###
///     @ 0x00C10                      (P)
///     # 0x00C10 ctxPSER              
///               $CtxPSER             ctxPSER           REG          
///                                    ###
///                                    * Context of stream parser
///                                    ###
///     @ 0x00C34                      (W-)
///     #         # Stuffing bytes...
///               %% 96
///     @ 0x00C40                      (P)
///     # 0x00C40 ctxSYNP              
///               $CtxSYNP             ctxSYNP           REG          
///                                    ###
///                                    * Context of syntax processor
///                                    ###
///     @ 0x00C70                      (W-)
///     #         # Stuffing bytes...
///               %% 64
///     @ 0x00C78                      (P)
///     # 0x00C78 tagDS                
///               $LUT64b              tagDS             REG          
///                                    ###
///                                    * Receiving latest retired tag from data streamer
///                                    ###
///     @ 0x00C80                      (P)
///     # 0x00C80 DSMsgQ               
///               $LUT64b              DSMsgQ            REG      [16]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to data streamer
///                                    ###
///     @ 0x00D00                      (P)
///     # 0x00D00 tCtxOut              
///               $TCTXMB              tCtxOut           REG       [2]
///                                    ###
///                                    * Temporal contexts (data streamer) output
///                                    ###
///     @ 0x00E00                      (P)
///     # 0x00E00 tCtxIn               
///               $TCTXMB              tCtxIn            REG       [4]
///                                    ###
///                                    * Temporal contexts (data streamer) input
///                                    ###
///     @ 0x01000                      (P)
///     # 0x01000 P3TCQ                
///               $LUT64b              P3TCQ             REG     [128]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * TC queue to vpro.hbo to PCube
///                                    ###
///     @ 0x01400                      (P)
///     # 0x01400 pairDesc             
///               $PairRow             pairDesc          REG          
///                                    ###
///                                    * Double rows of MB-pair descriptors
///                                    ###
///     @ 0x01920                      (P)
///     # 0x01920 DSMsgQ1              
///               $LUT64b              DSMsgQ1           REG      [16]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to data streamer
///                                    ###
///     @ 0x019A0                      (P)
///     # 0x019A0 tagDS1               
///               $LUT64b              tagDS1            REG          
///                                    ###
///                                    * Receiving latest retired tag from data streamer
///                                    ###
///     @ 0x019A8                      (P)
///     # 0x019A8 t2prop               
///               $T2PROP              t2prop            REG          
///     @ 0x01A10                      (P)
///     # 0x01A10 t2prop8x8            
///               $T2PROP8x8           t2prop8x8         REG          
///     @ 0x01A20                      (P)
///     # 0x01A20 InvScan              
///               $InvScanBLK          InvScan           REG          
///     @ 0x01BB0                      (P)
///     # 0x01BB0 cn2cbp               
///               $CBPLUT              cn2cbp            REG          
///     @ 0x01C10                      (P)
///     # 0x01C10 QP2CQP               
///               $CQPLUT              QP2CQP            REG          
///     @ 0x01C50                      (P)
///     # 0x01C50 rIDX2BID             
///               $IDX2BID             rIDX2BID          REG          
///     @ 0x01D10                      (P)
///     # 0x01D10 cibco                
///               $CIBCO               cibco             REG          
///     @ 0x01D40                      (P)
///     # 0x01D40 resCtx               
///               $RESLUT              resCtx            REG          
///     @ 0x01D80                      (P)
///     # 0x01D80 syncData             
///               $LUT64b              syncData          REG       [8]
///     @ 0x01DC0                      (P)
///     # 0x01DC0 cmdDS1               
///               $LUT64b              cmdDS1            REG          
///     @ 0x01DC8                      (W-)
///     #         # Stuffing bytes...
///               %% 448
///     @ 0x01E00                      (P)
///     # 0x01E00 localPSER            
///               $VSLocal             localPSER         REG          
///                                    ###
///                                    * Local data area of stream parser
///                                    ###
///     @ 0x01E80                      (W-)
///     #         # Stuffing bytes...
///               %% 3072
///     @ 0x02000                      (P)
///     # 0x02000 VCMsgQ               
///               $LUT64b              VCMsgQ            REG     [128]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to vpro.hbo to PCube
///                                    ###
///     @ 0x02400                      (P)
///     # 0x02400 P3FopQ               
///               $LUT64b              P3FopQ            REG      [64]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * FOP queue to vpro.hbo to PCube
///                                    ###
///     @ 0x02600                      (P)
///     # 0x02600 rBID2IDX             
///               $BID2IDX             rBID2IDX          REG          
///     @ 0x02678                      (P)
///     # 0x02678 rBID2SCL             
///               $BID2SCL             rBID2SCL          REG          
///     @ 0x029A8                      (P)
///     # 0x029A8 b2CoLoc              
///               $CoLocLUT            b2CoLoc           REG          
///     @ 0x02A28                      (P)
///     # 0x02A28 vcmDesc              
///               $VCMLUT              vcmDesc           REG          
///     @ 0x02AA8                      (P)
///     # 0x02AA8 fopCmdPOOL           
///               $FOPCmdPOOL          fopCmdPOOL        REG          
///     @ 0x02BC8                      (P)
///     # 0x02BC8 fopFuncTab           
///               $FOPFuncTab          fopFuncTab        REG          
///     @ 0x02BE8                      (P)
///     # 0x02BE8 fopCmdIdx            
///               $FOPCmdIDX           fopCmdIdx         REG          
///     @ 0x02D10                      (W-)
///     #         # Stuffing bytes...
///               %% 896
///     @ 0x02D80                      (P)
///     # 0x02D80 localSYNP            
///               $VSLocal             localSYNP         REG          
///                                    ###
///                                    * Local data area of syntax processor
///                                    ###
///     @ 0x02E00                      (P)
///     # 0x02E00 tctxDP1              
///               $tCtxDP              tctxDP1           REG          
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:   11792B, bits:   89194b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_halData
#define h_halData (){}

    #define        halData_stackPSER                           0x2000
    #define        halData_stackSYNP                           0x3000
    ///////////////////////////////////////////////////////////
    #define     RA_halData_mbCtxQ                              0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_halData_mbpropQ                             0x0A10
    ///////////////////////////////////////////////////////////
    #define     RA_halData_ctxPSER                             0x0C10
    ///////////////////////////////////////////////////////////
    #define     RA_halData_ctxSYNP                             0x0C40
    ///////////////////////////////////////////////////////////
    #define     RA_halData_tagDS                               0x0C78
    ///////////////////////////////////////////////////////////
    #define     RA_halData_DSMsgQ                              0x0C80
    ///////////////////////////////////////////////////////////
    #define     RA_halData_tCtxOut                             0x0D00
    ///////////////////////////////////////////////////////////
    #define     RA_halData_tCtxIn                              0x0E00
    ///////////////////////////////////////////////////////////
    #define     RA_halData_P3TCQ                               0x1000
    ///////////////////////////////////////////////////////////
    #define     RA_halData_pairDesc                            0x1400
    ///////////////////////////////////////////////////////////
    #define     RA_halData_DSMsgQ1                             0x1920
    ///////////////////////////////////////////////////////////
    #define     RA_halData_tagDS1                              0x19A0
    ///////////////////////////////////////////////////////////
    #define     RA_halData_t2prop                              0x19A8
    ///////////////////////////////////////////////////////////
    #define     RA_halData_t2prop8x8                           0x1A10
    ///////////////////////////////////////////////////////////
    #define     RA_halData_InvScan                             0x1A20
    ///////////////////////////////////////////////////////////
    #define     RA_halData_cn2cbp                              0x1BB0
    ///////////////////////////////////////////////////////////
    #define     RA_halData_QP2CQP                              0x1C10
    ///////////////////////////////////////////////////////////
    #define     RA_halData_rIDX2BID                            0x1C50
    ///////////////////////////////////////////////////////////
    #define     RA_halData_cibco                               0x1D10
    ///////////////////////////////////////////////////////////
    #define     RA_halData_resCtx                              0x1D40
    ///////////////////////////////////////////////////////////
    #define     RA_halData_syncData                            0x1D80
    ///////////////////////////////////////////////////////////
    #define     RA_halData_cmdDS1                              0x1DC0
    ///////////////////////////////////////////////////////////
    #define     RA_halData_localPSER                           0x1E00
    ///////////////////////////////////////////////////////////
    #define     RA_halData_VCMsgQ                              0x2000
    ///////////////////////////////////////////////////////////
    #define     RA_halData_P3FopQ                              0x2400
    ///////////////////////////////////////////////////////////
    #define     RA_halData_rBID2IDX                            0x2600
    ///////////////////////////////////////////////////////////
    #define     RA_halData_rBID2SCL                            0x2678
    ///////////////////////////////////////////////////////////
    #define     RA_halData_b2CoLoc                             0x29A8
    ///////////////////////////////////////////////////////////
    #define     RA_halData_vcmDesc                             0x2A28
    ///////////////////////////////////////////////////////////
    #define     RA_halData_fopCmdPOOL                          0x2AA8
    ///////////////////////////////////////////////////////////
    #define     RA_halData_fopFuncTab                          0x2BC8
    ///////////////////////////////////////////////////////////
    #define     RA_halData_fopCmdIdx                           0x2BE8
    ///////////////////////////////////////////////////////////
    #define     RA_halData_localSYNP                           0x2D80
    ///////////////////////////////////////////////////////////
    #define     RA_halData_tctxDP1                             0x2E00
    ///////////////////////////////////////////////////////////

    typedef struct SIE_halData {
    ///////////////////////////////////////////////////////////
              SIE_MBCTXQ                                       ie_mbCtxQ;
    ///////////////////////////////////////////////////////////
              SIE_MBPROP                                       ie_mbpropQ[8];
    ///////////////////////////////////////////////////////////
              SIE_CtxPSER                                      ie_ctxPSER;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC34                                    [12];
    ///////////////////////////////////////////////////////////
              SIE_CtxSYNP                                      ie_ctxSYNP;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC70                                    [8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_tagDS;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DSMsgQ[16];
    ///////////////////////////////////////////////////////////
              SIE_TCTXMB                                       ie_tCtxOut[2];
    ///////////////////////////////////////////////////////////
              SIE_TCTXMB                                       ie_tCtxIn[4];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_P3TCQ[128];
    ///////////////////////////////////////////////////////////
              SIE_PairRow                                      ie_pairDesc;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DSMsgQ1[16];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_tagDS1;
    ///////////////////////////////////////////////////////////
              SIE_T2PROP                                       ie_t2prop;
    ///////////////////////////////////////////////////////////
              SIE_T2PROP8x8                                    ie_t2prop8x8;
    ///////////////////////////////////////////////////////////
              SIE_InvScanBLK                                   ie_InvScan;
    ///////////////////////////////////////////////////////////
              SIE_CBPLUT                                       ie_cn2cbp;
    ///////////////////////////////////////////////////////////
              SIE_CQPLUT                                       ie_QP2CQP;
    ///////////////////////////////////////////////////////////
              SIE_IDX2BID                                      ie_rIDX2BID;
    ///////////////////////////////////////////////////////////
              SIE_CIBCO                                        ie_cibco;
    ///////////////////////////////////////////////////////////
              SIE_RESLUT                                       ie_resCtx;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_syncData[8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_cmdDS1;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx1DC8                                   [56];
    ///////////////////////////////////////////////////////////
              SIE_VSLocal                                      ie_localPSER;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx1E80                                   [384];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_VCMsgQ[128];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_P3FopQ[64];
    ///////////////////////////////////////////////////////////
              SIE_BID2IDX                                      ie_rBID2IDX;
    ///////////////////////////////////////////////////////////
              SIE_BID2SCL                                      ie_rBID2SCL;
    ///////////////////////////////////////////////////////////
              SIE_CoLocLUT                                     ie_b2CoLoc;
    ///////////////////////////////////////////////////////////
              SIE_VCMLUT                                       ie_vcmDesc;
    ///////////////////////////////////////////////////////////
              SIE_FOPCmdPOOL                                   ie_fopCmdPOOL;
    ///////////////////////////////////////////////////////////
              SIE_FOPFuncTab                                   ie_fopFuncTab;
    ///////////////////////////////////////////////////////////
              SIE_FOPCmdIDX                                    ie_fopCmdIdx;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx2D10                                   [112];
    ///////////////////////////////////////////////////////////
              SIE_VSLocal                                      ie_localSYNP;
    ///////////////////////////////////////////////////////////
              SIE_tCtxDP                                       ie_tctxDP1;
    ///////////////////////////////////////////////////////////
    } SIE_halData;

    ///////////////////////////////////////////////////////////
     SIGN32 halData_drvrd(SIE_halData *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 halData_drvwr(SIE_halData *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void halData_reset(SIE_halData *p);
     SIGN32 halData_cmp  (SIE_halData *p, SIE_halData *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define halData_check(p,pie,pfx,hLOG) halData_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define halData_print(p,    pfx,hLOG) halData_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: halData
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BPRF64PIC                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 3  format                    
///                                    : h264                      0x0
///                                    : wmv                       0x1
///                                                 ###
///                                                 * VC-1 Main Profile
///                                                 ###
///                                    : mpg2                      0x2
///                                    : mpg4                      0x4
///                                    : vc1ap                     0x5
///                                                 ###
///                                                 * VC-1 Advanced Profile
///                                                 * Format of the current video stream
///                                                 ###
///               %unsigned 1  cabac                     
///                                    ###
///                                    * Whether current slice is coded in CABAC
///                                    ###
///               %unsigned 2  picType                   
///                                    : I                         0x0
///                                    : P                         0x1
///                                    : B                         0x2
///                                                 ###
///                                                 * Used by PMV to qualify between P_skip & B_skip
///                                                 ###
///               %unsigned 5  maxL0                     
///                                    ###
///                                    * H264: num_ref_idx_l0_active_minus1
///                                    ###
///               %unsigned 5  maxL1                     
///                                    ###
///                                    * H264: num_ref_idx_l1_active_minus1
///                                    ###
///               %unsigned 1  MbaffPic                  
///                                    ###
///                                    * Whether current picture is Mbaff pic or not; for FOP
///                                    * For VC-1:
///                                    * (~Mbaffpic && ~fieldPic) -> progressive
///                                    * (Mbaffpic && ~fieldPic) -> interlace frame
///                                    ###
///               %unsigned 1  fieldPic                  
///                                    ###
///                                    * Whether current picture is field coded or not; for FOP
///                                    * For VC-1:
///                                    * (~MbaffPic && fieldPic) -> interlace field, one ref;
///                                    * (MbaffPic && fieldPic) -> interlace field, two ref
///                                    ###
///               %unsigned 1  spatialPred               
///                                    ###
///                                    * Spatial direct prediction modee; for dirMV.
///                                    ###
///               %unsigned 1  colPicMbaff               
///                                    ###
///                                    * Whether colocated pic is Mbaff pic or not; for dirMV
///                                    ###
///               %unsigned 1  colPicField               
///                                    ###
///                                    * Whether colocated picture is field pic or not; for dirMV
///                                    ###
///               %unsigned 1  colPicST                  
///                                    ###
///                                    * Co-located picture is a long-term (0) or short-term (1) reference picture; for dirMV.
///                                    ###
///               %unsigned 5  AC0Offset                 
///                                    ###
///                                    * = slice_alpha_c0_offset_div2<<1, -12 ~ +12, inclusive, even numbers only. For FOP only.
///                                    ###
///               %unsigned 5  BetaOffset                
///                                    ###
///                                    * = slice_beta_offset_div2<<1, -12 ~ +12, inclusive, even numbers only. For FOP only.
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 16 dqAcLimit                 
///                                    ###
///                                    * Saturation limit for AC dequantization
///                                    * Also apply for universal dequantization
///                                    ###
///               %unsigned 14 dqDcLimit                 
///                                    ###
///                                    * Saturation limit for DC dequantization
///                                    ###
///               %unsigned 2  mismatch                  
///                                    : none                      0x0
///                                    : mpeg1                     0x1
///                                    : mpeg2                     0x2
///                                                 ###
///                                                 * mismatch control, for AC dequant only
///                                                 * End of BPRF64PIC
///                                                 ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BPRF64PIC
#define h_BPRF64PIC (){}

    #define     BA_BPRF64PIC_format                            0x0000
    #define     B16BPRF64PIC_format                            0x0000
    #define   LSb32BPRF64PIC_format                               0
    #define   LSb16BPRF64PIC_format                               0
    #define       bBPRF64PIC_format                            3
    #define   MSK32BPRF64PIC_format                               0x00000007
    #define        BPRF64PIC_format_h264                                    0x0
    #define        BPRF64PIC_format_wmv                                     0x1
    #define        BPRF64PIC_format_mpg2                                    0x2
    #define        BPRF64PIC_format_mpg4                                    0x4
    #define        BPRF64PIC_format_vc1ap                                   0x5

    #define     BA_BPRF64PIC_cabac                             0x0000
    #define     B16BPRF64PIC_cabac                             0x0000
    #define   LSb32BPRF64PIC_cabac                                3
    #define   LSb16BPRF64PIC_cabac                                3
    #define       bBPRF64PIC_cabac                             1
    #define   MSK32BPRF64PIC_cabac                                0x00000008

    #define     BA_BPRF64PIC_picType                           0x0000
    #define     B16BPRF64PIC_picType                           0x0000
    #define   LSb32BPRF64PIC_picType                              4
    #define   LSb16BPRF64PIC_picType                              4
    #define       bBPRF64PIC_picType                           2
    #define   MSK32BPRF64PIC_picType                              0x00000030
    #define        BPRF64PIC_picType_I                                      0x0
    #define        BPRF64PIC_picType_P                                      0x1
    #define        BPRF64PIC_picType_B                                      0x2

    #define     BA_BPRF64PIC_maxL0                             0x0000
    #define     B16BPRF64PIC_maxL0                             0x0000
    #define   LSb32BPRF64PIC_maxL0                                6
    #define   LSb16BPRF64PIC_maxL0                                6
    #define       bBPRF64PIC_maxL0                             5
    #define   MSK32BPRF64PIC_maxL0                                0x000007C0

    #define     BA_BPRF64PIC_maxL1                             0x0001
    #define     B16BPRF64PIC_maxL1                             0x0000
    #define   LSb32BPRF64PIC_maxL1                                11
    #define   LSb16BPRF64PIC_maxL1                                11
    #define       bBPRF64PIC_maxL1                             5
    #define   MSK32BPRF64PIC_maxL1                                0x0000F800

    #define     BA_BPRF64PIC_MbaffPic                          0x0002
    #define     B16BPRF64PIC_MbaffPic                          0x0002
    #define   LSb32BPRF64PIC_MbaffPic                             16
    #define   LSb16BPRF64PIC_MbaffPic                             0
    #define       bBPRF64PIC_MbaffPic                          1
    #define   MSK32BPRF64PIC_MbaffPic                             0x00010000

    #define     BA_BPRF64PIC_fieldPic                          0x0002
    #define     B16BPRF64PIC_fieldPic                          0x0002
    #define   LSb32BPRF64PIC_fieldPic                             17
    #define   LSb16BPRF64PIC_fieldPic                             1
    #define       bBPRF64PIC_fieldPic                          1
    #define   MSK32BPRF64PIC_fieldPic                             0x00020000

    #define     BA_BPRF64PIC_spatialPred                       0x0002
    #define     B16BPRF64PIC_spatialPred                       0x0002
    #define   LSb32BPRF64PIC_spatialPred                          18
    #define   LSb16BPRF64PIC_spatialPred                          2
    #define       bBPRF64PIC_spatialPred                       1
    #define   MSK32BPRF64PIC_spatialPred                          0x00040000

    #define     BA_BPRF64PIC_colPicMbaff                       0x0002
    #define     B16BPRF64PIC_colPicMbaff                       0x0002
    #define   LSb32BPRF64PIC_colPicMbaff                          19
    #define   LSb16BPRF64PIC_colPicMbaff                          3
    #define       bBPRF64PIC_colPicMbaff                       1
    #define   MSK32BPRF64PIC_colPicMbaff                          0x00080000

    #define     BA_BPRF64PIC_colPicField                       0x0002
    #define     B16BPRF64PIC_colPicField                       0x0002
    #define   LSb32BPRF64PIC_colPicField                          20
    #define   LSb16BPRF64PIC_colPicField                          4
    #define       bBPRF64PIC_colPicField                       1
    #define   MSK32BPRF64PIC_colPicField                          0x00100000

    #define     BA_BPRF64PIC_colPicST                          0x0002
    #define     B16BPRF64PIC_colPicST                          0x0002
    #define   LSb32BPRF64PIC_colPicST                             21
    #define   LSb16BPRF64PIC_colPicST                             5
    #define       bBPRF64PIC_colPicST                          1
    #define   MSK32BPRF64PIC_colPicST                             0x00200000

    #define     BA_BPRF64PIC_AC0Offset                         0x0002
    #define     B16BPRF64PIC_AC0Offset                         0x0002
    #define   LSb32BPRF64PIC_AC0Offset                            22
    #define   LSb16BPRF64PIC_AC0Offset                            6
    #define       bBPRF64PIC_AC0Offset                         5
    #define   MSK32BPRF64PIC_AC0Offset                            0x07C00000

    #define     BA_BPRF64PIC_BetaOffset                        0x0003
    #define     B16BPRF64PIC_BetaOffset                        0x0002
    #define   LSb32BPRF64PIC_BetaOffset                           27
    #define   LSb16BPRF64PIC_BetaOffset                           11
    #define       bBPRF64PIC_BetaOffset                        5
    #define   MSK32BPRF64PIC_BetaOffset                           0xF8000000
    ///////////////////////////////////////////////////////////

    #define     BA_BPRF64PIC_dqAcLimit                         0x0004
    #define     B16BPRF64PIC_dqAcLimit                         0x0004
    #define   LSb32BPRF64PIC_dqAcLimit                            0
    #define   LSb16BPRF64PIC_dqAcLimit                            0
    #define       bBPRF64PIC_dqAcLimit                         16
    #define   MSK32BPRF64PIC_dqAcLimit                            0x0000FFFF

    #define     BA_BPRF64PIC_dqDcLimit                         0x0006
    #define     B16BPRF64PIC_dqDcLimit                         0x0006
    #define   LSb32BPRF64PIC_dqDcLimit                            16
    #define   LSb16BPRF64PIC_dqDcLimit                            0
    #define       bBPRF64PIC_dqDcLimit                         14
    #define   MSK32BPRF64PIC_dqDcLimit                            0x3FFF0000

    #define     BA_BPRF64PIC_mismatch                          0x0007
    #define     B16BPRF64PIC_mismatch                          0x0006
    #define   LSb32BPRF64PIC_mismatch                             30
    #define   LSb16BPRF64PIC_mismatch                             14
    #define       bBPRF64PIC_mismatch                          2
    #define   MSK32BPRF64PIC_mismatch                             0xC0000000
    #define        BPRF64PIC_mismatch_none                                  0x0
    #define        BPRF64PIC_mismatch_mpeg1                                 0x1
    #define        BPRF64PIC_mismatch_mpeg2                                 0x2
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BPRF64PIC {
    ///////////////////////////////////////////////////////////
    #define   GET32BPRF64PIC_format(r32)                       _BFGET_(r32, 2, 0)
    #define   SET32BPRF64PIC_format(r32,v)                     _BFSET_(r32, 2, 0,v)
    #define   GET16BPRF64PIC_format(r16)                       _BFGET_(r16, 2, 0)
    #define   SET16BPRF64PIC_format(r16,v)                     _BFSET_(r16, 2, 0,v)

    #define   GET32BPRF64PIC_cabac(r32)                        _BFGET_(r32, 3, 3)
    #define   SET32BPRF64PIC_cabac(r32,v)                      _BFSET_(r32, 3, 3,v)
    #define   GET16BPRF64PIC_cabac(r16)                        _BFGET_(r16, 3, 3)
    #define   SET16BPRF64PIC_cabac(r16,v)                      _BFSET_(r16, 3, 3,v)

    #define   GET32BPRF64PIC_picType(r32)                      _BFGET_(r32, 5, 4)
    #define   SET32BPRF64PIC_picType(r32,v)                    _BFSET_(r32, 5, 4,v)
    #define   GET16BPRF64PIC_picType(r16)                      _BFGET_(r16, 5, 4)
    #define   SET16BPRF64PIC_picType(r16,v)                    _BFSET_(r16, 5, 4,v)

    #define   GET32BPRF64PIC_maxL0(r32)                        _BFGET_(r32,10, 6)
    #define   SET32BPRF64PIC_maxL0(r32,v)                      _BFSET_(r32,10, 6,v)
    #define   GET16BPRF64PIC_maxL0(r16)                        _BFGET_(r16,10, 6)
    #define   SET16BPRF64PIC_maxL0(r16,v)                      _BFSET_(r16,10, 6,v)

    #define   GET32BPRF64PIC_maxL1(r32)                        _BFGET_(r32,15,11)
    #define   SET32BPRF64PIC_maxL1(r32,v)                      _BFSET_(r32,15,11,v)
    #define   GET16BPRF64PIC_maxL1(r16)                        _BFGET_(r16,15,11)
    #define   SET16BPRF64PIC_maxL1(r16,v)                      _BFSET_(r16,15,11,v)

    #define   GET32BPRF64PIC_MbaffPic(r32)                     _BFGET_(r32,16,16)
    #define   SET32BPRF64PIC_MbaffPic(r32,v)                   _BFSET_(r32,16,16,v)
    #define   GET16BPRF64PIC_MbaffPic(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16BPRF64PIC_MbaffPic(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define   GET32BPRF64PIC_fieldPic(r32)                     _BFGET_(r32,17,17)
    #define   SET32BPRF64PIC_fieldPic(r32,v)                   _BFSET_(r32,17,17,v)
    #define   GET16BPRF64PIC_fieldPic(r16)                     _BFGET_(r16, 1, 1)
    #define   SET16BPRF64PIC_fieldPic(r16,v)                   _BFSET_(r16, 1, 1,v)

    #define   GET32BPRF64PIC_spatialPred(r32)                  _BFGET_(r32,18,18)
    #define   SET32BPRF64PIC_spatialPred(r32,v)                _BFSET_(r32,18,18,v)
    #define   GET16BPRF64PIC_spatialPred(r16)                  _BFGET_(r16, 2, 2)
    #define   SET16BPRF64PIC_spatialPred(r16,v)                _BFSET_(r16, 2, 2,v)

    #define   GET32BPRF64PIC_colPicMbaff(r32)                  _BFGET_(r32,19,19)
    #define   SET32BPRF64PIC_colPicMbaff(r32,v)                _BFSET_(r32,19,19,v)
    #define   GET16BPRF64PIC_colPicMbaff(r16)                  _BFGET_(r16, 3, 3)
    #define   SET16BPRF64PIC_colPicMbaff(r16,v)                _BFSET_(r16, 3, 3,v)

    #define   GET32BPRF64PIC_colPicField(r32)                  _BFGET_(r32,20,20)
    #define   SET32BPRF64PIC_colPicField(r32,v)                _BFSET_(r32,20,20,v)
    #define   GET16BPRF64PIC_colPicField(r16)                  _BFGET_(r16, 4, 4)
    #define   SET16BPRF64PIC_colPicField(r16,v)                _BFSET_(r16, 4, 4,v)

    #define   GET32BPRF64PIC_colPicST(r32)                     _BFGET_(r32,21,21)
    #define   SET32BPRF64PIC_colPicST(r32,v)                   _BFSET_(r32,21,21,v)
    #define   GET16BPRF64PIC_colPicST(r16)                     _BFGET_(r16, 5, 5)
    #define   SET16BPRF64PIC_colPicST(r16,v)                   _BFSET_(r16, 5, 5,v)

    #define   GET32BPRF64PIC_AC0Offset(r32)                    _BFGET_(r32,26,22)
    #define   SET32BPRF64PIC_AC0Offset(r32,v)                  _BFSET_(r32,26,22,v)
    #define   GET16BPRF64PIC_AC0Offset(r16)                    _BFGET_(r16,10, 6)
    #define   SET16BPRF64PIC_AC0Offset(r16,v)                  _BFSET_(r16,10, 6,v)

    #define   GET32BPRF64PIC_BetaOffset(r32)                   _BFGET_(r32,31,27)
    #define   SET32BPRF64PIC_BetaOffset(r32,v)                 _BFSET_(r32,31,27,v)
    #define   GET16BPRF64PIC_BetaOffset(r16)                   _BFGET_(r16,15,11)
    #define   SET16BPRF64PIC_BetaOffset(r16,v)                 _BFSET_(r16,15,11,v)

            UNSG32 u_format                                    :  3;
            UNSG32 u_cabac                                     :  1;
            UNSG32 u_picType                                   :  2;
            UNSG32 u_maxL0                                     :  5;
            UNSG32 u_maxL1                                     :  5;
            UNSG32 u_MbaffPic                                  :  1;
            UNSG32 u_fieldPic                                  :  1;
            UNSG32 u_spatialPred                               :  1;
            UNSG32 u_colPicMbaff                               :  1;
            UNSG32 u_colPicField                               :  1;
            UNSG32 u_colPicST                                  :  1;
            UNSG32 u_AC0Offset                                 :  5;
            UNSG32 u_BetaOffset                                :  5;
    ///////////////////////////////////////////////////////////
    #define   GET32BPRF64PIC_dqAcLimit(r32)                    _BFGET_(r32,15, 0)
    #define   SET32BPRF64PIC_dqAcLimit(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16BPRF64PIC_dqAcLimit(r16)                    _BFGET_(r16,15, 0)
    #define   SET16BPRF64PIC_dqAcLimit(r16,v)                  _BFSET_(r16,15, 0,v)

    #define   GET32BPRF64PIC_dqDcLimit(r32)                    _BFGET_(r32,29,16)
    #define   SET32BPRF64PIC_dqDcLimit(r32,v)                  _BFSET_(r32,29,16,v)
    #define   GET16BPRF64PIC_dqDcLimit(r16)                    _BFGET_(r16,13, 0)
    #define   SET16BPRF64PIC_dqDcLimit(r16,v)                  _BFSET_(r16,13, 0,v)

    #define   GET32BPRF64PIC_mismatch(r32)                     _BFGET_(r32,31,30)
    #define   SET32BPRF64PIC_mismatch(r32,v)                   _BFSET_(r32,31,30,v)
    #define   GET16BPRF64PIC_mismatch(r16)                     _BFGET_(r16,15,14)
    #define   SET16BPRF64PIC_mismatch(r16,v)                   _BFSET_(r16,15,14,v)

            UNSG32 u_dqAcLimit                                 : 16;
            UNSG32 u_dqDcLimit                                 : 14;
            UNSG32 u_mismatch                                  :  2;
    ///////////////////////////////////////////////////////////
    } SIE_BPRF64PIC;

    ///////////////////////////////////////////////////////////
     SIGN32 BPRF64PIC_drvrd(SIE_BPRF64PIC *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BPRF64PIC_drvwr(SIE_BPRF64PIC *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BPRF64PIC_reset(SIE_BPRF64PIC *p);
     SIGN32 BPRF64PIC_cmp  (SIE_BPRF64PIC *p, SIE_BPRF64PIC *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BPRF64PIC_check(p,pie,pfx,hLOG) BPRF64PIC_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BPRF64PIC_print(p,    pfx,hLOG) BPRF64PIC_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BPRF64PIC
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BPCtxPSER                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 DEC                  (P)
///               %unsigned 16 totalMBs                  
///                                    ###
///                                    * Number macroblock to decode
///                                    ###
///               %unsigned 16 moreSkip                  
///                                    ###
///                                    * Number pending skipped macroblocks
///                                    ###
///     # 0x00004 DEC1                 
///               %unsigned 16 MBs                       
///                                    ###
///                                    * Number macroblock successfully decoded
///                                    ###
///               %unsigned 8  error                     
///                                    ###
///                                    * Error status from entropy decoder
///                                    ###
///               %unsigned 1  eos                       
///                                    ###
///                                    * EOS-hit status from entropy decoder
///                                    ###
///               %unsigned 1  forceEND                  
///                                    ###
///                                    * Force LastInSeq after all requested MB done
///                                    ###
///               %%        6          # Stuffing bits...
///     @ 0x00008 SLICE                (P)
///               %unsigned 16 MBX                       
///                                    ###
///                                    * X-location of first MB in slice
///                                    ###
///               %unsigned 16 MBY                       
///                                    ###
///                                    * Y-location of first MB in slice
///                                    ###
///     # 0x0000C SLICE1               
///               %unsigned 16 hMBs                      
///                                    ###
///                                    * Horizontal MB count
///                                    ###
///               %unsigned 16 ID                        
///                                    ###
///                                    * Slice ID
///                                    * for vc1: this will be used as Picture height in MB
///                                    * unit
///                                    ###
///     @ 0x00010 MB                   (P)
///               %unsigned 16 QP                        
///                                    ###
///                                    * Slice initial (& current) luma QP
///                                    * for vc1: PQUANT
///                                    ###
///               %signed   8  QuDlt                     
///                                    ###
///                                    * [-12,12] for Cb QP delta
///                                    ###
///               %signed   8  QvDlt                     
///                                    ###
///                                    * [-12,12] for Cr QP delta
///                                    ###
///     # 0x00014 MB1                  
///               %unsigned 16 type                      
///                                    : I                         0x0
///                                    : P                         0x1
///                                    : B                         0x2
///                                    : D                         0x3
///                                                 ###
///                                                 * Slice type (D for MPEG1)
///                                                 ###
///               %unsigned 1  MBAFF                     
///                                    ###
///                                    * H.264: if MBAFF picture
///                                    ###
///               %unsigned 1  mono                      
///                                    ###
///                                    * H.264: if luma only
///                                    ###
///               %unsigned 1  cabac                     
///                                    ###
///                                    * H.264: if coded by CABAC
///                                    ###
///               %unsigned 1  tsf8x8                    
///                                    ###
///                                    * H.264: if supporting 8x8 transform
///                                    * VC1: MB Transform switch enable flag
///                                    ###
///               %unsigned 1  direct8x8                 
///                                    ###
///                                    * H.264: direct 8x8 inference flag
///                                    ###
///               %unsigned 1  mtpL0                     
///                                    ###
///                                    * H.264: multiple reference frame in ref-List[0]
///                                    ###
///               %unsigned 1  mtpL1                     
///                                    ###
///                                    * H.264: multiple reference frame in ref-List[1]
///                                    ###
///               %unsigned 1  rIDX0                     
///                                    ###
///                                    * Run-time:
///                                    * Necessary to decode rIDX for ref-List[0]
///                                    ###
///               %unsigned 1  rIDX1                     
///                                    ###
///                                    * Run-time:
///                                    * Necessary to decode rIDX for ref-List[1]
///                                    ###
///               %unsigned 1  fieldMB                   
///                                    ###
///                                    * Run-time:
///                                    * Current field MB-pair in MBAFF picture
///                                    ###
///               %unsigned 1  fieldPendMB               
///                                    ###
///                                    * Run-time:
///                                    * Pending field MB-pair to skip
///                                    ###
///               %unsigned 1  decSkip                   
///                                    ###
///                                    * Run-time:
///                                    * If to decode skip_flag/skip_run for next MB
///                                    ###
///               %unsigned 1  FirstInPair               
///                                    ###
///                                    * Run-time:
///                                    * If to decode 1st MB in MBAFF pair
///                                    ###
///               %unsigned 1  cond_dQP                  
///                                    ###
///                                    * Run-time for CABAD only:
///                                    * Condition to decode mb_qp_delta
///                                    ###
///               %unsigned 1  has_dQP                   
///                                    ###
///                                    * Run-time for CABAD only:
///                                    * Whether mb_qp_delta is decoded for a MB
///                                    ###
///               %%        1          # Stuffing bits...
///     @ 0x00018 MaxIDX               (P)
///               %unsigned 16 L0                        
///                                    ###
///                                    * Max rIDX in ref-list[0] (frame)
///                                    ###
///               %unsigned 16 L1                        
///                                    ###
///                                    * Max rIDX in ref-list[1] (frame)
///                                    ###
///     @ 0x0001C SYNPRO               (P)
///               %unsigned 1  loopFlt                   
///                                    ###
///                                    * If enable loop-filter
///                                    ###
///               %unsigned 1  LFInSlice                 
///                                    ###
///                                    * Loop-filter within slice
///                                    ###
///               %unsigned 5  AC0Offset                 
///                                    ###
///                                    * Alpha c0 offset in slice header
///                                    ###
///               %unsigned 5  BetaOffset                
///                                    ###
///                                    * Beta offset in slice header
///                                    ###
///               %%        20         # Stuffing bits...
///     @ 0x00020 IF                   (P)
///               %unsigned 16 err_MBs                   
///                                    ###
///                                    * Error MB number in current slice
///                                    ###
///               %unsigned 8  is_sync                   
///                                    ###
///                                    * Search next sync word or not
///                                    * End of BPCtxPSER
///                                    ###
///               %%        8          # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      36B, bits:     253b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BPCtxPSER
#define h_BPCtxPSER (){}

    #define     RA_BPCtxPSER_DEC                               0x0000

    #define     BA_BPCtxPSER_DEC_totalMBs                      0x0000
    #define     B16BPCtxPSER_DEC_totalMBs                      0x0000
    #define   LSb32BPCtxPSER_DEC_totalMBs                         0
    #define   LSb16BPCtxPSER_DEC_totalMBs                         0
    #define       bBPCtxPSER_DEC_totalMBs                      16
    #define   MSK32BPCtxPSER_DEC_totalMBs                         0x0000FFFF

    #define     BA_BPCtxPSER_DEC_moreSkip                      0x0002
    #define     B16BPCtxPSER_DEC_moreSkip                      0x0002
    #define   LSb32BPCtxPSER_DEC_moreSkip                         16
    #define   LSb16BPCtxPSER_DEC_moreSkip                         0
    #define       bBPCtxPSER_DEC_moreSkip                      16
    #define   MSK32BPCtxPSER_DEC_moreSkip                         0xFFFF0000

    #define     RA_BPCtxPSER_DEC1                              0x0004

    #define     BA_BPCtxPSER_DEC_MBs                           0x0004
    #define     B16BPCtxPSER_DEC_MBs                           0x0004
    #define   LSb32BPCtxPSER_DEC_MBs                              0
    #define   LSb16BPCtxPSER_DEC_MBs                              0
    #define       bBPCtxPSER_DEC_MBs                           16
    #define   MSK32BPCtxPSER_DEC_MBs                              0x0000FFFF

    #define     BA_BPCtxPSER_DEC_error                         0x0006
    #define     B16BPCtxPSER_DEC_error                         0x0006
    #define   LSb32BPCtxPSER_DEC_error                            16
    #define   LSb16BPCtxPSER_DEC_error                            0
    #define       bBPCtxPSER_DEC_error                         8
    #define   MSK32BPCtxPSER_DEC_error                            0x00FF0000

    #define     BA_BPCtxPSER_DEC_eos                           0x0007
    #define     B16BPCtxPSER_DEC_eos                           0x0006
    #define   LSb32BPCtxPSER_DEC_eos                              24
    #define   LSb16BPCtxPSER_DEC_eos                              8
    #define       bBPCtxPSER_DEC_eos                           1
    #define   MSK32BPCtxPSER_DEC_eos                              0x01000000

    #define     BA_BPCtxPSER_DEC_forceEND                      0x0007
    #define     B16BPCtxPSER_DEC_forceEND                      0x0006
    #define   LSb32BPCtxPSER_DEC_forceEND                         25
    #define   LSb16BPCtxPSER_DEC_forceEND                         9
    #define       bBPCtxPSER_DEC_forceEND                      1
    #define   MSK32BPCtxPSER_DEC_forceEND                         0x02000000
    ///////////////////////////////////////////////////////////
    #define     RA_BPCtxPSER_SLICE                             0x0008

    #define     BA_BPCtxPSER_SLICE_MBX                         0x0008
    #define     B16BPCtxPSER_SLICE_MBX                         0x0008
    #define   LSb32BPCtxPSER_SLICE_MBX                            0
    #define   LSb16BPCtxPSER_SLICE_MBX                            0
    #define       bBPCtxPSER_SLICE_MBX                         16
    #define   MSK32BPCtxPSER_SLICE_MBX                            0x0000FFFF

    #define     BA_BPCtxPSER_SLICE_MBY                         0x000A
    #define     B16BPCtxPSER_SLICE_MBY                         0x000A
    #define   LSb32BPCtxPSER_SLICE_MBY                            16
    #define   LSb16BPCtxPSER_SLICE_MBY                            0
    #define       bBPCtxPSER_SLICE_MBY                         16
    #define   MSK32BPCtxPSER_SLICE_MBY                            0xFFFF0000

    #define     RA_BPCtxPSER_SLICE1                            0x000C

    #define     BA_BPCtxPSER_SLICE_hMBs                        0x000C
    #define     B16BPCtxPSER_SLICE_hMBs                        0x000C
    #define   LSb32BPCtxPSER_SLICE_hMBs                           0
    #define   LSb16BPCtxPSER_SLICE_hMBs                           0
    #define       bBPCtxPSER_SLICE_hMBs                        16
    #define   MSK32BPCtxPSER_SLICE_hMBs                           0x0000FFFF

    #define     BA_BPCtxPSER_SLICE_ID                          0x000E
    #define     B16BPCtxPSER_SLICE_ID                          0x000E
    #define   LSb32BPCtxPSER_SLICE_ID                             16
    #define   LSb16BPCtxPSER_SLICE_ID                             0
    #define       bBPCtxPSER_SLICE_ID                          16
    #define   MSK32BPCtxPSER_SLICE_ID                             0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_BPCtxPSER_MB                                0x0010

    #define     BA_BPCtxPSER_MB_QP                             0x0010
    #define     B16BPCtxPSER_MB_QP                             0x0010
    #define   LSb32BPCtxPSER_MB_QP                                0
    #define   LSb16BPCtxPSER_MB_QP                                0
    #define       bBPCtxPSER_MB_QP                             16
    #define   MSK32BPCtxPSER_MB_QP                                0x0000FFFF

    #define     BA_BPCtxPSER_MB_QuDlt                          0x0012
    #define     B16BPCtxPSER_MB_QuDlt                          0x0012
    #define   LSb32BPCtxPSER_MB_QuDlt                             16
    #define   LSb16BPCtxPSER_MB_QuDlt                             0
    #define       bBPCtxPSER_MB_QuDlt                          8
    #define   MSK32BPCtxPSER_MB_QuDlt                             0x00FF0000

    #define     BA_BPCtxPSER_MB_QvDlt                          0x0013
    #define     B16BPCtxPSER_MB_QvDlt                          0x0012
    #define   LSb32BPCtxPSER_MB_QvDlt                             24
    #define   LSb16BPCtxPSER_MB_QvDlt                             8
    #define       bBPCtxPSER_MB_QvDlt                          8
    #define   MSK32BPCtxPSER_MB_QvDlt                             0xFF000000

    #define     RA_BPCtxPSER_MB1                               0x0014

    #define     BA_BPCtxPSER_MB_type                           0x0014
    #define     B16BPCtxPSER_MB_type                           0x0014
    #define   LSb32BPCtxPSER_MB_type                              0
    #define   LSb16BPCtxPSER_MB_type                              0
    #define       bBPCtxPSER_MB_type                           16
    #define   MSK32BPCtxPSER_MB_type                              0x0000FFFF
    #define        BPCtxPSER_MB_type_I                                      0x0
    #define        BPCtxPSER_MB_type_P                                      0x1
    #define        BPCtxPSER_MB_type_B                                      0x2
    #define        BPCtxPSER_MB_type_D                                      0x3

    #define     BA_BPCtxPSER_MB_MBAFF                          0x0016
    #define     B16BPCtxPSER_MB_MBAFF                          0x0016
    #define   LSb32BPCtxPSER_MB_MBAFF                             16
    #define   LSb16BPCtxPSER_MB_MBAFF                             0
    #define       bBPCtxPSER_MB_MBAFF                          1
    #define   MSK32BPCtxPSER_MB_MBAFF                             0x00010000

    #define     BA_BPCtxPSER_MB_mono                           0x0016
    #define     B16BPCtxPSER_MB_mono                           0x0016
    #define   LSb32BPCtxPSER_MB_mono                              17
    #define   LSb16BPCtxPSER_MB_mono                              1
    #define       bBPCtxPSER_MB_mono                           1
    #define   MSK32BPCtxPSER_MB_mono                              0x00020000

    #define     BA_BPCtxPSER_MB_cabac                          0x0016
    #define     B16BPCtxPSER_MB_cabac                          0x0016
    #define   LSb32BPCtxPSER_MB_cabac                             18
    #define   LSb16BPCtxPSER_MB_cabac                             2
    #define       bBPCtxPSER_MB_cabac                          1
    #define   MSK32BPCtxPSER_MB_cabac                             0x00040000

    #define     BA_BPCtxPSER_MB_tsf8x8                         0x0016
    #define     B16BPCtxPSER_MB_tsf8x8                         0x0016
    #define   LSb32BPCtxPSER_MB_tsf8x8                            19
    #define   LSb16BPCtxPSER_MB_tsf8x8                            3
    #define       bBPCtxPSER_MB_tsf8x8                         1
    #define   MSK32BPCtxPSER_MB_tsf8x8                            0x00080000

    #define     BA_BPCtxPSER_MB_direct8x8                      0x0016
    #define     B16BPCtxPSER_MB_direct8x8                      0x0016
    #define   LSb32BPCtxPSER_MB_direct8x8                         20
    #define   LSb16BPCtxPSER_MB_direct8x8                         4
    #define       bBPCtxPSER_MB_direct8x8                      1
    #define   MSK32BPCtxPSER_MB_direct8x8                         0x00100000

    #define     BA_BPCtxPSER_MB_mtpL0                          0x0016
    #define     B16BPCtxPSER_MB_mtpL0                          0x0016
    #define   LSb32BPCtxPSER_MB_mtpL0                             21
    #define   LSb16BPCtxPSER_MB_mtpL0                             5
    #define       bBPCtxPSER_MB_mtpL0                          1
    #define   MSK32BPCtxPSER_MB_mtpL0                             0x00200000

    #define     BA_BPCtxPSER_MB_mtpL1                          0x0016
    #define     B16BPCtxPSER_MB_mtpL1                          0x0016
    #define   LSb32BPCtxPSER_MB_mtpL1                             22
    #define   LSb16BPCtxPSER_MB_mtpL1                             6
    #define       bBPCtxPSER_MB_mtpL1                          1
    #define   MSK32BPCtxPSER_MB_mtpL1                             0x00400000

    #define     BA_BPCtxPSER_MB_rIDX0                          0x0016
    #define     B16BPCtxPSER_MB_rIDX0                          0x0016
    #define   LSb32BPCtxPSER_MB_rIDX0                             23
    #define   LSb16BPCtxPSER_MB_rIDX0                             7
    #define       bBPCtxPSER_MB_rIDX0                          1
    #define   MSK32BPCtxPSER_MB_rIDX0                             0x00800000

    #define     BA_BPCtxPSER_MB_rIDX1                          0x0017
    #define     B16BPCtxPSER_MB_rIDX1                          0x0016
    #define   LSb32BPCtxPSER_MB_rIDX1                             24
    #define   LSb16BPCtxPSER_MB_rIDX1                             8
    #define       bBPCtxPSER_MB_rIDX1                          1
    #define   MSK32BPCtxPSER_MB_rIDX1                             0x01000000

    #define     BA_BPCtxPSER_MB_fieldMB                        0x0017
    #define     B16BPCtxPSER_MB_fieldMB                        0x0016
    #define   LSb32BPCtxPSER_MB_fieldMB                           25
    #define   LSb16BPCtxPSER_MB_fieldMB                           9
    #define       bBPCtxPSER_MB_fieldMB                        1
    #define   MSK32BPCtxPSER_MB_fieldMB                           0x02000000

    #define     BA_BPCtxPSER_MB_fieldPendMB                    0x0017
    #define     B16BPCtxPSER_MB_fieldPendMB                    0x0016
    #define   LSb32BPCtxPSER_MB_fieldPendMB                       26
    #define   LSb16BPCtxPSER_MB_fieldPendMB                       10
    #define       bBPCtxPSER_MB_fieldPendMB                    1
    #define   MSK32BPCtxPSER_MB_fieldPendMB                       0x04000000

    #define     BA_BPCtxPSER_MB_decSkip                        0x0017
    #define     B16BPCtxPSER_MB_decSkip                        0x0016
    #define   LSb32BPCtxPSER_MB_decSkip                           27
    #define   LSb16BPCtxPSER_MB_decSkip                           11
    #define       bBPCtxPSER_MB_decSkip                        1
    #define   MSK32BPCtxPSER_MB_decSkip                           0x08000000

    #define     BA_BPCtxPSER_MB_FirstInPair                    0x0017
    #define     B16BPCtxPSER_MB_FirstInPair                    0x0016
    #define   LSb32BPCtxPSER_MB_FirstInPair                       28
    #define   LSb16BPCtxPSER_MB_FirstInPair                       12
    #define       bBPCtxPSER_MB_FirstInPair                    1
    #define   MSK32BPCtxPSER_MB_FirstInPair                       0x10000000

    #define     BA_BPCtxPSER_MB_cond_dQP                       0x0017
    #define     B16BPCtxPSER_MB_cond_dQP                       0x0016
    #define   LSb32BPCtxPSER_MB_cond_dQP                          29
    #define   LSb16BPCtxPSER_MB_cond_dQP                          13
    #define       bBPCtxPSER_MB_cond_dQP                       1
    #define   MSK32BPCtxPSER_MB_cond_dQP                          0x20000000

    #define     BA_BPCtxPSER_MB_has_dQP                        0x0017
    #define     B16BPCtxPSER_MB_has_dQP                        0x0016
    #define   LSb32BPCtxPSER_MB_has_dQP                           30
    #define   LSb16BPCtxPSER_MB_has_dQP                           14
    #define       bBPCtxPSER_MB_has_dQP                        1
    #define   MSK32BPCtxPSER_MB_has_dQP                           0x40000000
    ///////////////////////////////////////////////////////////
    #define     RA_BPCtxPSER_MaxIDX                            0x0018

    #define     BA_BPCtxPSER_MaxIDX_L0                         0x0018
    #define     B16BPCtxPSER_MaxIDX_L0                         0x0018
    #define   LSb32BPCtxPSER_MaxIDX_L0                            0
    #define   LSb16BPCtxPSER_MaxIDX_L0                            0
    #define       bBPCtxPSER_MaxIDX_L0                         16
    #define   MSK32BPCtxPSER_MaxIDX_L0                            0x0000FFFF

    #define     BA_BPCtxPSER_MaxIDX_L1                         0x001A
    #define     B16BPCtxPSER_MaxIDX_L1                         0x001A
    #define   LSb32BPCtxPSER_MaxIDX_L1                            16
    #define   LSb16BPCtxPSER_MaxIDX_L1                            0
    #define       bBPCtxPSER_MaxIDX_L1                         16
    #define   MSK32BPCtxPSER_MaxIDX_L1                            0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_BPCtxPSER_SYNPRO                            0x001C

    #define     BA_BPCtxPSER_SYNPRO_loopFlt                    0x001C
    #define     B16BPCtxPSER_SYNPRO_loopFlt                    0x001C
    #define   LSb32BPCtxPSER_SYNPRO_loopFlt                       0
    #define   LSb16BPCtxPSER_SYNPRO_loopFlt                       0
    #define       bBPCtxPSER_SYNPRO_loopFlt                    1
    #define   MSK32BPCtxPSER_SYNPRO_loopFlt                       0x00000001

    #define     BA_BPCtxPSER_SYNPRO_LFInSlice                  0x001C
    #define     B16BPCtxPSER_SYNPRO_LFInSlice                  0x001C
    #define   LSb32BPCtxPSER_SYNPRO_LFInSlice                     1
    #define   LSb16BPCtxPSER_SYNPRO_LFInSlice                     1
    #define       bBPCtxPSER_SYNPRO_LFInSlice                  1
    #define   MSK32BPCtxPSER_SYNPRO_LFInSlice                     0x00000002

    #define     BA_BPCtxPSER_SYNPRO_AC0Offset                  0x001C
    #define     B16BPCtxPSER_SYNPRO_AC0Offset                  0x001C
    #define   LSb32BPCtxPSER_SYNPRO_AC0Offset                     2
    #define   LSb16BPCtxPSER_SYNPRO_AC0Offset                     2
    #define       bBPCtxPSER_SYNPRO_AC0Offset                  5
    #define   MSK32BPCtxPSER_SYNPRO_AC0Offset                     0x0000007C

    #define     BA_BPCtxPSER_SYNPRO_BetaOffset                 0x001C
    #define     B16BPCtxPSER_SYNPRO_BetaOffset                 0x001C
    #define   LSb32BPCtxPSER_SYNPRO_BetaOffset                    7
    #define   LSb16BPCtxPSER_SYNPRO_BetaOffset                    7
    #define       bBPCtxPSER_SYNPRO_BetaOffset                 5
    #define   MSK32BPCtxPSER_SYNPRO_BetaOffset                    0x00000F80
    ///////////////////////////////////////////////////////////
    #define     RA_BPCtxPSER_IF                                0x0020

    #define     BA_BPCtxPSER_IF_err_MBs                        0x0020
    #define     B16BPCtxPSER_IF_err_MBs                        0x0020
    #define   LSb32BPCtxPSER_IF_err_MBs                           0
    #define   LSb16BPCtxPSER_IF_err_MBs                           0
    #define       bBPCtxPSER_IF_err_MBs                        16
    #define   MSK32BPCtxPSER_IF_err_MBs                           0x0000FFFF

    #define     BA_BPCtxPSER_IF_is_sync                        0x0022
    #define     B16BPCtxPSER_IF_is_sync                        0x0022
    #define   LSb32BPCtxPSER_IF_is_sync                           16
    #define   LSb16BPCtxPSER_IF_is_sync                           0
    #define       bBPCtxPSER_IF_is_sync                        8
    #define   MSK32BPCtxPSER_IF_is_sync                           0x00FF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BPCtxPSER {
    ///////////////////////////////////////////////////////////
    #define   GET32BPCtxPSER_DEC_totalMBs(r32)                 _BFGET_(r32,15, 0)
    #define   SET32BPCtxPSER_DEC_totalMBs(r32,v)               _BFSET_(r32,15, 0,v)
    #define   GET16BPCtxPSER_DEC_totalMBs(r16)                 _BFGET_(r16,15, 0)
    #define   SET16BPCtxPSER_DEC_totalMBs(r16,v)               _BFSET_(r16,15, 0,v)

    #define   GET32BPCtxPSER_DEC_moreSkip(r32)                 _BFGET_(r32,31,16)
    #define   SET32BPCtxPSER_DEC_moreSkip(r32,v)               _BFSET_(r32,31,16,v)
    #define   GET16BPCtxPSER_DEC_moreSkip(r16)                 _BFGET_(r16,15, 0)
    #define   SET16BPCtxPSER_DEC_moreSkip(r16,v)               _BFSET_(r16,15, 0,v)

    #define     w32BPCtxPSER_DEC                               {\
            UNSG32 uDEC_totalMBs                               : 16;\
            UNSG32 uDEC_moreSkip                               : 16;\
          }
    union { UNSG32 u32BPCtxPSER_DEC;
            struct w32BPCtxPSER_DEC;
          };
    #define   GET32BPCtxPSER_DEC_MBs(r32)                      _BFGET_(r32,15, 0)
    #define   SET32BPCtxPSER_DEC_MBs(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16BPCtxPSER_DEC_MBs(r16)                      _BFGET_(r16,15, 0)
    #define   SET16BPCtxPSER_DEC_MBs(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32BPCtxPSER_DEC_error(r32)                    _BFGET_(r32,23,16)
    #define   SET32BPCtxPSER_DEC_error(r32,v)                  _BFSET_(r32,23,16,v)
    #define   GET16BPCtxPSER_DEC_error(r16)                    _BFGET_(r16, 7, 0)
    #define   SET16BPCtxPSER_DEC_error(r16,v)                  _BFSET_(r16, 7, 0,v)

    #define   GET32BPCtxPSER_DEC_eos(r32)                      _BFGET_(r32,24,24)
    #define   SET32BPCtxPSER_DEC_eos(r32,v)                    _BFSET_(r32,24,24,v)
    #define   GET16BPCtxPSER_DEC_eos(r16)                      _BFGET_(r16, 8, 8)
    #define   SET16BPCtxPSER_DEC_eos(r16,v)                    _BFSET_(r16, 8, 8,v)

    #define   GET32BPCtxPSER_DEC_forceEND(r32)                 _BFGET_(r32,25,25)
    #define   SET32BPCtxPSER_DEC_forceEND(r32,v)               _BFSET_(r32,25,25,v)
    #define   GET16BPCtxPSER_DEC_forceEND(r16)                 _BFGET_(r16, 9, 9)
    #define   SET16BPCtxPSER_DEC_forceEND(r16,v)               _BFSET_(r16, 9, 9,v)

    #define     w32BPCtxPSER_DEC1                              {\
            UNSG32 uDEC_MBs                                    : 16;\
            UNSG32 uDEC_error                                  :  8;\
            UNSG32 uDEC_eos                                    :  1;\
            UNSG32 uDEC_forceEND                               :  1;\
            UNSG32 RSVDx4_b26                                  :  6;\
          }
    union { UNSG32 u32BPCtxPSER_DEC1;
            struct w32BPCtxPSER_DEC1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32BPCtxPSER_SLICE_MBX(r32)                    _BFGET_(r32,15, 0)
    #define   SET32BPCtxPSER_SLICE_MBX(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16BPCtxPSER_SLICE_MBX(r16)                    _BFGET_(r16,15, 0)
    #define   SET16BPCtxPSER_SLICE_MBX(r16,v)                  _BFSET_(r16,15, 0,v)

    #define   GET32BPCtxPSER_SLICE_MBY(r32)                    _BFGET_(r32,31,16)
    #define   SET32BPCtxPSER_SLICE_MBY(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16BPCtxPSER_SLICE_MBY(r16)                    _BFGET_(r16,15, 0)
    #define   SET16BPCtxPSER_SLICE_MBY(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32BPCtxPSER_SLICE                             {\
            UNSG32 uSLICE_MBX                                  : 16;\
            UNSG32 uSLICE_MBY                                  : 16;\
          }
    union { UNSG32 u32BPCtxPSER_SLICE;
            struct w32BPCtxPSER_SLICE;
          };
    #define   GET32BPCtxPSER_SLICE_hMBs(r32)                   _BFGET_(r32,15, 0)
    #define   SET32BPCtxPSER_SLICE_hMBs(r32,v)                 _BFSET_(r32,15, 0,v)
    #define   GET16BPCtxPSER_SLICE_hMBs(r16)                   _BFGET_(r16,15, 0)
    #define   SET16BPCtxPSER_SLICE_hMBs(r16,v)                 _BFSET_(r16,15, 0,v)

    #define   GET32BPCtxPSER_SLICE_ID(r32)                     _BFGET_(r32,31,16)
    #define   SET32BPCtxPSER_SLICE_ID(r32,v)                   _BFSET_(r32,31,16,v)
    #define   GET16BPCtxPSER_SLICE_ID(r16)                     _BFGET_(r16,15, 0)
    #define   SET16BPCtxPSER_SLICE_ID(r16,v)                   _BFSET_(r16,15, 0,v)

    #define     w32BPCtxPSER_SLICE1                            {\
            UNSG32 uSLICE_hMBs                                 : 16;\
            UNSG32 uSLICE_ID                                   : 16;\
          }
    union { UNSG32 u32BPCtxPSER_SLICE1;
            struct w32BPCtxPSER_SLICE1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32BPCtxPSER_MB_QP(r32)                        _BFGET_(r32,15, 0)
    #define   SET32BPCtxPSER_MB_QP(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16BPCtxPSER_MB_QP(r16)                        _BFGET_(r16,15, 0)
    #define   SET16BPCtxPSER_MB_QP(r16,v)                      _BFSET_(r16,15, 0,v)

    #define   GET32BPCtxPSER_MB_QuDlt(r32)                     _BFGET_(r32,23,16)
    #define   SET32BPCtxPSER_MB_QuDlt(r32,v)                   _BFSET_(r32,23,16,v)
    #define   GET16BPCtxPSER_MB_QuDlt(r16)                     _BFGET_(r16, 7, 0)
    #define   SET16BPCtxPSER_MB_QuDlt(r16,v)                   _BFSET_(r16, 7, 0,v)

    #define   GET32BPCtxPSER_MB_QvDlt(r32)                     _BFGET_(r32,31,24)
    #define   SET32BPCtxPSER_MB_QvDlt(r32,v)                   _BFSET_(r32,31,24,v)
    #define   GET16BPCtxPSER_MB_QvDlt(r16)                     _BFGET_(r16,15, 8)
    #define   SET16BPCtxPSER_MB_QvDlt(r16,v)                   _BFSET_(r16,15, 8,v)

    #define     w32BPCtxPSER_MB                                {\
            UNSG32 uMB_QP                                      : 16;\
            UNSG32 sMB_QuDlt                                   :  8;\
            UNSG32 sMB_QvDlt                                   :  8;\
          }
    union { UNSG32 u32BPCtxPSER_MB;
            struct w32BPCtxPSER_MB;
          };
    #define   GET32BPCtxPSER_MB_type(r32)                      _BFGET_(r32,15, 0)
    #define   SET32BPCtxPSER_MB_type(r32,v)                    _BFSET_(r32,15, 0,v)
    #define   GET16BPCtxPSER_MB_type(r16)                      _BFGET_(r16,15, 0)
    #define   SET16BPCtxPSER_MB_type(r16,v)                    _BFSET_(r16,15, 0,v)

    #define   GET32BPCtxPSER_MB_MBAFF(r32)                     _BFGET_(r32,16,16)
    #define   SET32BPCtxPSER_MB_MBAFF(r32,v)                   _BFSET_(r32,16,16,v)
    #define   GET16BPCtxPSER_MB_MBAFF(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16BPCtxPSER_MB_MBAFF(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define   GET32BPCtxPSER_MB_mono(r32)                      _BFGET_(r32,17,17)
    #define   SET32BPCtxPSER_MB_mono(r32,v)                    _BFSET_(r32,17,17,v)
    #define   GET16BPCtxPSER_MB_mono(r16)                      _BFGET_(r16, 1, 1)
    #define   SET16BPCtxPSER_MB_mono(r16,v)                    _BFSET_(r16, 1, 1,v)

    #define   GET32BPCtxPSER_MB_cabac(r32)                     _BFGET_(r32,18,18)
    #define   SET32BPCtxPSER_MB_cabac(r32,v)                   _BFSET_(r32,18,18,v)
    #define   GET16BPCtxPSER_MB_cabac(r16)                     _BFGET_(r16, 2, 2)
    #define   SET16BPCtxPSER_MB_cabac(r16,v)                   _BFSET_(r16, 2, 2,v)

    #define   GET32BPCtxPSER_MB_tsf8x8(r32)                    _BFGET_(r32,19,19)
    #define   SET32BPCtxPSER_MB_tsf8x8(r32,v)                  _BFSET_(r32,19,19,v)
    #define   GET16BPCtxPSER_MB_tsf8x8(r16)                    _BFGET_(r16, 3, 3)
    #define   SET16BPCtxPSER_MB_tsf8x8(r16,v)                  _BFSET_(r16, 3, 3,v)

    #define   GET32BPCtxPSER_MB_direct8x8(r32)                 _BFGET_(r32,20,20)
    #define   SET32BPCtxPSER_MB_direct8x8(r32,v)               _BFSET_(r32,20,20,v)
    #define   GET16BPCtxPSER_MB_direct8x8(r16)                 _BFGET_(r16, 4, 4)
    #define   SET16BPCtxPSER_MB_direct8x8(r16,v)               _BFSET_(r16, 4, 4,v)

    #define   GET32BPCtxPSER_MB_mtpL0(r32)                     _BFGET_(r32,21,21)
    #define   SET32BPCtxPSER_MB_mtpL0(r32,v)                   _BFSET_(r32,21,21,v)
    #define   GET16BPCtxPSER_MB_mtpL0(r16)                     _BFGET_(r16, 5, 5)
    #define   SET16BPCtxPSER_MB_mtpL0(r16,v)                   _BFSET_(r16, 5, 5,v)

    #define   GET32BPCtxPSER_MB_mtpL1(r32)                     _BFGET_(r32,22,22)
    #define   SET32BPCtxPSER_MB_mtpL1(r32,v)                   _BFSET_(r32,22,22,v)
    #define   GET16BPCtxPSER_MB_mtpL1(r16)                     _BFGET_(r16, 6, 6)
    #define   SET16BPCtxPSER_MB_mtpL1(r16,v)                   _BFSET_(r16, 6, 6,v)

    #define   GET32BPCtxPSER_MB_rIDX0(r32)                     _BFGET_(r32,23,23)
    #define   SET32BPCtxPSER_MB_rIDX0(r32,v)                   _BFSET_(r32,23,23,v)
    #define   GET16BPCtxPSER_MB_rIDX0(r16)                     _BFGET_(r16, 7, 7)
    #define   SET16BPCtxPSER_MB_rIDX0(r16,v)                   _BFSET_(r16, 7, 7,v)

    #define   GET32BPCtxPSER_MB_rIDX1(r32)                     _BFGET_(r32,24,24)
    #define   SET32BPCtxPSER_MB_rIDX1(r32,v)                   _BFSET_(r32,24,24,v)
    #define   GET16BPCtxPSER_MB_rIDX1(r16)                     _BFGET_(r16, 8, 8)
    #define   SET16BPCtxPSER_MB_rIDX1(r16,v)                   _BFSET_(r16, 8, 8,v)

    #define   GET32BPCtxPSER_MB_fieldMB(r32)                   _BFGET_(r32,25,25)
    #define   SET32BPCtxPSER_MB_fieldMB(r32,v)                 _BFSET_(r32,25,25,v)
    #define   GET16BPCtxPSER_MB_fieldMB(r16)                   _BFGET_(r16, 9, 9)
    #define   SET16BPCtxPSER_MB_fieldMB(r16,v)                 _BFSET_(r16, 9, 9,v)

    #define   GET32BPCtxPSER_MB_fieldPendMB(r32)               _BFGET_(r32,26,26)
    #define   SET32BPCtxPSER_MB_fieldPendMB(r32,v)             _BFSET_(r32,26,26,v)
    #define   GET16BPCtxPSER_MB_fieldPendMB(r16)               _BFGET_(r16,10,10)
    #define   SET16BPCtxPSER_MB_fieldPendMB(r16,v)             _BFSET_(r16,10,10,v)

    #define   GET32BPCtxPSER_MB_decSkip(r32)                   _BFGET_(r32,27,27)
    #define   SET32BPCtxPSER_MB_decSkip(r32,v)                 _BFSET_(r32,27,27,v)
    #define   GET16BPCtxPSER_MB_decSkip(r16)                   _BFGET_(r16,11,11)
    #define   SET16BPCtxPSER_MB_decSkip(r16,v)                 _BFSET_(r16,11,11,v)

    #define   GET32BPCtxPSER_MB_FirstInPair(r32)               _BFGET_(r32,28,28)
    #define   SET32BPCtxPSER_MB_FirstInPair(r32,v)             _BFSET_(r32,28,28,v)
    #define   GET16BPCtxPSER_MB_FirstInPair(r16)               _BFGET_(r16,12,12)
    #define   SET16BPCtxPSER_MB_FirstInPair(r16,v)             _BFSET_(r16,12,12,v)

    #define   GET32BPCtxPSER_MB_cond_dQP(r32)                  _BFGET_(r32,29,29)
    #define   SET32BPCtxPSER_MB_cond_dQP(r32,v)                _BFSET_(r32,29,29,v)
    #define   GET16BPCtxPSER_MB_cond_dQP(r16)                  _BFGET_(r16,13,13)
    #define   SET16BPCtxPSER_MB_cond_dQP(r16,v)                _BFSET_(r16,13,13,v)

    #define   GET32BPCtxPSER_MB_has_dQP(r32)                   _BFGET_(r32,30,30)
    #define   SET32BPCtxPSER_MB_has_dQP(r32,v)                 _BFSET_(r32,30,30,v)
    #define   GET16BPCtxPSER_MB_has_dQP(r16)                   _BFGET_(r16,14,14)
    #define   SET16BPCtxPSER_MB_has_dQP(r16,v)                 _BFSET_(r16,14,14,v)

    #define     w32BPCtxPSER_MB1                               {\
            UNSG32 uMB_type                                    : 16;\
            UNSG32 uMB_MBAFF                                   :  1;\
            UNSG32 uMB_mono                                    :  1;\
            UNSG32 uMB_cabac                                   :  1;\
            UNSG32 uMB_tsf8x8                                  :  1;\
            UNSG32 uMB_direct8x8                               :  1;\
            UNSG32 uMB_mtpL0                                   :  1;\
            UNSG32 uMB_mtpL1                                   :  1;\
            UNSG32 uMB_rIDX0                                   :  1;\
            UNSG32 uMB_rIDX1                                   :  1;\
            UNSG32 uMB_fieldMB                                 :  1;\
            UNSG32 uMB_fieldPendMB                             :  1;\
            UNSG32 uMB_decSkip                                 :  1;\
            UNSG32 uMB_FirstInPair                             :  1;\
            UNSG32 uMB_cond_dQP                                :  1;\
            UNSG32 uMB_has_dQP                                 :  1;\
            UNSG32 RSVDx14_b31                                 :  1;\
          }
    union { UNSG32 u32BPCtxPSER_MB1;
            struct w32BPCtxPSER_MB1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32BPCtxPSER_MaxIDX_L0(r32)                    _BFGET_(r32,15, 0)
    #define   SET32BPCtxPSER_MaxIDX_L0(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16BPCtxPSER_MaxIDX_L0(r16)                    _BFGET_(r16,15, 0)
    #define   SET16BPCtxPSER_MaxIDX_L0(r16,v)                  _BFSET_(r16,15, 0,v)

    #define   GET32BPCtxPSER_MaxIDX_L1(r32)                    _BFGET_(r32,31,16)
    #define   SET32BPCtxPSER_MaxIDX_L1(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16BPCtxPSER_MaxIDX_L1(r16)                    _BFGET_(r16,15, 0)
    #define   SET16BPCtxPSER_MaxIDX_L1(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32BPCtxPSER_MaxIDX                            {\
            UNSG32 uMaxIDX_L0                                  : 16;\
            UNSG32 uMaxIDX_L1                                  : 16;\
          }
    union { UNSG32 u32BPCtxPSER_MaxIDX;
            struct w32BPCtxPSER_MaxIDX;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32BPCtxPSER_SYNPRO_loopFlt(r32)               _BFGET_(r32, 0, 0)
    #define   SET32BPCtxPSER_SYNPRO_loopFlt(r32,v)             _BFSET_(r32, 0, 0,v)
    #define   GET16BPCtxPSER_SYNPRO_loopFlt(r16)               _BFGET_(r16, 0, 0)
    #define   SET16BPCtxPSER_SYNPRO_loopFlt(r16,v)             _BFSET_(r16, 0, 0,v)

    #define   GET32BPCtxPSER_SYNPRO_LFInSlice(r32)             _BFGET_(r32, 1, 1)
    #define   SET32BPCtxPSER_SYNPRO_LFInSlice(r32,v)           _BFSET_(r32, 1, 1,v)
    #define   GET16BPCtxPSER_SYNPRO_LFInSlice(r16)             _BFGET_(r16, 1, 1)
    #define   SET16BPCtxPSER_SYNPRO_LFInSlice(r16,v)           _BFSET_(r16, 1, 1,v)

    #define   GET32BPCtxPSER_SYNPRO_AC0Offset(r32)             _BFGET_(r32, 6, 2)
    #define   SET32BPCtxPSER_SYNPRO_AC0Offset(r32,v)           _BFSET_(r32, 6, 2,v)
    #define   GET16BPCtxPSER_SYNPRO_AC0Offset(r16)             _BFGET_(r16, 6, 2)
    #define   SET16BPCtxPSER_SYNPRO_AC0Offset(r16,v)           _BFSET_(r16, 6, 2,v)

    #define   GET32BPCtxPSER_SYNPRO_BetaOffset(r32)            _BFGET_(r32,11, 7)
    #define   SET32BPCtxPSER_SYNPRO_BetaOffset(r32,v)          _BFSET_(r32,11, 7,v)
    #define   GET16BPCtxPSER_SYNPRO_BetaOffset(r16)            _BFGET_(r16,11, 7)
    #define   SET16BPCtxPSER_SYNPRO_BetaOffset(r16,v)          _BFSET_(r16,11, 7,v)

    #define     w32BPCtxPSER_SYNPRO                            {\
            UNSG32 uSYNPRO_loopFlt                             :  1;\
            UNSG32 uSYNPRO_LFInSlice                           :  1;\
            UNSG32 uSYNPRO_AC0Offset                           :  5;\
            UNSG32 uSYNPRO_BetaOffset                          :  5;\
            UNSG32 RSVDx1C_b12                                 : 20;\
          }
    union { UNSG32 u32BPCtxPSER_SYNPRO;
            struct w32BPCtxPSER_SYNPRO;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32BPCtxPSER_IF_err_MBs(r32)                   _BFGET_(r32,15, 0)
    #define   SET32BPCtxPSER_IF_err_MBs(r32,v)                 _BFSET_(r32,15, 0,v)
    #define   GET16BPCtxPSER_IF_err_MBs(r16)                   _BFGET_(r16,15, 0)
    #define   SET16BPCtxPSER_IF_err_MBs(r16,v)                 _BFSET_(r16,15, 0,v)

    #define   GET32BPCtxPSER_IF_is_sync(r32)                   _BFGET_(r32,23,16)
    #define   SET32BPCtxPSER_IF_is_sync(r32,v)                 _BFSET_(r32,23,16,v)
    #define   GET16BPCtxPSER_IF_is_sync(r16)                   _BFGET_(r16, 7, 0)
    #define   SET16BPCtxPSER_IF_is_sync(r16,v)                 _BFSET_(r16, 7, 0,v)

    #define     w32BPCtxPSER_IF                                {\
            UNSG32 uIF_err_MBs                                 : 16;\
            UNSG32 uIF_is_sync                                 :  8;\
            UNSG32 RSVDx20_b24                                 :  8;\
          }
    union { UNSG32 u32BPCtxPSER_IF;
            struct w32BPCtxPSER_IF;
          };
    ///////////////////////////////////////////////////////////
    } SIE_BPCtxPSER;

    typedef union  T32BPCtxPSER_DEC
          { UNSG32 u32;
            struct w32BPCtxPSER_DEC;
                 } T32BPCtxPSER_DEC;
    typedef union  T32BPCtxPSER_DEC1
          { UNSG32 u32;
            struct w32BPCtxPSER_DEC1;
                 } T32BPCtxPSER_DEC1;
    typedef union  T32BPCtxPSER_SLICE
          { UNSG32 u32;
            struct w32BPCtxPSER_SLICE;
                 } T32BPCtxPSER_SLICE;
    typedef union  T32BPCtxPSER_SLICE1
          { UNSG32 u32;
            struct w32BPCtxPSER_SLICE1;
                 } T32BPCtxPSER_SLICE1;
    typedef union  T32BPCtxPSER_MB
          { UNSG32 u32;
            struct w32BPCtxPSER_MB;
                 } T32BPCtxPSER_MB;
    typedef union  T32BPCtxPSER_MB1
          { UNSG32 u32;
            struct w32BPCtxPSER_MB1;
                 } T32BPCtxPSER_MB1;
    typedef union  T32BPCtxPSER_MaxIDX
          { UNSG32 u32;
            struct w32BPCtxPSER_MaxIDX;
                 } T32BPCtxPSER_MaxIDX;
    typedef union  T32BPCtxPSER_SYNPRO
          { UNSG32 u32;
            struct w32BPCtxPSER_SYNPRO;
                 } T32BPCtxPSER_SYNPRO;
    typedef union  T32BPCtxPSER_IF
          { UNSG32 u32;
            struct w32BPCtxPSER_IF;
                 } T32BPCtxPSER_IF;
    ///////////////////////////////////////////////////////////

    typedef union  TBPCtxPSER_DEC
          { UNSG32 u32[2];
            struct {
            struct w32BPCtxPSER_DEC;
            struct w32BPCtxPSER_DEC1;
                   };
                 } TBPCtxPSER_DEC;
    typedef union  TBPCtxPSER_SLICE
          { UNSG32 u32[2];
            struct {
            struct w32BPCtxPSER_SLICE;
            struct w32BPCtxPSER_SLICE1;
                   };
                 } TBPCtxPSER_SLICE;
    typedef union  TBPCtxPSER_MB
          { UNSG32 u32[2];
            struct {
            struct w32BPCtxPSER_MB;
            struct w32BPCtxPSER_MB1;
                   };
                 } TBPCtxPSER_MB;
    typedef union  TBPCtxPSER_MaxIDX
          { UNSG32 u32[1];
            struct {
            struct w32BPCtxPSER_MaxIDX;
                   };
                 } TBPCtxPSER_MaxIDX;
    typedef union  TBPCtxPSER_SYNPRO
          { UNSG32 u32[1];
            struct {
            struct w32BPCtxPSER_SYNPRO;
                   };
                 } TBPCtxPSER_SYNPRO;
    typedef union  TBPCtxPSER_IF
          { UNSG32 u32[1];
            struct {
            struct w32BPCtxPSER_IF;
                   };
                 } TBPCtxPSER_IF;

    ///////////////////////////////////////////////////////////
     SIGN32 BPCtxPSER_drvrd(SIE_BPCtxPSER *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BPCtxPSER_drvwr(SIE_BPCtxPSER *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BPCtxPSER_reset(SIE_BPCtxPSER *p);
     SIGN32 BPCtxPSER_cmp  (SIE_BPCtxPSER *p, SIE_BPCtxPSER *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BPCtxPSER_check(p,pie,pfx,hLOG) BPCtxPSER_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BPCtxPSER_print(p,    pfx,hLOG) BPCtxPSER_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BPCtxPSER
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BPCtxSYNP                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 prop                 (P)
///               %unsigned 16 start                     
///                                    ###
///                                    * Kick off syntax processor
///                                    ###
///               %unsigned 16 rBID                      
///                                    ###
///                                    * Current buffer ID, last 1b indicates access mode:
///                                    * 0: frame/progressive or top field
///                                    * 1: bottom field
///                                    ###
///     # 0x00004 prop1                
///               %unsigned 1  MBAFF                     
///                                    ###
///                                    * H.264: if MBAFF picture
///                                    ###
///               %unsigned 1  PicFLD                    
///                                    ###
///                                    * If field picture
///                                    ###
///               %unsigned 1  CoLocFLD                  
///                                    ###
///                                    * If co-located picture is field picture
///                                    ###
///               %unsigned 1  PairCoLoc                 
///                                    ###
///                                    * If to load co-located MB pair:
///                                    * = (MBAFF || PicFLD) && !CoLocFLD
///                                    ###
///               %unsigned 1  refCtx                    
///                                    ###
///                                    * If to output tCtx for future co-located use
///                                    ###
///               %unsigned 1  sliceB                    
///                                    ###
///                                    * If B-slice
///                                    ###
///               %unsigned 1  directEnb                 
///                                    ###
///                                    * If B-slice and direct mode enabled
///                                    ###
///               %unsigned 1  direct8x8                 
///                                    ###
///                                    * H.264: direct 8x8 inference flag
///                                    ###
///               %unsigned 1  directSpatial             
///                                    ###
///                                    * H.264: 0/1 for temporal/spatial direct mode
///                                    ###
///               %unsigned 1  loopFlt                   
///                                    ###
///                                    * If enable loop-filter
///                                    ###
///               %unsigned 1  LFInSlice                 
///                                    ###
///                                    * Loop-filter within slice
///                                    ###
///               %unsigned 1  CoLocFLDMB                
///                                    ###
///                                    * Run-time: if co-located MB is field MB
///                                    ###
///               %unsigned 1  CoLoc8x8                  
///                                    ###
///                                    * Run-time: if co-located MB has no sub-8x8
///                                    ###
///               %unsigned 1  CoLoc16x16                
///                                    ###
///                                    * Run-time: if co-located bottom MB has only 1 partition
///                                    ###
///               %unsigned 1  CoLoc8x8Btm               
///                                    ###
///                                    * Run-time: if co-located bottom MB has no sub-8x8
///                                    ###
///               %unsigned 1  CoLoc16x16Btm             
///                                    ###
///                                    * Run-time: if co-located MB has only 1 partition
///                                    ###
///               %unsigned 1  consIntra                 
///                                    ###
///                                    * H.264: if to constrain intra predictors
///                                    ###
///               %unsigned 1  btmCloser                 
///                                    ###
///                                    * H.264 direct mode: coloc is AFF and current is AFF and bottom POC is closer to curr POC
///                                    ###
///               %unsigned 1  tCtxDirect8x8             
///                                    ###
///                                    * H.264 direct mode:
///                                    * (frame_mbs_only_flag & direct_8x8_inference_flag)
///                                    ###
///               %unsigned 1  nFrmFld                   
///                                    ###
///                                    * H.264 direct mode: not Frame Field
///                                    * !(!MBAFF && !PicFLD && CoLocFLD)
///                                    ###
///               %unsigned 1  BtmFLD                    
///                                    ###
///                                    * Is current picture a bottom field
///                                    * PicFLD must be 1 if btmFLD is 1
///                                    ###
///               %%        11         # Stuffing bits...
///     @ 0x00008                      (P)
///               %unsigned 16 hMBs                      
///                                    ###
///                                    * Horizontal MB count
///                                    ###
///               %unsigned 16 vMBs                      
///                                    ###
///                                    * Vertical MB count
///                                    ###
///               %unsigned 16 total                     
///               %%        16         # Stuffing bits...
///     @ 0x00010                      (P)
///     # 0x00010 pic64                
///               $BPRF64PIC           pic64             REG          
///                                    ###
///                                    * Write only rf64pic copy, first 64 bit
///                                    ###
///     @ 0x00018 SN                   (P)
///               %unsigned 16 parser                    
///                                    ###
///                                    * Running MB counter of stream parsing
///                                    * Maintained by stream parser:
///                                    * parser ++;
///                                    ###
///               %unsigned 16 synproc                   
///                                    ###
///                                    * Running MB counter of syntax processing
///                                    * Maintained by syntax processor:
///                                    * synproc ++; fifo.ctxIn.pop(); fifo.ctxOut.push();
///                                    ###
///     # 0x0001C SN1                  
///               %unsigned 16 ctxIn                     
///                                    ###
///                                    * Running MB counter of input MB context
///                                    * Maintained by syntax processor:
///                                    * = synproc + FLOOR( fifo.ctxIn.lvl() )
///                                    ###
///               %unsigned 16 ctxOut                    
///                                    ###
///                                    * Running MB counter of output MB context
///                                    * Maintained by syntax processor:
///                                    * = synproc - CEIL( fifo.ctxOut.lvl() )
///                                    ###
///     # 0x00020 SN2                  
///               %unsigned 16 P3MsgQ                    
///                                    ###
///                                    * Running MB counter of P3Msg (mbprop) output
///                                    * Maintained by syntax processor:
///                                    * = synproc - CEIL( fifo.P3Msg.lvl() )
///                                    ###
///               %unsigned 16 P3FopQ                    
///                                    ###
///                                    * Running MB counter of FOP output
///                                    ###
///     # 0x00024 SN3                  
///               %unsigned 16 VCMsgQ                    
///                                    ###
///                                    * Running counter of vCache message output
///                                    ###
///               %unsigned 16 P3TCQ                     
///                                    ###
///                                    * Running counter of non-zero 8x8 TC output
///                                    ###
///     # 0x00028 SN4                  
///               %unsigned 16 cmdDStc                   
///                                    ###
///                                    * Running counter of Figo0's DS for TC
///                                    ###
///               %unsigned 16 cmdDS1                    
///                                    ###
///                                    * Running counter of Figo0's DS
///                                    ###
///     # 0x0002C SN5                  
///               %unsigned 16 cmdDSMB0                  
///                                    ###
///                                    * Running counter of Figo1's DS for TC
///                                    ###
///               %unsigned 16 cmdDSMB1                  
///                                    ###
///                                    * Running counter of Figo1's DS for MB
///                                    ###
///     # 0x00030 SN6                  
///               %unsigned 16 cmdDS                     
///                                    ###
///                                    * Running counter of data streamer command
///                                    * Starting from 0xFF at each picture
///                                    ###
///               %unsigned 16 vcmDesc                   
///                                    ###
///                                    * Running counter of vcMSG descriptor bank
///                                    * Staring from 0xFFFF at each picture
///                                    * End of BPCtxSYNP
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      52B, bits:     389b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BPCtxSYNP
#define h_BPCtxSYNP (){}

    #define     RA_BPCtxSYNP_prop                              0x0000

    #define     BA_BPCtxSYNP_prop_start                        0x0000
    #define     B16BPCtxSYNP_prop_start                        0x0000
    #define   LSb32BPCtxSYNP_prop_start                           0
    #define   LSb16BPCtxSYNP_prop_start                           0
    #define       bBPCtxSYNP_prop_start                        16
    #define   MSK32BPCtxSYNP_prop_start                           0x0000FFFF

    #define     BA_BPCtxSYNP_prop_rBID                         0x0002
    #define     B16BPCtxSYNP_prop_rBID                         0x0002
    #define   LSb32BPCtxSYNP_prop_rBID                            16
    #define   LSb16BPCtxSYNP_prop_rBID                            0
    #define       bBPCtxSYNP_prop_rBID                         16
    #define   MSK32BPCtxSYNP_prop_rBID                            0xFFFF0000

    #define     RA_BPCtxSYNP_prop1                             0x0004

    #define     BA_BPCtxSYNP_prop_MBAFF                        0x0004
    #define     B16BPCtxSYNP_prop_MBAFF                        0x0004
    #define   LSb32BPCtxSYNP_prop_MBAFF                           0
    #define   LSb16BPCtxSYNP_prop_MBAFF                           0
    #define       bBPCtxSYNP_prop_MBAFF                        1
    #define   MSK32BPCtxSYNP_prop_MBAFF                           0x00000001

    #define     BA_BPCtxSYNP_prop_PicFLD                       0x0004
    #define     B16BPCtxSYNP_prop_PicFLD                       0x0004
    #define   LSb32BPCtxSYNP_prop_PicFLD                          1
    #define   LSb16BPCtxSYNP_prop_PicFLD                          1
    #define       bBPCtxSYNP_prop_PicFLD                       1
    #define   MSK32BPCtxSYNP_prop_PicFLD                          0x00000002

    #define     BA_BPCtxSYNP_prop_CoLocFLD                     0x0004
    #define     B16BPCtxSYNP_prop_CoLocFLD                     0x0004
    #define   LSb32BPCtxSYNP_prop_CoLocFLD                        2
    #define   LSb16BPCtxSYNP_prop_CoLocFLD                        2
    #define       bBPCtxSYNP_prop_CoLocFLD                     1
    #define   MSK32BPCtxSYNP_prop_CoLocFLD                        0x00000004

    #define     BA_BPCtxSYNP_prop_PairCoLoc                    0x0004
    #define     B16BPCtxSYNP_prop_PairCoLoc                    0x0004
    #define   LSb32BPCtxSYNP_prop_PairCoLoc                       3
    #define   LSb16BPCtxSYNP_prop_PairCoLoc                       3
    #define       bBPCtxSYNP_prop_PairCoLoc                    1
    #define   MSK32BPCtxSYNP_prop_PairCoLoc                       0x00000008

    #define     BA_BPCtxSYNP_prop_refCtx                       0x0004
    #define     B16BPCtxSYNP_prop_refCtx                       0x0004
    #define   LSb32BPCtxSYNP_prop_refCtx                          4
    #define   LSb16BPCtxSYNP_prop_refCtx                          4
    #define       bBPCtxSYNP_prop_refCtx                       1
    #define   MSK32BPCtxSYNP_prop_refCtx                          0x00000010

    #define     BA_BPCtxSYNP_prop_sliceB                       0x0004
    #define     B16BPCtxSYNP_prop_sliceB                       0x0004
    #define   LSb32BPCtxSYNP_prop_sliceB                          5
    #define   LSb16BPCtxSYNP_prop_sliceB                          5
    #define       bBPCtxSYNP_prop_sliceB                       1
    #define   MSK32BPCtxSYNP_prop_sliceB                          0x00000020

    #define     BA_BPCtxSYNP_prop_directEnb                    0x0004
    #define     B16BPCtxSYNP_prop_directEnb                    0x0004
    #define   LSb32BPCtxSYNP_prop_directEnb                       6
    #define   LSb16BPCtxSYNP_prop_directEnb                       6
    #define       bBPCtxSYNP_prop_directEnb                    1
    #define   MSK32BPCtxSYNP_prop_directEnb                       0x00000040

    #define     BA_BPCtxSYNP_prop_direct8x8                    0x0004
    #define     B16BPCtxSYNP_prop_direct8x8                    0x0004
    #define   LSb32BPCtxSYNP_prop_direct8x8                       7
    #define   LSb16BPCtxSYNP_prop_direct8x8                       7
    #define       bBPCtxSYNP_prop_direct8x8                    1
    #define   MSK32BPCtxSYNP_prop_direct8x8                       0x00000080

    #define     BA_BPCtxSYNP_prop_directSpatial                0x0005
    #define     B16BPCtxSYNP_prop_directSpatial                0x0004
    #define   LSb32BPCtxSYNP_prop_directSpatial                   8
    #define   LSb16BPCtxSYNP_prop_directSpatial                   8
    #define       bBPCtxSYNP_prop_directSpatial                1
    #define   MSK32BPCtxSYNP_prop_directSpatial                   0x00000100

    #define     BA_BPCtxSYNP_prop_loopFlt                      0x0005
    #define     B16BPCtxSYNP_prop_loopFlt                      0x0004
    #define   LSb32BPCtxSYNP_prop_loopFlt                         9
    #define   LSb16BPCtxSYNP_prop_loopFlt                         9
    #define       bBPCtxSYNP_prop_loopFlt                      1
    #define   MSK32BPCtxSYNP_prop_loopFlt                         0x00000200

    #define     BA_BPCtxSYNP_prop_LFInSlice                    0x0005
    #define     B16BPCtxSYNP_prop_LFInSlice                    0x0004
    #define   LSb32BPCtxSYNP_prop_LFInSlice                       10
    #define   LSb16BPCtxSYNP_prop_LFInSlice                       10
    #define       bBPCtxSYNP_prop_LFInSlice                    1
    #define   MSK32BPCtxSYNP_prop_LFInSlice                       0x00000400

    #define     BA_BPCtxSYNP_prop_CoLocFLDMB                   0x0005
    #define     B16BPCtxSYNP_prop_CoLocFLDMB                   0x0004
    #define   LSb32BPCtxSYNP_prop_CoLocFLDMB                      11
    #define   LSb16BPCtxSYNP_prop_CoLocFLDMB                      11
    #define       bBPCtxSYNP_prop_CoLocFLDMB                   1
    #define   MSK32BPCtxSYNP_prop_CoLocFLDMB                      0x00000800

    #define     BA_BPCtxSYNP_prop_CoLoc8x8                     0x0005
    #define     B16BPCtxSYNP_prop_CoLoc8x8                     0x0004
    #define   LSb32BPCtxSYNP_prop_CoLoc8x8                        12
    #define   LSb16BPCtxSYNP_prop_CoLoc8x8                        12
    #define       bBPCtxSYNP_prop_CoLoc8x8                     1
    #define   MSK32BPCtxSYNP_prop_CoLoc8x8                        0x00001000

    #define     BA_BPCtxSYNP_prop_CoLoc16x16                   0x0005
    #define     B16BPCtxSYNP_prop_CoLoc16x16                   0x0004
    #define   LSb32BPCtxSYNP_prop_CoLoc16x16                      13
    #define   LSb16BPCtxSYNP_prop_CoLoc16x16                      13
    #define       bBPCtxSYNP_prop_CoLoc16x16                   1
    #define   MSK32BPCtxSYNP_prop_CoLoc16x16                      0x00002000

    #define     BA_BPCtxSYNP_prop_CoLoc8x8Btm                  0x0005
    #define     B16BPCtxSYNP_prop_CoLoc8x8Btm                  0x0004
    #define   LSb32BPCtxSYNP_prop_CoLoc8x8Btm                     14
    #define   LSb16BPCtxSYNP_prop_CoLoc8x8Btm                     14
    #define       bBPCtxSYNP_prop_CoLoc8x8Btm                  1
    #define   MSK32BPCtxSYNP_prop_CoLoc8x8Btm                     0x00004000

    #define     BA_BPCtxSYNP_prop_CoLoc16x16Btm                0x0005
    #define     B16BPCtxSYNP_prop_CoLoc16x16Btm                0x0004
    #define   LSb32BPCtxSYNP_prop_CoLoc16x16Btm                   15
    #define   LSb16BPCtxSYNP_prop_CoLoc16x16Btm                   15
    #define       bBPCtxSYNP_prop_CoLoc16x16Btm                1
    #define   MSK32BPCtxSYNP_prop_CoLoc16x16Btm                   0x00008000

    #define     BA_BPCtxSYNP_prop_consIntra                    0x0006
    #define     B16BPCtxSYNP_prop_consIntra                    0x0006
    #define   LSb32BPCtxSYNP_prop_consIntra                       16
    #define   LSb16BPCtxSYNP_prop_consIntra                       0
    #define       bBPCtxSYNP_prop_consIntra                    1
    #define   MSK32BPCtxSYNP_prop_consIntra                       0x00010000

    #define     BA_BPCtxSYNP_prop_btmCloser                    0x0006
    #define     B16BPCtxSYNP_prop_btmCloser                    0x0006
    #define   LSb32BPCtxSYNP_prop_btmCloser                       17
    #define   LSb16BPCtxSYNP_prop_btmCloser                       1
    #define       bBPCtxSYNP_prop_btmCloser                    1
    #define   MSK32BPCtxSYNP_prop_btmCloser                       0x00020000

    #define     BA_BPCtxSYNP_prop_tCtxDirect8x8                0x0006
    #define     B16BPCtxSYNP_prop_tCtxDirect8x8                0x0006
    #define   LSb32BPCtxSYNP_prop_tCtxDirect8x8                   18
    #define   LSb16BPCtxSYNP_prop_tCtxDirect8x8                   2
    #define       bBPCtxSYNP_prop_tCtxDirect8x8                1
    #define   MSK32BPCtxSYNP_prop_tCtxDirect8x8                   0x00040000

    #define     BA_BPCtxSYNP_prop_nFrmFld                      0x0006
    #define     B16BPCtxSYNP_prop_nFrmFld                      0x0006
    #define   LSb32BPCtxSYNP_prop_nFrmFld                         19
    #define   LSb16BPCtxSYNP_prop_nFrmFld                         3
    #define       bBPCtxSYNP_prop_nFrmFld                      1
    #define   MSK32BPCtxSYNP_prop_nFrmFld                         0x00080000

    #define     BA_BPCtxSYNP_prop_BtmFLD                       0x0006
    #define     B16BPCtxSYNP_prop_BtmFLD                       0x0006
    #define   LSb32BPCtxSYNP_prop_BtmFLD                          20
    #define   LSb16BPCtxSYNP_prop_BtmFLD                          4
    #define       bBPCtxSYNP_prop_BtmFLD                       1
    #define   MSK32BPCtxSYNP_prop_BtmFLD                          0x00100000
    ///////////////////////////////////////////////////////////

    #define     BA_BPCtxSYNP_hMBs                              0x0008
    #define     B16BPCtxSYNP_hMBs                              0x0008
    #define   LSb32BPCtxSYNP_hMBs                                 0
    #define   LSb16BPCtxSYNP_hMBs                                 0
    #define       bBPCtxSYNP_hMBs                              16
    #define   MSK32BPCtxSYNP_hMBs                                 0x0000FFFF

    #define     BA_BPCtxSYNP_vMBs                              0x000A
    #define     B16BPCtxSYNP_vMBs                              0x000A
    #define   LSb32BPCtxSYNP_vMBs                                 16
    #define   LSb16BPCtxSYNP_vMBs                                 0
    #define       bBPCtxSYNP_vMBs                              16
    #define   MSK32BPCtxSYNP_vMBs                                 0xFFFF0000

    #define     BA_BPCtxSYNP_total                             0x000C
    #define     B16BPCtxSYNP_total                             0x000C
    #define   LSb32BPCtxSYNP_total                                0
    #define   LSb16BPCtxSYNP_total                                0
    #define       bBPCtxSYNP_total                             16
    #define   MSK32BPCtxSYNP_total                                0x0000FFFF
    ///////////////////////////////////////////////////////////
    #define     RA_BPCtxSYNP_pic64                             0x0010
    ///////////////////////////////////////////////////////////
    #define     RA_BPCtxSYNP_SN                                0x0018

    #define     BA_BPCtxSYNP_SN_parser                         0x0018
    #define     B16BPCtxSYNP_SN_parser                         0x0018
    #define   LSb32BPCtxSYNP_SN_parser                            0
    #define   LSb16BPCtxSYNP_SN_parser                            0
    #define       bBPCtxSYNP_SN_parser                         16
    #define   MSK32BPCtxSYNP_SN_parser                            0x0000FFFF

    #define     BA_BPCtxSYNP_SN_synproc                        0x001A
    #define     B16BPCtxSYNP_SN_synproc                        0x001A
    #define   LSb32BPCtxSYNP_SN_synproc                           16
    #define   LSb16BPCtxSYNP_SN_synproc                           0
    #define       bBPCtxSYNP_SN_synproc                        16
    #define   MSK32BPCtxSYNP_SN_synproc                           0xFFFF0000

    #define     RA_BPCtxSYNP_SN1                               0x001C

    #define     BA_BPCtxSYNP_SN_ctxIn                          0x001C
    #define     B16BPCtxSYNP_SN_ctxIn                          0x001C
    #define   LSb32BPCtxSYNP_SN_ctxIn                             0
    #define   LSb16BPCtxSYNP_SN_ctxIn                             0
    #define       bBPCtxSYNP_SN_ctxIn                          16
    #define   MSK32BPCtxSYNP_SN_ctxIn                             0x0000FFFF

    #define     BA_BPCtxSYNP_SN_ctxOut                         0x001E
    #define     B16BPCtxSYNP_SN_ctxOut                         0x001E
    #define   LSb32BPCtxSYNP_SN_ctxOut                            16
    #define   LSb16BPCtxSYNP_SN_ctxOut                            0
    #define       bBPCtxSYNP_SN_ctxOut                         16
    #define   MSK32BPCtxSYNP_SN_ctxOut                            0xFFFF0000

    #define     RA_BPCtxSYNP_SN2                               0x0020

    #define     BA_BPCtxSYNP_SN_P3MsgQ                         0x0020
    #define     B16BPCtxSYNP_SN_P3MsgQ                         0x0020
    #define   LSb32BPCtxSYNP_SN_P3MsgQ                            0
    #define   LSb16BPCtxSYNP_SN_P3MsgQ                            0
    #define       bBPCtxSYNP_SN_P3MsgQ                         16
    #define   MSK32BPCtxSYNP_SN_P3MsgQ                            0x0000FFFF

    #define     BA_BPCtxSYNP_SN_P3FopQ                         0x0022
    #define     B16BPCtxSYNP_SN_P3FopQ                         0x0022
    #define   LSb32BPCtxSYNP_SN_P3FopQ                            16
    #define   LSb16BPCtxSYNP_SN_P3FopQ                            0
    #define       bBPCtxSYNP_SN_P3FopQ                         16
    #define   MSK32BPCtxSYNP_SN_P3FopQ                            0xFFFF0000

    #define     RA_BPCtxSYNP_SN3                               0x0024

    #define     BA_BPCtxSYNP_SN_VCMsgQ                         0x0024
    #define     B16BPCtxSYNP_SN_VCMsgQ                         0x0024
    #define   LSb32BPCtxSYNP_SN_VCMsgQ                            0
    #define   LSb16BPCtxSYNP_SN_VCMsgQ                            0
    #define       bBPCtxSYNP_SN_VCMsgQ                         16
    #define   MSK32BPCtxSYNP_SN_VCMsgQ                            0x0000FFFF

    #define     BA_BPCtxSYNP_SN_P3TCQ                          0x0026
    #define     B16BPCtxSYNP_SN_P3TCQ                          0x0026
    #define   LSb32BPCtxSYNP_SN_P3TCQ                             16
    #define   LSb16BPCtxSYNP_SN_P3TCQ                             0
    #define       bBPCtxSYNP_SN_P3TCQ                          16
    #define   MSK32BPCtxSYNP_SN_P3TCQ                             0xFFFF0000

    #define     RA_BPCtxSYNP_SN4                               0x0028

    #define     BA_BPCtxSYNP_SN_cmdDStc                        0x0028
    #define     B16BPCtxSYNP_SN_cmdDStc                        0x0028
    #define   LSb32BPCtxSYNP_SN_cmdDStc                           0
    #define   LSb16BPCtxSYNP_SN_cmdDStc                           0
    #define       bBPCtxSYNP_SN_cmdDStc                        16
    #define   MSK32BPCtxSYNP_SN_cmdDStc                           0x0000FFFF

    #define     BA_BPCtxSYNP_SN_cmdDS1                         0x002A
    #define     B16BPCtxSYNP_SN_cmdDS1                         0x002A
    #define   LSb32BPCtxSYNP_SN_cmdDS1                            16
    #define   LSb16BPCtxSYNP_SN_cmdDS1                            0
    #define       bBPCtxSYNP_SN_cmdDS1                         16
    #define   MSK32BPCtxSYNP_SN_cmdDS1                            0xFFFF0000

    #define     RA_BPCtxSYNP_SN5                               0x002C

    #define     BA_BPCtxSYNP_SN_cmdDSMB0                       0x002C
    #define     B16BPCtxSYNP_SN_cmdDSMB0                       0x002C
    #define   LSb32BPCtxSYNP_SN_cmdDSMB0                          0
    #define   LSb16BPCtxSYNP_SN_cmdDSMB0                          0
    #define       bBPCtxSYNP_SN_cmdDSMB0                       16
    #define   MSK32BPCtxSYNP_SN_cmdDSMB0                          0x0000FFFF

    #define     BA_BPCtxSYNP_SN_cmdDSMB1                       0x002E
    #define     B16BPCtxSYNP_SN_cmdDSMB1                       0x002E
    #define   LSb32BPCtxSYNP_SN_cmdDSMB1                          16
    #define   LSb16BPCtxSYNP_SN_cmdDSMB1                          0
    #define       bBPCtxSYNP_SN_cmdDSMB1                       16
    #define   MSK32BPCtxSYNP_SN_cmdDSMB1                          0xFFFF0000

    #define     RA_BPCtxSYNP_SN6                               0x0030

    #define     BA_BPCtxSYNP_SN_cmdDS                          0x0030
    #define     B16BPCtxSYNP_SN_cmdDS                          0x0030
    #define   LSb32BPCtxSYNP_SN_cmdDS                             0
    #define   LSb16BPCtxSYNP_SN_cmdDS                             0
    #define       bBPCtxSYNP_SN_cmdDS                          16
    #define   MSK32BPCtxSYNP_SN_cmdDS                             0x0000FFFF

    #define     BA_BPCtxSYNP_SN_vcmDesc                        0x0032
    #define     B16BPCtxSYNP_SN_vcmDesc                        0x0032
    #define   LSb32BPCtxSYNP_SN_vcmDesc                           16
    #define   LSb16BPCtxSYNP_SN_vcmDesc                           0
    #define       bBPCtxSYNP_SN_vcmDesc                        16
    #define   MSK32BPCtxSYNP_SN_vcmDesc                           0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BPCtxSYNP {
    ///////////////////////////////////////////////////////////
    #define   GET32BPCtxSYNP_prop_start(r32)                   _BFGET_(r32,15, 0)
    #define   SET32BPCtxSYNP_prop_start(r32,v)                 _BFSET_(r32,15, 0,v)
    #define   GET16BPCtxSYNP_prop_start(r16)                   _BFGET_(r16,15, 0)
    #define   SET16BPCtxSYNP_prop_start(r16,v)                 _BFSET_(r16,15, 0,v)

    #define   GET32BPCtxSYNP_prop_rBID(r32)                    _BFGET_(r32,31,16)
    #define   SET32BPCtxSYNP_prop_rBID(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16BPCtxSYNP_prop_rBID(r16)                    _BFGET_(r16,15, 0)
    #define   SET16BPCtxSYNP_prop_rBID(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32BPCtxSYNP_prop                              {\
            UNSG32 uprop_start                                 : 16;\
            UNSG32 uprop_rBID                                  : 16;\
          }
    union { UNSG32 u32BPCtxSYNP_prop;
            struct w32BPCtxSYNP_prop;
          };
    #define   GET32BPCtxSYNP_prop_MBAFF(r32)                   _BFGET_(r32, 0, 0)
    #define   SET32BPCtxSYNP_prop_MBAFF(r32,v)                 _BFSET_(r32, 0, 0,v)
    #define   GET16BPCtxSYNP_prop_MBAFF(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16BPCtxSYNP_prop_MBAFF(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define   GET32BPCtxSYNP_prop_PicFLD(r32)                  _BFGET_(r32, 1, 1)
    #define   SET32BPCtxSYNP_prop_PicFLD(r32,v)                _BFSET_(r32, 1, 1,v)
    #define   GET16BPCtxSYNP_prop_PicFLD(r16)                  _BFGET_(r16, 1, 1)
    #define   SET16BPCtxSYNP_prop_PicFLD(r16,v)                _BFSET_(r16, 1, 1,v)

    #define   GET32BPCtxSYNP_prop_CoLocFLD(r32)                _BFGET_(r32, 2, 2)
    #define   SET32BPCtxSYNP_prop_CoLocFLD(r32,v)              _BFSET_(r32, 2, 2,v)
    #define   GET16BPCtxSYNP_prop_CoLocFLD(r16)                _BFGET_(r16, 2, 2)
    #define   SET16BPCtxSYNP_prop_CoLocFLD(r16,v)              _BFSET_(r16, 2, 2,v)

    #define   GET32BPCtxSYNP_prop_PairCoLoc(r32)               _BFGET_(r32, 3, 3)
    #define   SET32BPCtxSYNP_prop_PairCoLoc(r32,v)             _BFSET_(r32, 3, 3,v)
    #define   GET16BPCtxSYNP_prop_PairCoLoc(r16)               _BFGET_(r16, 3, 3)
    #define   SET16BPCtxSYNP_prop_PairCoLoc(r16,v)             _BFSET_(r16, 3, 3,v)

    #define   GET32BPCtxSYNP_prop_refCtx(r32)                  _BFGET_(r32, 4, 4)
    #define   SET32BPCtxSYNP_prop_refCtx(r32,v)                _BFSET_(r32, 4, 4,v)
    #define   GET16BPCtxSYNP_prop_refCtx(r16)                  _BFGET_(r16, 4, 4)
    #define   SET16BPCtxSYNP_prop_refCtx(r16,v)                _BFSET_(r16, 4, 4,v)

    #define   GET32BPCtxSYNP_prop_sliceB(r32)                  _BFGET_(r32, 5, 5)
    #define   SET32BPCtxSYNP_prop_sliceB(r32,v)                _BFSET_(r32, 5, 5,v)
    #define   GET16BPCtxSYNP_prop_sliceB(r16)                  _BFGET_(r16, 5, 5)
    #define   SET16BPCtxSYNP_prop_sliceB(r16,v)                _BFSET_(r16, 5, 5,v)

    #define   GET32BPCtxSYNP_prop_directEnb(r32)               _BFGET_(r32, 6, 6)
    #define   SET32BPCtxSYNP_prop_directEnb(r32,v)             _BFSET_(r32, 6, 6,v)
    #define   GET16BPCtxSYNP_prop_directEnb(r16)               _BFGET_(r16, 6, 6)
    #define   SET16BPCtxSYNP_prop_directEnb(r16,v)             _BFSET_(r16, 6, 6,v)

    #define   GET32BPCtxSYNP_prop_direct8x8(r32)               _BFGET_(r32, 7, 7)
    #define   SET32BPCtxSYNP_prop_direct8x8(r32,v)             _BFSET_(r32, 7, 7,v)
    #define   GET16BPCtxSYNP_prop_direct8x8(r16)               _BFGET_(r16, 7, 7)
    #define   SET16BPCtxSYNP_prop_direct8x8(r16,v)             _BFSET_(r16, 7, 7,v)

    #define   GET32BPCtxSYNP_prop_directSpatial(r32)           _BFGET_(r32, 8, 8)
    #define   SET32BPCtxSYNP_prop_directSpatial(r32,v)         _BFSET_(r32, 8, 8,v)
    #define   GET16BPCtxSYNP_prop_directSpatial(r16)           _BFGET_(r16, 8, 8)
    #define   SET16BPCtxSYNP_prop_directSpatial(r16,v)         _BFSET_(r16, 8, 8,v)

    #define   GET32BPCtxSYNP_prop_loopFlt(r32)                 _BFGET_(r32, 9, 9)
    #define   SET32BPCtxSYNP_prop_loopFlt(r32,v)               _BFSET_(r32, 9, 9,v)
    #define   GET16BPCtxSYNP_prop_loopFlt(r16)                 _BFGET_(r16, 9, 9)
    #define   SET16BPCtxSYNP_prop_loopFlt(r16,v)               _BFSET_(r16, 9, 9,v)

    #define   GET32BPCtxSYNP_prop_LFInSlice(r32)               _BFGET_(r32,10,10)
    #define   SET32BPCtxSYNP_prop_LFInSlice(r32,v)             _BFSET_(r32,10,10,v)
    #define   GET16BPCtxSYNP_prop_LFInSlice(r16)               _BFGET_(r16,10,10)
    #define   SET16BPCtxSYNP_prop_LFInSlice(r16,v)             _BFSET_(r16,10,10,v)

    #define   GET32BPCtxSYNP_prop_CoLocFLDMB(r32)              _BFGET_(r32,11,11)
    #define   SET32BPCtxSYNP_prop_CoLocFLDMB(r32,v)            _BFSET_(r32,11,11,v)
    #define   GET16BPCtxSYNP_prop_CoLocFLDMB(r16)              _BFGET_(r16,11,11)
    #define   SET16BPCtxSYNP_prop_CoLocFLDMB(r16,v)            _BFSET_(r16,11,11,v)

    #define   GET32BPCtxSYNP_prop_CoLoc8x8(r32)                _BFGET_(r32,12,12)
    #define   SET32BPCtxSYNP_prop_CoLoc8x8(r32,v)              _BFSET_(r32,12,12,v)
    #define   GET16BPCtxSYNP_prop_CoLoc8x8(r16)                _BFGET_(r16,12,12)
    #define   SET16BPCtxSYNP_prop_CoLoc8x8(r16,v)              _BFSET_(r16,12,12,v)

    #define   GET32BPCtxSYNP_prop_CoLoc16x16(r32)              _BFGET_(r32,13,13)
    #define   SET32BPCtxSYNP_prop_CoLoc16x16(r32,v)            _BFSET_(r32,13,13,v)
    #define   GET16BPCtxSYNP_prop_CoLoc16x16(r16)              _BFGET_(r16,13,13)
    #define   SET16BPCtxSYNP_prop_CoLoc16x16(r16,v)            _BFSET_(r16,13,13,v)

    #define   GET32BPCtxSYNP_prop_CoLoc8x8Btm(r32)             _BFGET_(r32,14,14)
    #define   SET32BPCtxSYNP_prop_CoLoc8x8Btm(r32,v)           _BFSET_(r32,14,14,v)
    #define   GET16BPCtxSYNP_prop_CoLoc8x8Btm(r16)             _BFGET_(r16,14,14)
    #define   SET16BPCtxSYNP_prop_CoLoc8x8Btm(r16,v)           _BFSET_(r16,14,14,v)

    #define   GET32BPCtxSYNP_prop_CoLoc16x16Btm(r32)           _BFGET_(r32,15,15)
    #define   SET32BPCtxSYNP_prop_CoLoc16x16Btm(r32,v)         _BFSET_(r32,15,15,v)
    #define   GET16BPCtxSYNP_prop_CoLoc16x16Btm(r16)           _BFGET_(r16,15,15)
    #define   SET16BPCtxSYNP_prop_CoLoc16x16Btm(r16,v)         _BFSET_(r16,15,15,v)

    #define   GET32BPCtxSYNP_prop_consIntra(r32)               _BFGET_(r32,16,16)
    #define   SET32BPCtxSYNP_prop_consIntra(r32,v)             _BFSET_(r32,16,16,v)
    #define   GET16BPCtxSYNP_prop_consIntra(r16)               _BFGET_(r16, 0, 0)
    #define   SET16BPCtxSYNP_prop_consIntra(r16,v)             _BFSET_(r16, 0, 0,v)

    #define   GET32BPCtxSYNP_prop_btmCloser(r32)               _BFGET_(r32,17,17)
    #define   SET32BPCtxSYNP_prop_btmCloser(r32,v)             _BFSET_(r32,17,17,v)
    #define   GET16BPCtxSYNP_prop_btmCloser(r16)               _BFGET_(r16, 1, 1)
    #define   SET16BPCtxSYNP_prop_btmCloser(r16,v)             _BFSET_(r16, 1, 1,v)

    #define   GET32BPCtxSYNP_prop_tCtxDirect8x8(r32)           _BFGET_(r32,18,18)
    #define   SET32BPCtxSYNP_prop_tCtxDirect8x8(r32,v)         _BFSET_(r32,18,18,v)
    #define   GET16BPCtxSYNP_prop_tCtxDirect8x8(r16)           _BFGET_(r16, 2, 2)
    #define   SET16BPCtxSYNP_prop_tCtxDirect8x8(r16,v)         _BFSET_(r16, 2, 2,v)

    #define   GET32BPCtxSYNP_prop_nFrmFld(r32)                 _BFGET_(r32,19,19)
    #define   SET32BPCtxSYNP_prop_nFrmFld(r32,v)               _BFSET_(r32,19,19,v)
    #define   GET16BPCtxSYNP_prop_nFrmFld(r16)                 _BFGET_(r16, 3, 3)
    #define   SET16BPCtxSYNP_prop_nFrmFld(r16,v)               _BFSET_(r16, 3, 3,v)

    #define   GET32BPCtxSYNP_prop_BtmFLD(r32)                  _BFGET_(r32,20,20)
    #define   SET32BPCtxSYNP_prop_BtmFLD(r32,v)                _BFSET_(r32,20,20,v)
    #define   GET16BPCtxSYNP_prop_BtmFLD(r16)                  _BFGET_(r16, 4, 4)
    #define   SET16BPCtxSYNP_prop_BtmFLD(r16,v)                _BFSET_(r16, 4, 4,v)

    #define     w32BPCtxSYNP_prop1                             {\
            UNSG32 uprop_MBAFF                                 :  1;\
            UNSG32 uprop_PicFLD                                :  1;\
            UNSG32 uprop_CoLocFLD                              :  1;\
            UNSG32 uprop_PairCoLoc                             :  1;\
            UNSG32 uprop_refCtx                                :  1;\
            UNSG32 uprop_sliceB                                :  1;\
            UNSG32 uprop_directEnb                             :  1;\
            UNSG32 uprop_direct8x8                             :  1;\
            UNSG32 uprop_directSpatial                         :  1;\
            UNSG32 uprop_loopFlt                               :  1;\
            UNSG32 uprop_LFInSlice                             :  1;\
            UNSG32 uprop_CoLocFLDMB                            :  1;\
            UNSG32 uprop_CoLoc8x8                              :  1;\
            UNSG32 uprop_CoLoc16x16                            :  1;\
            UNSG32 uprop_CoLoc8x8Btm                           :  1;\
            UNSG32 uprop_CoLoc16x16Btm                         :  1;\
            UNSG32 uprop_consIntra                             :  1;\
            UNSG32 uprop_btmCloser                             :  1;\
            UNSG32 uprop_tCtxDirect8x8                         :  1;\
            UNSG32 uprop_nFrmFld                               :  1;\
            UNSG32 uprop_BtmFLD                                :  1;\
            UNSG32 RSVDx4_b21                                  : 11;\
          }
    union { UNSG32 u32BPCtxSYNP_prop1;
            struct w32BPCtxSYNP_prop1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32BPCtxSYNP_hMBs(r32)                         _BFGET_(r32,15, 0)
    #define   SET32BPCtxSYNP_hMBs(r32,v)                       _BFSET_(r32,15, 0,v)
    #define   GET16BPCtxSYNP_hMBs(r16)                         _BFGET_(r16,15, 0)
    #define   SET16BPCtxSYNP_hMBs(r16,v)                       _BFSET_(r16,15, 0,v)

    #define   GET32BPCtxSYNP_vMBs(r32)                         _BFGET_(r32,31,16)
    #define   SET32BPCtxSYNP_vMBs(r32,v)                       _BFSET_(r32,31,16,v)
    #define   GET16BPCtxSYNP_vMBs(r16)                         _BFGET_(r16,15, 0)
    #define   SET16BPCtxSYNP_vMBs(r16,v)                       _BFSET_(r16,15, 0,v)

            UNSG32 u_hMBs                                      : 16;
            UNSG32 u_vMBs                                      : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32BPCtxSYNP_total(r32)                        _BFGET_(r32,15, 0)
    #define   SET32BPCtxSYNP_total(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16BPCtxSYNP_total(r16)                        _BFGET_(r16,15, 0)
    #define   SET16BPCtxSYNP_total(r16,v)                      _BFSET_(r16,15, 0,v)

            UNSG32 u_total                                     : 16;
            UNSG32 RSVDxC_b16                                  : 16;
    ///////////////////////////////////////////////////////////
              SIE_BPRF64PIC                                    ie_pic64;
    ///////////////////////////////////////////////////////////
    #define   GET32BPCtxSYNP_SN_parser(r32)                    _BFGET_(r32,15, 0)
    #define   SET32BPCtxSYNP_SN_parser(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16BPCtxSYNP_SN_parser(r16)                    _BFGET_(r16,15, 0)
    #define   SET16BPCtxSYNP_SN_parser(r16,v)                  _BFSET_(r16,15, 0,v)

    #define   GET32BPCtxSYNP_SN_synproc(r32)                   _BFGET_(r32,31,16)
    #define   SET32BPCtxSYNP_SN_synproc(r32,v)                 _BFSET_(r32,31,16,v)
    #define   GET16BPCtxSYNP_SN_synproc(r16)                   _BFGET_(r16,15, 0)
    #define   SET16BPCtxSYNP_SN_synproc(r16,v)                 _BFSET_(r16,15, 0,v)

    #define     w32BPCtxSYNP_SN                                {\
            UNSG32 uSN_parser                                  : 16;\
            UNSG32 uSN_synproc                                 : 16;\
          }
    union { UNSG32 u32BPCtxSYNP_SN;
            struct w32BPCtxSYNP_SN;
          };
    #define   GET32BPCtxSYNP_SN_ctxIn(r32)                     _BFGET_(r32,15, 0)
    #define   SET32BPCtxSYNP_SN_ctxIn(r32,v)                   _BFSET_(r32,15, 0,v)
    #define   GET16BPCtxSYNP_SN_ctxIn(r16)                     _BFGET_(r16,15, 0)
    #define   SET16BPCtxSYNP_SN_ctxIn(r16,v)                   _BFSET_(r16,15, 0,v)

    #define   GET32BPCtxSYNP_SN_ctxOut(r32)                    _BFGET_(r32,31,16)
    #define   SET32BPCtxSYNP_SN_ctxOut(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16BPCtxSYNP_SN_ctxOut(r16)                    _BFGET_(r16,15, 0)
    #define   SET16BPCtxSYNP_SN_ctxOut(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32BPCtxSYNP_SN1                               {\
            UNSG32 uSN_ctxIn                                   : 16;\
            UNSG32 uSN_ctxOut                                  : 16;\
          }
    union { UNSG32 u32BPCtxSYNP_SN1;
            struct w32BPCtxSYNP_SN1;
          };
    #define   GET32BPCtxSYNP_SN_P3MsgQ(r32)                    _BFGET_(r32,15, 0)
    #define   SET32BPCtxSYNP_SN_P3MsgQ(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16BPCtxSYNP_SN_P3MsgQ(r16)                    _BFGET_(r16,15, 0)
    #define   SET16BPCtxSYNP_SN_P3MsgQ(r16,v)                  _BFSET_(r16,15, 0,v)

    #define   GET32BPCtxSYNP_SN_P3FopQ(r32)                    _BFGET_(r32,31,16)
    #define   SET32BPCtxSYNP_SN_P3FopQ(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16BPCtxSYNP_SN_P3FopQ(r16)                    _BFGET_(r16,15, 0)
    #define   SET16BPCtxSYNP_SN_P3FopQ(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32BPCtxSYNP_SN2                               {\
            UNSG32 uSN_P3MsgQ                                  : 16;\
            UNSG32 uSN_P3FopQ                                  : 16;\
          }
    union { UNSG32 u32BPCtxSYNP_SN2;
            struct w32BPCtxSYNP_SN2;
          };
    #define   GET32BPCtxSYNP_SN_VCMsgQ(r32)                    _BFGET_(r32,15, 0)
    #define   SET32BPCtxSYNP_SN_VCMsgQ(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16BPCtxSYNP_SN_VCMsgQ(r16)                    _BFGET_(r16,15, 0)
    #define   SET16BPCtxSYNP_SN_VCMsgQ(r16,v)                  _BFSET_(r16,15, 0,v)

    #define   GET32BPCtxSYNP_SN_P3TCQ(r32)                     _BFGET_(r32,31,16)
    #define   SET32BPCtxSYNP_SN_P3TCQ(r32,v)                   _BFSET_(r32,31,16,v)
    #define   GET16BPCtxSYNP_SN_P3TCQ(r16)                     _BFGET_(r16,15, 0)
    #define   SET16BPCtxSYNP_SN_P3TCQ(r16,v)                   _BFSET_(r16,15, 0,v)

    #define     w32BPCtxSYNP_SN3                               {\
            UNSG32 uSN_VCMsgQ                                  : 16;\
            UNSG32 uSN_P3TCQ                                   : 16;\
          }
    union { UNSG32 u32BPCtxSYNP_SN3;
            struct w32BPCtxSYNP_SN3;
          };
    #define   GET32BPCtxSYNP_SN_cmdDStc(r32)                   _BFGET_(r32,15, 0)
    #define   SET32BPCtxSYNP_SN_cmdDStc(r32,v)                 _BFSET_(r32,15, 0,v)
    #define   GET16BPCtxSYNP_SN_cmdDStc(r16)                   _BFGET_(r16,15, 0)
    #define   SET16BPCtxSYNP_SN_cmdDStc(r16,v)                 _BFSET_(r16,15, 0,v)

    #define   GET32BPCtxSYNP_SN_cmdDS1(r32)                    _BFGET_(r32,31,16)
    #define   SET32BPCtxSYNP_SN_cmdDS1(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16BPCtxSYNP_SN_cmdDS1(r16)                    _BFGET_(r16,15, 0)
    #define   SET16BPCtxSYNP_SN_cmdDS1(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32BPCtxSYNP_SN4                               {\
            UNSG32 uSN_cmdDStc                                 : 16;\
            UNSG32 uSN_cmdDS1                                  : 16;\
          }
    union { UNSG32 u32BPCtxSYNP_SN4;
            struct w32BPCtxSYNP_SN4;
          };
    #define   GET32BPCtxSYNP_SN_cmdDSMB0(r32)                  _BFGET_(r32,15, 0)
    #define   SET32BPCtxSYNP_SN_cmdDSMB0(r32,v)                _BFSET_(r32,15, 0,v)
    #define   GET16BPCtxSYNP_SN_cmdDSMB0(r16)                  _BFGET_(r16,15, 0)
    #define   SET16BPCtxSYNP_SN_cmdDSMB0(r16,v)                _BFSET_(r16,15, 0,v)

    #define   GET32BPCtxSYNP_SN_cmdDSMB1(r32)                  _BFGET_(r32,31,16)
    #define   SET32BPCtxSYNP_SN_cmdDSMB1(r32,v)                _BFSET_(r32,31,16,v)
    #define   GET16BPCtxSYNP_SN_cmdDSMB1(r16)                  _BFGET_(r16,15, 0)
    #define   SET16BPCtxSYNP_SN_cmdDSMB1(r16,v)                _BFSET_(r16,15, 0,v)

    #define     w32BPCtxSYNP_SN5                               {\
            UNSG32 uSN_cmdDSMB0                                : 16;\
            UNSG32 uSN_cmdDSMB1                                : 16;\
          }
    union { UNSG32 u32BPCtxSYNP_SN5;
            struct w32BPCtxSYNP_SN5;
          };
    #define   GET32BPCtxSYNP_SN_cmdDS(r32)                     _BFGET_(r32,15, 0)
    #define   SET32BPCtxSYNP_SN_cmdDS(r32,v)                   _BFSET_(r32,15, 0,v)
    #define   GET16BPCtxSYNP_SN_cmdDS(r16)                     _BFGET_(r16,15, 0)
    #define   SET16BPCtxSYNP_SN_cmdDS(r16,v)                   _BFSET_(r16,15, 0,v)

    #define   GET32BPCtxSYNP_SN_vcmDesc(r32)                   _BFGET_(r32,31,16)
    #define   SET32BPCtxSYNP_SN_vcmDesc(r32,v)                 _BFSET_(r32,31,16,v)
    #define   GET16BPCtxSYNP_SN_vcmDesc(r16)                   _BFGET_(r16,15, 0)
    #define   SET16BPCtxSYNP_SN_vcmDesc(r16,v)                 _BFSET_(r16,15, 0,v)

    #define     w32BPCtxSYNP_SN6                               {\
            UNSG32 uSN_cmdDS                                   : 16;\
            UNSG32 uSN_vcmDesc                                 : 16;\
          }
    union { UNSG32 u32BPCtxSYNP_SN6;
            struct w32BPCtxSYNP_SN6;
          };
    ///////////////////////////////////////////////////////////
    } SIE_BPCtxSYNP;

    typedef union  T32BPCtxSYNP_prop
          { UNSG32 u32;
            struct w32BPCtxSYNP_prop;
                 } T32BPCtxSYNP_prop;
    typedef union  T32BPCtxSYNP_prop1
          { UNSG32 u32;
            struct w32BPCtxSYNP_prop1;
                 } T32BPCtxSYNP_prop1;
    typedef union  T32BPCtxSYNP_SN
          { UNSG32 u32;
            struct w32BPCtxSYNP_SN;
                 } T32BPCtxSYNP_SN;
    typedef union  T32BPCtxSYNP_SN1
          { UNSG32 u32;
            struct w32BPCtxSYNP_SN1;
                 } T32BPCtxSYNP_SN1;
    typedef union  T32BPCtxSYNP_SN2
          { UNSG32 u32;
            struct w32BPCtxSYNP_SN2;
                 } T32BPCtxSYNP_SN2;
    typedef union  T32BPCtxSYNP_SN3
          { UNSG32 u32;
            struct w32BPCtxSYNP_SN3;
                 } T32BPCtxSYNP_SN3;
    typedef union  T32BPCtxSYNP_SN4
          { UNSG32 u32;
            struct w32BPCtxSYNP_SN4;
                 } T32BPCtxSYNP_SN4;
    typedef union  T32BPCtxSYNP_SN5
          { UNSG32 u32;
            struct w32BPCtxSYNP_SN5;
                 } T32BPCtxSYNP_SN5;
    typedef union  T32BPCtxSYNP_SN6
          { UNSG32 u32;
            struct w32BPCtxSYNP_SN6;
                 } T32BPCtxSYNP_SN6;
    ///////////////////////////////////////////////////////////

    typedef union  TBPCtxSYNP_prop
          { UNSG32 u32[2];
            struct {
            struct w32BPCtxSYNP_prop;
            struct w32BPCtxSYNP_prop1;
                   };
                 } TBPCtxSYNP_prop;
    typedef union  TBPCtxSYNP_SN
          { UNSG32 u32[7];
            struct {
            struct w32BPCtxSYNP_SN;
            struct w32BPCtxSYNP_SN1;
            struct w32BPCtxSYNP_SN2;
            struct w32BPCtxSYNP_SN3;
            struct w32BPCtxSYNP_SN4;
            struct w32BPCtxSYNP_SN5;
            struct w32BPCtxSYNP_SN6;
                   };
                 } TBPCtxSYNP_SN;

    ///////////////////////////////////////////////////////////
     SIGN32 BPCtxSYNP_drvrd(SIE_BPCtxSYNP *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BPCtxSYNP_drvwr(SIE_BPCtxSYNP *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BPCtxSYNP_reset(SIE_BPCtxSYNP *p);
     SIGN32 BPCtxSYNP_cmp  (SIE_BPCtxSYNP *p, SIE_BPCtxSYNP *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BPCtxSYNP_check(p,pie,pfx,hLOG) BPCtxSYNP_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BPCtxSYNP_print(p,    pfx,hLOG) BPCtxSYNP_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BPCtxSYNP
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BPInvScanBLK                             (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 4x4                  
///               $LUT8b               4x4               REG       [4]
///                                    ###
///                                    * For 4x4 transform, cast to:
///                                    * 8b Scan[16]:
///                                    * - zigzag for MBAFF or progressive
///                                    * - field scan for field picture
///                                    ###
///     @ 0x00010                      (P)
///     # 0x00010 4x4DC                
///               $LUT8b               4x4DC             REG       [4]
///                                    ###
///                                    * For 4x4 Hadamard transform, cast to:
///                                    * 8b Scan[16] (decoding order to raster)
///                                    ###
///     @ 0x00020                      (P)
///     # 0x00020 2x2DC                
///               $LUT8b               2x2DC             REG       [2]
///                                    ###
///                                    * For 2x2 Hadamard transform, cast to:
///                                    * 8b Scan[4] (Scan[i] = i)
///                                    ###
///     @ 0x00028                      (P)
///     # 0x00028 IPCMY                
///               $LUT8b               IPCMY             REG      [32]
///                                    ###
///                                    * Cast to 16b scan[64=16*16/4]
///                                    * NOTE: every 4 pix share same entry address
///                                    ###
///     @ 0x000A8                      (P)
///     # 0x000A8 IPCMUV               
///               $LUT8b               IPCMUV            REG      [16]
///                                    ###
///                                    * Cast to 16b scan[32=8*8/4*2]
///                                    * NOTE: every 4 pix share same entry address
///                                    * End of BPInvScanBLK
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     232B, bits:    1856b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BPInvScanBLK
#define h_BPInvScanBLK (){}

    #define     RA_BPInvScanBLK_4x4                            0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_BPInvScanBLK_4x4DC                          0x0010
    ///////////////////////////////////////////////////////////
    #define     RA_BPInvScanBLK_2x2DC                          0x0020
    ///////////////////////////////////////////////////////////
    #define     RA_BPInvScanBLK_IPCMY                          0x0028
    ///////////////////////////////////////////////////////////
    #define     RA_BPInvScanBLK_IPCMUV                         0x00A8
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BPInvScanBLK {
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_4x4[4];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_4x4DC[4];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_2x2DC[2];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_IPCMY[32];
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_IPCMUV[16];
    ///////////////////////////////////////////////////////////
    } SIE_BPInvScanBLK;

    ///////////////////////////////////////////////////////////
     SIGN32 BPInvScanBLK_drvrd(SIE_BPInvScanBLK *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BPInvScanBLK_drvwr(SIE_BPInvScanBLK *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BPInvScanBLK_reset(SIE_BPInvScanBLK *p);
     SIGN32 BPInvScanBLK_cmp  (SIE_BPInvScanBLK *p, SIE_BPInvScanBLK *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BPInvScanBLK_check(p,pie,pfx,hLOG) BPInvScanBLK_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BPInvScanBLK_print(p,    pfx,hLOG) BPInvScanBLK_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BPInvScanBLK
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BPFOPCmdIDX                              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 FRMA_FRMX_FRMB       
///               $LUT8b               FRMA_FRMX_FRMB    REG       [8]
///                                    ###
///                                    * Cast to 8b index[16+16]
///                                    * End of BPFOPCmdIDX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      32B, bits:     256b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BPFOPCmdIDX
#define h_BPFOPCmdIDX (){}

    #define     RA_BPFOPCmdIDX_FRMA_FRMX_FRMB                  0x0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BPFOPCmdIDX {
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_FRMA_FRMX_FRMB[8];
    ///////////////////////////////////////////////////////////
    } SIE_BPFOPCmdIDX;

    ///////////////////////////////////////////////////////////
     SIGN32 BPFOPCmdIDX_drvrd(SIE_BPFOPCmdIDX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BPFOPCmdIDX_drvwr(SIE_BPFOPCmdIDX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BPFOPCmdIDX_reset(SIE_BPFOPCmdIDX *p);
     SIGN32 BPFOPCmdIDX_cmp  (SIE_BPFOPCmdIDX *p, SIE_BPFOPCmdIDX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BPFOPCmdIDX_check(p,pie,pfx,hLOG) BPFOPCmdIDX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BPFOPCmdIDX_print(p,    pfx,hLOG) BPFOPCmdIDX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BPFOPCmdIDX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BPMBPROP                                 (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 3  type                      
///                                    ###
///                                    * Refer to BLK_xxx in decHal_mbLvl.sxw.txt
///                                    ###
///               %unsigned 2  partition                 
///                                    ###
///                                    * See BLK.partition
///                                    ###
///               %unsigned 1  t8x8                      
///                                    ###
///                                    * 0/1 as 4x4/8x8 transform
///                                    * IntraPROP.t8x8I & Parse( transform_8x8_flag )
///                                    * InterPROP.t8x8PB & cbpLuma & !flat4x4 &
///                                    * Parse( transform_8x8_flag )
///                                    * for vc1: OVERFLAGMB from stream-parser to
///                                    * syntax-processor in raw mode
///                                    ###
///               %unsigned 1  MBAFF                     
///                                    ###
///                                    * H.264 MBAFF picture
///                                    * MPEG2/4/VC1: use for frame or field DCT
///                                    ###
///               %unsigned 1  FLD                       
///                                    ###
///                                    * - if current MB is MBAFF field MB
///                                    * MPEG2: use for frame or field MV
///                                    * MPEG4: field_prediction
///                                    * (information of field_reference also decoded, not decide whether need to transfer,maybe slice level info)
///                                    ###
///               %unsigned 1  FLDNeighborA              
///                                    ###
///                                    * - if left MB is available when filter_idc = 0
///                                    ###
///               %unsigned 1  FLDNeighborB              
///                                    ###
///                                    * - if upper MB is available when filter_idc = 0
///                                    ###
///               %unsigned 1  FLDNeighborC              
///                                    ###
///                                    * - if upper-right MB is available when filter_idc = 0
///                                    ###
///               %unsigned 1  FLDNeighborD              
///                                    ###
///                                    * - if upper-left MB is available when filter_idc = 0
///                                    ###
///               %unsigned 1  NeighborA                 
///                                    ###
///                                    * From stream-parser to syntax-processor:
///                                    * - if left MB is available
///                                    * From vScope to PCube:
///                                    * - if left MB is available as intra predictor
///                                    ###
///               %unsigned 1  NeighborB                 
///                                    ###
///                                    * From stream-parser to syntax-processor:
///                                    * - if upper MB is available
///                                    * From vScope to PCube:
///                                    * - if upper MB is available as intra predictor
///                                    ###
///               %unsigned 1  NeighborC                 
///                                    ###
///                                    * From stream-parser to syntax-processor:
///                                    * - if upper-right MB is available
///                                    * From vScope to PCube:
///                                    * - if upper-right MB is available as intra predictor
///                                    ###
///               %unsigned 1  NeighborD                 
///                                    ###
///                                    * From stream-parser to syntax-processor:
///                                    * - if upper-left MB is available
///                                    * From vScope to PCube:
///                                    * - if upper-left MB is available as intra predictor
///                                    ###
///               %unsigned 1  LastInSeq                 
///                                    ###
///                                    * If last MB in sequence
///                                    ###
///               %unsigned 3  NumBLK                    
///                                    ###
///                                    * Number of non-zero blocks (0~6) associated with CBP below
///                                    ###
///               %unsigned 1  loopFlt                   
///                                    ###
///                                    * If enable loop-filter
///                                    ###
///               %unsigned 1  LFInSlice                 
///                                    ###
///                                    * Loop-filter within slice
///                                    ###
///               %unsigned 5  AC0Offset                 
///                                    ###
///                                    * Alpha c0 offset in slice header
///                                    ###
///               %unsigned 5  BetaOffset                
///                                    ###
///                                    * Beta offset in slice header
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 8  MBX                       
///                                    ###
///                                    * X-location of current MB
///                                    ###
///               %unsigned 8  MBY                       
///                                    ###
///                                    * Y-location of current MB
///                                    ###
///               %unsigned 8  CBP                       
///                                    ###
///                                    * All zero flags for 8x8 blocks
///                                    * - H264 luma (intra 16x16): all 4 CBP bits are 1
///                                    * - H264 luma (others): same as decoded CBP bit
///                                    * - H264 chroma: U/V use same (=0 if CBPUV=0)
///                                    ###
///               %unsigned 8  CBPDC                     
///                                    ###
///                                    * DC-only flags for 8x8 (4 of 4x4) blocks
///                                    * - H264 luma (intra 16x16): not decoded CBP
///                                    * - H264 luma (8x8): CBP=1 && only (0,0) is none-zero
///                                    * - H264 luma (4x4): CBP=1 && all-zero or only (0,0) is non-zero for each 4x4 block in 8x8
///                                    * - H264 chroma: U/V use same (=1 if CBPUV=1)
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 BLK                  
///               $BLK                 BLK               REG          
///                                    ###
///                                    * Cast to 8b BLK[4] (flatten for each 8x8)
///                                    * - 1mv: BLK[0]=BLK[1]=BLK[2]=BLK[3]
///                                    * - 2mvLR: BLK[0]=BLK[2], BLK[1]=BLK[3]
///                                    * - 2mvTB: BLK[0]=BLK[1], BLK[2]=BLK[3]
///                                    ###
///     @ 0x0000C                      (P)
///               %unsigned 2  chroma                    
///                                    : DC                        0x0
///                                    : Horizontal                0x1
///                                    : Vertical                  0x2
///                                    : Plane                     0x3
///                                                 ###
///                                                 * Intra prediction mode for chroma blocks
///                                                 ###
///                                    : ACP_OFF                   0x0
///                                    : ACP_ON                    0x1
///                                                 ###
///                                                 * MPEG4/VC1: 1 bit to identify AC_Pred
///                                                 ###
///               %unsigned 2  first_rnd                 
///                                    ###
///                                    * Reserved
///                                    ###
///               %unsigned 1  vLumaDB                   
///                                    ###
///                                    * If luma vertical edges to be filtered
///                                    ###
///               %unsigned 1  vChromaDB                 
///                                    ###
///                                    * If chroma vertical edges to be filtered
///                                    ###
///               %unsigned 1  hLumaDB                   
///                                    ###
///                                    * If luma horizontal edges to be filtered
///                                    ###
///               %unsigned 1  hChromaDB                 
///                                    ###
///                                    * If chroma horizontal edges to be filtered
///                                    ###
///               %unsigned 8  QP                        
///                                    ###
///                                    * MB QP for luma
///                                    * VP6: 6-bit flag to indicate loop-filtering of vertical edges for each 8x8 block
///                                    ###
///               %unsigned 8  Qu                        
///                                    ###
///                                    * MB QP for Cb
///                                    * VP6: 6-bit flag to indicate loop-filtering of horizontal edges for each 8x8 block
///                                    ###
///               %unsigned 8  Qv                        
///                                    ###
///                                    * MB QP for Cr
///                                    ###
///     @ 0x00010                      (P)
///     # 0x00010 pred                 
///               $IntraLuma           pred              REG       [4]
///                                    ###
///                                    * - Intra16x16: 8b IntraLuma[1]
///                                    * - Intra8x8: 8b IntraLuma[4:idx8x8]
///                                    * - Intra4x4: 8b IntraLuma[4:idx8x8][4:idx4x4]
///                                    * NOTE: IntraNxN use {1b-prev,3b-rem} (before prediction) between parser & syntax processor
///                                    * Inter: cast to 16b rIDX[4:BLK][2:L0/L1] (flatten for all 8x8)
///                                    * - 1mv: pred[0]=pred[1]=pred[2]=pred[3]
///                                    * - 2mvLR: pred[0]=pred[2], pred[1]=pred[3]
///                                    * - 2mvTB: pred[0]=pred[1], pred[2]=pred[3]
///                                    * End of BPMBPROP
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      32B, bits:     256b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BPMBPROP
#define h_BPMBPROP (){}

    #define     BA_BPMBPROP_type                               0x0000
    #define     B16BPMBPROP_type                               0x0000
    #define   LSb32BPMBPROP_type                                  0
    #define   LSb16BPMBPROP_type                                  0
    #define       bBPMBPROP_type                               3
    #define   MSK32BPMBPROP_type                                  0x00000007

    #define     BA_BPMBPROP_partition                          0x0000
    #define     B16BPMBPROP_partition                          0x0000
    #define   LSb32BPMBPROP_partition                             3
    #define   LSb16BPMBPROP_partition                             3
    #define       bBPMBPROP_partition                          2
    #define   MSK32BPMBPROP_partition                             0x00000018

    #define     BA_BPMBPROP_t8x8                               0x0000
    #define     B16BPMBPROP_t8x8                               0x0000
    #define   LSb32BPMBPROP_t8x8                                  5
    #define   LSb16BPMBPROP_t8x8                                  5
    #define       bBPMBPROP_t8x8                               1
    #define   MSK32BPMBPROP_t8x8                                  0x00000020

    #define     BA_BPMBPROP_MBAFF                              0x0000
    #define     B16BPMBPROP_MBAFF                              0x0000
    #define   LSb32BPMBPROP_MBAFF                                 6
    #define   LSb16BPMBPROP_MBAFF                                 6
    #define       bBPMBPROP_MBAFF                              1
    #define   MSK32BPMBPROP_MBAFF                                 0x00000040

    #define     BA_BPMBPROP_FLD                                0x0000
    #define     B16BPMBPROP_FLD                                0x0000
    #define   LSb32BPMBPROP_FLD                                   7
    #define   LSb16BPMBPROP_FLD                                   7
    #define       bBPMBPROP_FLD                                1
    #define   MSK32BPMBPROP_FLD                                   0x00000080

    #define     BA_BPMBPROP_FLDNeighborA                       0x0001
    #define     B16BPMBPROP_FLDNeighborA                       0x0000
    #define   LSb32BPMBPROP_FLDNeighborA                          8
    #define   LSb16BPMBPROP_FLDNeighborA                          8
    #define       bBPMBPROP_FLDNeighborA                       1
    #define   MSK32BPMBPROP_FLDNeighborA                          0x00000100

    #define     BA_BPMBPROP_FLDNeighborB                       0x0001
    #define     B16BPMBPROP_FLDNeighborB                       0x0000
    #define   LSb32BPMBPROP_FLDNeighborB                          9
    #define   LSb16BPMBPROP_FLDNeighborB                          9
    #define       bBPMBPROP_FLDNeighborB                       1
    #define   MSK32BPMBPROP_FLDNeighborB                          0x00000200

    #define     BA_BPMBPROP_FLDNeighborC                       0x0001
    #define     B16BPMBPROP_FLDNeighborC                       0x0000
    #define   LSb32BPMBPROP_FLDNeighborC                          10
    #define   LSb16BPMBPROP_FLDNeighborC                          10
    #define       bBPMBPROP_FLDNeighborC                       1
    #define   MSK32BPMBPROP_FLDNeighborC                          0x00000400

    #define     BA_BPMBPROP_FLDNeighborD                       0x0001
    #define     B16BPMBPROP_FLDNeighborD                       0x0000
    #define   LSb32BPMBPROP_FLDNeighborD                          11
    #define   LSb16BPMBPROP_FLDNeighborD                          11
    #define       bBPMBPROP_FLDNeighborD                       1
    #define   MSK32BPMBPROP_FLDNeighborD                          0x00000800

    #define     BA_BPMBPROP_NeighborA                          0x0001
    #define     B16BPMBPROP_NeighborA                          0x0000
    #define   LSb32BPMBPROP_NeighborA                             12
    #define   LSb16BPMBPROP_NeighborA                             12
    #define       bBPMBPROP_NeighborA                          1
    #define   MSK32BPMBPROP_NeighborA                             0x00001000

    #define     BA_BPMBPROP_NeighborB                          0x0001
    #define     B16BPMBPROP_NeighborB                          0x0000
    #define   LSb32BPMBPROP_NeighborB                             13
    #define   LSb16BPMBPROP_NeighborB                             13
    #define       bBPMBPROP_NeighborB                          1
    #define   MSK32BPMBPROP_NeighborB                             0x00002000

    #define     BA_BPMBPROP_NeighborC                          0x0001
    #define     B16BPMBPROP_NeighborC                          0x0000
    #define   LSb32BPMBPROP_NeighborC                             14
    #define   LSb16BPMBPROP_NeighborC                             14
    #define       bBPMBPROP_NeighborC                          1
    #define   MSK32BPMBPROP_NeighborC                             0x00004000

    #define     BA_BPMBPROP_NeighborD                          0x0001
    #define     B16BPMBPROP_NeighborD                          0x0000
    #define   LSb32BPMBPROP_NeighborD                             15
    #define   LSb16BPMBPROP_NeighborD                             15
    #define       bBPMBPROP_NeighborD                          1
    #define   MSK32BPMBPROP_NeighborD                             0x00008000

    #define     BA_BPMBPROP_LastInSeq                          0x0002
    #define     B16BPMBPROP_LastInSeq                          0x0002
    #define   LSb32BPMBPROP_LastInSeq                             16
    #define   LSb16BPMBPROP_LastInSeq                             0
    #define       bBPMBPROP_LastInSeq                          1
    #define   MSK32BPMBPROP_LastInSeq                             0x00010000

    #define     BA_BPMBPROP_NumBLK                             0x0002
    #define     B16BPMBPROP_NumBLK                             0x0002
    #define   LSb32BPMBPROP_NumBLK                                17
    #define   LSb16BPMBPROP_NumBLK                                1
    #define       bBPMBPROP_NumBLK                             3
    #define   MSK32BPMBPROP_NumBLK                                0x000E0000

    #define     BA_BPMBPROP_loopFlt                            0x0002
    #define     B16BPMBPROP_loopFlt                            0x0002
    #define   LSb32BPMBPROP_loopFlt                               20
    #define   LSb16BPMBPROP_loopFlt                               4
    #define       bBPMBPROP_loopFlt                            1
    #define   MSK32BPMBPROP_loopFlt                               0x00100000

    #define     BA_BPMBPROP_LFInSlice                          0x0002
    #define     B16BPMBPROP_LFInSlice                          0x0002
    #define   LSb32BPMBPROP_LFInSlice                             21
    #define   LSb16BPMBPROP_LFInSlice                             5
    #define       bBPMBPROP_LFInSlice                          1
    #define   MSK32BPMBPROP_LFInSlice                             0x00200000

    #define     BA_BPMBPROP_AC0Offset                          0x0002
    #define     B16BPMBPROP_AC0Offset                          0x0002
    #define   LSb32BPMBPROP_AC0Offset                             22
    #define   LSb16BPMBPROP_AC0Offset                             6
    #define       bBPMBPROP_AC0Offset                          5
    #define   MSK32BPMBPROP_AC0Offset                             0x07C00000

    #define     BA_BPMBPROP_BetaOffset                         0x0003
    #define     B16BPMBPROP_BetaOffset                         0x0002
    #define   LSb32BPMBPROP_BetaOffset                            27
    #define   LSb16BPMBPROP_BetaOffset                            11
    #define       bBPMBPROP_BetaOffset                         5
    #define   MSK32BPMBPROP_BetaOffset                            0xF8000000
    ///////////////////////////////////////////////////////////

    #define     BA_BPMBPROP_MBX                                0x0004
    #define     B16BPMBPROP_MBX                                0x0004
    #define   LSb32BPMBPROP_MBX                                   0
    #define   LSb16BPMBPROP_MBX                                   0
    #define       bBPMBPROP_MBX                                8
    #define   MSK32BPMBPROP_MBX                                   0x000000FF

    #define     BA_BPMBPROP_MBY                                0x0005
    #define     B16BPMBPROP_MBY                                0x0004
    #define   LSb32BPMBPROP_MBY                                   8
    #define   LSb16BPMBPROP_MBY                                   8
    #define       bBPMBPROP_MBY                                8
    #define   MSK32BPMBPROP_MBY                                   0x0000FF00

    #define     BA_BPMBPROP_CBP                                0x0006
    #define     B16BPMBPROP_CBP                                0x0006
    #define   LSb32BPMBPROP_CBP                                   16
    #define   LSb16BPMBPROP_CBP                                   0
    #define       bBPMBPROP_CBP                                8
    #define   MSK32BPMBPROP_CBP                                   0x00FF0000

    #define     BA_BPMBPROP_CBPDC                              0x0007
    #define     B16BPMBPROP_CBPDC                              0x0006
    #define   LSb32BPMBPROP_CBPDC                                 24
    #define   LSb16BPMBPROP_CBPDC                                 8
    #define       bBPMBPROP_CBPDC                              8
    #define   MSK32BPMBPROP_CBPDC                                 0xFF000000
    ///////////////////////////////////////////////////////////
    #define     RA_BPMBPROP_BLK                                0x0008
    ///////////////////////////////////////////////////////////

    #define     BA_BPMBPROP_chroma                             0x000C
    #define     B16BPMBPROP_chroma                             0x000C
    #define   LSb32BPMBPROP_chroma                                0
    #define   LSb16BPMBPROP_chroma                                0
    #define       bBPMBPROP_chroma                             2
    #define   MSK32BPMBPROP_chroma                                0x00000003
    #define        BPMBPROP_chroma_DC                                       0x0
    #define        BPMBPROP_chroma_Horizontal                               0x1
    #define        BPMBPROP_chroma_Vertical                                 0x2
    #define        BPMBPROP_chroma_Plane                                    0x3
    #define        BPMBPROP_chroma_ACP_OFF                                  0x0
    #define        BPMBPROP_chroma_ACP_ON                                   0x1

    #define     BA_BPMBPROP_first_rnd                          0x000C
    #define     B16BPMBPROP_first_rnd                          0x000C
    #define   LSb32BPMBPROP_first_rnd                             2
    #define   LSb16BPMBPROP_first_rnd                             2
    #define       bBPMBPROP_first_rnd                          2
    #define   MSK32BPMBPROP_first_rnd                             0x0000000C

    #define     BA_BPMBPROP_vLumaDB                            0x000C
    #define     B16BPMBPROP_vLumaDB                            0x000C
    #define   LSb32BPMBPROP_vLumaDB                               4
    #define   LSb16BPMBPROP_vLumaDB                               4
    #define       bBPMBPROP_vLumaDB                            1
    #define   MSK32BPMBPROP_vLumaDB                               0x00000010

    #define     BA_BPMBPROP_vChromaDB                          0x000C
    #define     B16BPMBPROP_vChromaDB                          0x000C
    #define   LSb32BPMBPROP_vChromaDB                             5
    #define   LSb16BPMBPROP_vChromaDB                             5
    #define       bBPMBPROP_vChromaDB                          1
    #define   MSK32BPMBPROP_vChromaDB                             0x00000020

    #define     BA_BPMBPROP_hLumaDB                            0x000C
    #define     B16BPMBPROP_hLumaDB                            0x000C
    #define   LSb32BPMBPROP_hLumaDB                               6
    #define   LSb16BPMBPROP_hLumaDB                               6
    #define       bBPMBPROP_hLumaDB                            1
    #define   MSK32BPMBPROP_hLumaDB                               0x00000040

    #define     BA_BPMBPROP_hChromaDB                          0x000C
    #define     B16BPMBPROP_hChromaDB                          0x000C
    #define   LSb32BPMBPROP_hChromaDB                             7
    #define   LSb16BPMBPROP_hChromaDB                             7
    #define       bBPMBPROP_hChromaDB                          1
    #define   MSK32BPMBPROP_hChromaDB                             0x00000080

    #define     BA_BPMBPROP_QP                                 0x000D
    #define     B16BPMBPROP_QP                                 0x000C
    #define   LSb32BPMBPROP_QP                                    8
    #define   LSb16BPMBPROP_QP                                    8
    #define       bBPMBPROP_QP                                 8
    #define   MSK32BPMBPROP_QP                                    0x0000FF00

    #define     BA_BPMBPROP_Qu                                 0x000E
    #define     B16BPMBPROP_Qu                                 0x000E
    #define   LSb32BPMBPROP_Qu                                    16
    #define   LSb16BPMBPROP_Qu                                    0
    #define       bBPMBPROP_Qu                                 8
    #define   MSK32BPMBPROP_Qu                                    0x00FF0000

    #define     BA_BPMBPROP_Qv                                 0x000F
    #define     B16BPMBPROP_Qv                                 0x000E
    #define   LSb32BPMBPROP_Qv                                    24
    #define   LSb16BPMBPROP_Qv                                    8
    #define       bBPMBPROP_Qv                                 8
    #define   MSK32BPMBPROP_Qv                                    0xFF000000
    ///////////////////////////////////////////////////////////
    #define     RA_BPMBPROP_pred                               0x0010
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BPMBPROP {
    ///////////////////////////////////////////////////////////
    #define   GET32BPMBPROP_type(r32)                          _BFGET_(r32, 2, 0)
    #define   SET32BPMBPROP_type(r32,v)                        _BFSET_(r32, 2, 0,v)
    #define   GET16BPMBPROP_type(r16)                          _BFGET_(r16, 2, 0)
    #define   SET16BPMBPROP_type(r16,v)                        _BFSET_(r16, 2, 0,v)

    #define   GET32BPMBPROP_partition(r32)                     _BFGET_(r32, 4, 3)
    #define   SET32BPMBPROP_partition(r32,v)                   _BFSET_(r32, 4, 3,v)
    #define   GET16BPMBPROP_partition(r16)                     _BFGET_(r16, 4, 3)
    #define   SET16BPMBPROP_partition(r16,v)                   _BFSET_(r16, 4, 3,v)

    #define   GET32BPMBPROP_t8x8(r32)                          _BFGET_(r32, 5, 5)
    #define   SET32BPMBPROP_t8x8(r32,v)                        _BFSET_(r32, 5, 5,v)
    #define   GET16BPMBPROP_t8x8(r16)                          _BFGET_(r16, 5, 5)
    #define   SET16BPMBPROP_t8x8(r16,v)                        _BFSET_(r16, 5, 5,v)

    #define   GET32BPMBPROP_MBAFF(r32)                         _BFGET_(r32, 6, 6)
    #define   SET32BPMBPROP_MBAFF(r32,v)                       _BFSET_(r32, 6, 6,v)
    #define   GET16BPMBPROP_MBAFF(r16)                         _BFGET_(r16, 6, 6)
    #define   SET16BPMBPROP_MBAFF(r16,v)                       _BFSET_(r16, 6, 6,v)

    #define   GET32BPMBPROP_FLD(r32)                           _BFGET_(r32, 7, 7)
    #define   SET32BPMBPROP_FLD(r32,v)                         _BFSET_(r32, 7, 7,v)
    #define   GET16BPMBPROP_FLD(r16)                           _BFGET_(r16, 7, 7)
    #define   SET16BPMBPROP_FLD(r16,v)                         _BFSET_(r16, 7, 7,v)

    #define   GET32BPMBPROP_FLDNeighborA(r32)                  _BFGET_(r32, 8, 8)
    #define   SET32BPMBPROP_FLDNeighborA(r32,v)                _BFSET_(r32, 8, 8,v)
    #define   GET16BPMBPROP_FLDNeighborA(r16)                  _BFGET_(r16, 8, 8)
    #define   SET16BPMBPROP_FLDNeighborA(r16,v)                _BFSET_(r16, 8, 8,v)

    #define   GET32BPMBPROP_FLDNeighborB(r32)                  _BFGET_(r32, 9, 9)
    #define   SET32BPMBPROP_FLDNeighborB(r32,v)                _BFSET_(r32, 9, 9,v)
    #define   GET16BPMBPROP_FLDNeighborB(r16)                  _BFGET_(r16, 9, 9)
    #define   SET16BPMBPROP_FLDNeighborB(r16,v)                _BFSET_(r16, 9, 9,v)

    #define   GET32BPMBPROP_FLDNeighborC(r32)                  _BFGET_(r32,10,10)
    #define   SET32BPMBPROP_FLDNeighborC(r32,v)                _BFSET_(r32,10,10,v)
    #define   GET16BPMBPROP_FLDNeighborC(r16)                  _BFGET_(r16,10,10)
    #define   SET16BPMBPROP_FLDNeighborC(r16,v)                _BFSET_(r16,10,10,v)

    #define   GET32BPMBPROP_FLDNeighborD(r32)                  _BFGET_(r32,11,11)
    #define   SET32BPMBPROP_FLDNeighborD(r32,v)                _BFSET_(r32,11,11,v)
    #define   GET16BPMBPROP_FLDNeighborD(r16)                  _BFGET_(r16,11,11)
    #define   SET16BPMBPROP_FLDNeighborD(r16,v)                _BFSET_(r16,11,11,v)

    #define   GET32BPMBPROP_NeighborA(r32)                     _BFGET_(r32,12,12)
    #define   SET32BPMBPROP_NeighborA(r32,v)                   _BFSET_(r32,12,12,v)
    #define   GET16BPMBPROP_NeighborA(r16)                     _BFGET_(r16,12,12)
    #define   SET16BPMBPROP_NeighborA(r16,v)                   _BFSET_(r16,12,12,v)

    #define   GET32BPMBPROP_NeighborB(r32)                     _BFGET_(r32,13,13)
    #define   SET32BPMBPROP_NeighborB(r32,v)                   _BFSET_(r32,13,13,v)
    #define   GET16BPMBPROP_NeighborB(r16)                     _BFGET_(r16,13,13)
    #define   SET16BPMBPROP_NeighborB(r16,v)                   _BFSET_(r16,13,13,v)

    #define   GET32BPMBPROP_NeighborC(r32)                     _BFGET_(r32,14,14)
    #define   SET32BPMBPROP_NeighborC(r32,v)                   _BFSET_(r32,14,14,v)
    #define   GET16BPMBPROP_NeighborC(r16)                     _BFGET_(r16,14,14)
    #define   SET16BPMBPROP_NeighborC(r16,v)                   _BFSET_(r16,14,14,v)

    #define   GET32BPMBPROP_NeighborD(r32)                     _BFGET_(r32,15,15)
    #define   SET32BPMBPROP_NeighborD(r32,v)                   _BFSET_(r32,15,15,v)
    #define   GET16BPMBPROP_NeighborD(r16)                     _BFGET_(r16,15,15)
    #define   SET16BPMBPROP_NeighborD(r16,v)                   _BFSET_(r16,15,15,v)

    #define   GET32BPMBPROP_LastInSeq(r32)                     _BFGET_(r32,16,16)
    #define   SET32BPMBPROP_LastInSeq(r32,v)                   _BFSET_(r32,16,16,v)
    #define   GET16BPMBPROP_LastInSeq(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16BPMBPROP_LastInSeq(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define   GET32BPMBPROP_NumBLK(r32)                        _BFGET_(r32,19,17)
    #define   SET32BPMBPROP_NumBLK(r32,v)                      _BFSET_(r32,19,17,v)
    #define   GET16BPMBPROP_NumBLK(r16)                        _BFGET_(r16, 3, 1)
    #define   SET16BPMBPROP_NumBLK(r16,v)                      _BFSET_(r16, 3, 1,v)

    #define   GET32BPMBPROP_loopFlt(r32)                       _BFGET_(r32,20,20)
    #define   SET32BPMBPROP_loopFlt(r32,v)                     _BFSET_(r32,20,20,v)
    #define   GET16BPMBPROP_loopFlt(r16)                       _BFGET_(r16, 4, 4)
    #define   SET16BPMBPROP_loopFlt(r16,v)                     _BFSET_(r16, 4, 4,v)

    #define   GET32BPMBPROP_LFInSlice(r32)                     _BFGET_(r32,21,21)
    #define   SET32BPMBPROP_LFInSlice(r32,v)                   _BFSET_(r32,21,21,v)
    #define   GET16BPMBPROP_LFInSlice(r16)                     _BFGET_(r16, 5, 5)
    #define   SET16BPMBPROP_LFInSlice(r16,v)                   _BFSET_(r16, 5, 5,v)

    #define   GET32BPMBPROP_AC0Offset(r32)                     _BFGET_(r32,26,22)
    #define   SET32BPMBPROP_AC0Offset(r32,v)                   _BFSET_(r32,26,22,v)
    #define   GET16BPMBPROP_AC0Offset(r16)                     _BFGET_(r16,10, 6)
    #define   SET16BPMBPROP_AC0Offset(r16,v)                   _BFSET_(r16,10, 6,v)

    #define   GET32BPMBPROP_BetaOffset(r32)                    _BFGET_(r32,31,27)
    #define   SET32BPMBPROP_BetaOffset(r32,v)                  _BFSET_(r32,31,27,v)
    #define   GET16BPMBPROP_BetaOffset(r16)                    _BFGET_(r16,15,11)
    #define   SET16BPMBPROP_BetaOffset(r16,v)                  _BFSET_(r16,15,11,v)

            UNSG32 u_type                                      :  3;
            UNSG32 u_partition                                 :  2;
            UNSG32 u_t8x8                                      :  1;
            UNSG32 u_MBAFF                                     :  1;
            UNSG32 u_FLD                                       :  1;
            UNSG32 u_FLDNeighborA                              :  1;
            UNSG32 u_FLDNeighborB                              :  1;
            UNSG32 u_FLDNeighborC                              :  1;
            UNSG32 u_FLDNeighborD                              :  1;
            UNSG32 u_NeighborA                                 :  1;
            UNSG32 u_NeighborB                                 :  1;
            UNSG32 u_NeighborC                                 :  1;
            UNSG32 u_NeighborD                                 :  1;
            UNSG32 u_LastInSeq                                 :  1;
            UNSG32 u_NumBLK                                    :  3;
            UNSG32 u_loopFlt                                   :  1;
            UNSG32 u_LFInSlice                                 :  1;
            UNSG32 u_AC0Offset                                 :  5;
            UNSG32 u_BetaOffset                                :  5;
    ///////////////////////////////////////////////////////////
    #define   GET32BPMBPROP_MBX(r32)                           _BFGET_(r32, 7, 0)
    #define   SET32BPMBPROP_MBX(r32,v)                         _BFSET_(r32, 7, 0,v)
    #define   GET16BPMBPROP_MBX(r16)                           _BFGET_(r16, 7, 0)
    #define   SET16BPMBPROP_MBX(r16,v)                         _BFSET_(r16, 7, 0,v)

    #define   GET32BPMBPROP_MBY(r32)                           _BFGET_(r32,15, 8)
    #define   SET32BPMBPROP_MBY(r32,v)                         _BFSET_(r32,15, 8,v)
    #define   GET16BPMBPROP_MBY(r16)                           _BFGET_(r16,15, 8)
    #define   SET16BPMBPROP_MBY(r16,v)                         _BFSET_(r16,15, 8,v)

    #define   GET32BPMBPROP_CBP(r32)                           _BFGET_(r32,23,16)
    #define   SET32BPMBPROP_CBP(r32,v)                         _BFSET_(r32,23,16,v)
    #define   GET16BPMBPROP_CBP(r16)                           _BFGET_(r16, 7, 0)
    #define   SET16BPMBPROP_CBP(r16,v)                         _BFSET_(r16, 7, 0,v)

    #define   GET32BPMBPROP_CBPDC(r32)                         _BFGET_(r32,31,24)
    #define   SET32BPMBPROP_CBPDC(r32,v)                       _BFSET_(r32,31,24,v)
    #define   GET16BPMBPROP_CBPDC(r16)                         _BFGET_(r16,15, 8)
    #define   SET16BPMBPROP_CBPDC(r16,v)                       _BFSET_(r16,15, 8,v)

            UNSG32 u_MBX                                       :  8;
            UNSG32 u_MBY                                       :  8;
            UNSG32 u_CBP                                       :  8;
            UNSG32 u_CBPDC                                     :  8;
    ///////////////////////////////////////////////////////////
              SIE_BLK                                          ie_BLK;
    ///////////////////////////////////////////////////////////
    #define   GET32BPMBPROP_chroma(r32)                        _BFGET_(r32, 1, 0)
    #define   SET32BPMBPROP_chroma(r32,v)                      _BFSET_(r32, 1, 0,v)
    #define   GET16BPMBPROP_chroma(r16)                        _BFGET_(r16, 1, 0)
    #define   SET16BPMBPROP_chroma(r16,v)                      _BFSET_(r16, 1, 0,v)

    #define   GET32BPMBPROP_first_rnd(r32)                     _BFGET_(r32, 3, 2)
    #define   SET32BPMBPROP_first_rnd(r32,v)                   _BFSET_(r32, 3, 2,v)
    #define   GET16BPMBPROP_first_rnd(r16)                     _BFGET_(r16, 3, 2)
    #define   SET16BPMBPROP_first_rnd(r16,v)                   _BFSET_(r16, 3, 2,v)

    #define   GET32BPMBPROP_vLumaDB(r32)                       _BFGET_(r32, 4, 4)
    #define   SET32BPMBPROP_vLumaDB(r32,v)                     _BFSET_(r32, 4, 4,v)
    #define   GET16BPMBPROP_vLumaDB(r16)                       _BFGET_(r16, 4, 4)
    #define   SET16BPMBPROP_vLumaDB(r16,v)                     _BFSET_(r16, 4, 4,v)

    #define   GET32BPMBPROP_vChromaDB(r32)                     _BFGET_(r32, 5, 5)
    #define   SET32BPMBPROP_vChromaDB(r32,v)                   _BFSET_(r32, 5, 5,v)
    #define   GET16BPMBPROP_vChromaDB(r16)                     _BFGET_(r16, 5, 5)
    #define   SET16BPMBPROP_vChromaDB(r16,v)                   _BFSET_(r16, 5, 5,v)

    #define   GET32BPMBPROP_hLumaDB(r32)                       _BFGET_(r32, 6, 6)
    #define   SET32BPMBPROP_hLumaDB(r32,v)                     _BFSET_(r32, 6, 6,v)
    #define   GET16BPMBPROP_hLumaDB(r16)                       _BFGET_(r16, 6, 6)
    #define   SET16BPMBPROP_hLumaDB(r16,v)                     _BFSET_(r16, 6, 6,v)

    #define   GET32BPMBPROP_hChromaDB(r32)                     _BFGET_(r32, 7, 7)
    #define   SET32BPMBPROP_hChromaDB(r32,v)                   _BFSET_(r32, 7, 7,v)
    #define   GET16BPMBPROP_hChromaDB(r16)                     _BFGET_(r16, 7, 7)
    #define   SET16BPMBPROP_hChromaDB(r16,v)                   _BFSET_(r16, 7, 7,v)

    #define   GET32BPMBPROP_QP(r32)                            _BFGET_(r32,15, 8)
    #define   SET32BPMBPROP_QP(r32,v)                          _BFSET_(r32,15, 8,v)
    #define   GET16BPMBPROP_QP(r16)                            _BFGET_(r16,15, 8)
    #define   SET16BPMBPROP_QP(r16,v)                          _BFSET_(r16,15, 8,v)

    #define   GET32BPMBPROP_Qu(r32)                            _BFGET_(r32,23,16)
    #define   SET32BPMBPROP_Qu(r32,v)                          _BFSET_(r32,23,16,v)
    #define   GET16BPMBPROP_Qu(r16)                            _BFGET_(r16, 7, 0)
    #define   SET16BPMBPROP_Qu(r16,v)                          _BFSET_(r16, 7, 0,v)

    #define   GET32BPMBPROP_Qv(r32)                            _BFGET_(r32,31,24)
    #define   SET32BPMBPROP_Qv(r32,v)                          _BFSET_(r32,31,24,v)
    #define   GET16BPMBPROP_Qv(r16)                            _BFGET_(r16,15, 8)
    #define   SET16BPMBPROP_Qv(r16,v)                          _BFSET_(r16,15, 8,v)

            UNSG32 u_chroma                                    :  2;
            UNSG32 u_first_rnd                                 :  2;
            UNSG32 u_vLumaDB                                   :  1;
            UNSG32 u_vChromaDB                                 :  1;
            UNSG32 u_hLumaDB                                   :  1;
            UNSG32 u_hChromaDB                                 :  1;
            UNSG32 u_QP                                        :  8;
            UNSG32 u_Qu                                        :  8;
            UNSG32 u_Qv                                        :  8;
    ///////////////////////////////////////////////////////////
              SIE_IntraLuma                                    ie_pred[4];
    ///////////////////////////////////////////////////////////
    } SIE_BPMBPROP;

    ///////////////////////////////////////////////////////////
     SIGN32 BPMBPROP_drvrd(SIE_BPMBPROP *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BPMBPROP_drvwr(SIE_BPMBPROP *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BPMBPROP_reset(SIE_BPMBPROP *p);
     SIGN32 BPMBPROP_cmp  (SIE_BPMBPROP *p, SIE_BPMBPROP *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BPMBPROP_check(p,pie,pfx,hLOG) BPMBPROP_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BPMBPROP_print(p,    pfx,hLOG) BPMBPROP_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BPMBPROP
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FMOMBCTX                                 (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 mbprop               
///               $BPMBPROP            mbprop            REG          
///                                    ###
///                                    * First 32 bytes of MBPROP
///                                    ###
///     @ 0x00020                      (P)
///     # 0x00020 fctx                 
///               $FCTX                fctx              REG      [16]
///                                    ###
///                                    * All the FCTX of current MB
///                                    * End of FMOMBCTX
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     160B, bits:    1280b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FMOMBCTX
#define h_FMOMBCTX (){}

    #define     RA_FMOMBCTX_mbprop                             0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_FMOMBCTX_fctx                               0x0020
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FMOMBCTX {
    ///////////////////////////////////////////////////////////
              SIE_BPMBPROP                                     ie_mbprop;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_fctx[16];
    ///////////////////////////////////////////////////////////
    } SIE_FMOMBCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 FMOMBCTX_drvrd(SIE_FMOMBCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FMOMBCTX_drvwr(SIE_FMOMBCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FMOMBCTX_reset(SIE_FMOMBCTX *p);
     SIGN32 FMOMBCTX_cmp  (SIE_FMOMBCTX *p, SIE_FMOMBCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FMOMBCTX_check(p,pie,pfx,hLOG) FMOMBCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FMOMBCTX_print(p,    pfx,hLOG) FMOMBCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FMOMBCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE MBMsg                                    (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 mbprop               
///               $BPMBPROP            mbprop            REG          
///                                    ###
///                                    * First 32 bytes of MBPROP
///                                    ###
///     @ 0x00020                      (P)
///     # 0x00020 fctx                 
///               $FCTX                fctx              REG      [16]
///                                    ###
///                                    * All the FCTX of current MB
///                                    * End of MBMsg
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     160B, bits:    1280b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_MBMsg
#define h_MBMsg (){}

    #define     RA_MBMsg_mbprop                                0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_MBMsg_fctx                                  0x0020
    ///////////////////////////////////////////////////////////

    typedef struct SIE_MBMsg {
    ///////////////////////////////////////////////////////////
              SIE_BPMBPROP                                     ie_mbprop;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_fctx[16];
    ///////////////////////////////////////////////////////////
    } SIE_MBMsg;

    ///////////////////////////////////////////////////////////
     SIGN32 MBMsg_drvrd(SIE_MBMsg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 MBMsg_drvwr(SIE_MBMsg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void MBMsg_reset(SIE_MBMsg *p);
     SIGN32 MBMsg_cmp  (SIE_MBMsg *p, SIE_MBMsg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define MBMsg_check(p,pie,pfx,hLOG) MBMsg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define MBMsg_print(p,    pfx,hLOG) MBMsg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: MBMsg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FMOMBMsg                                 (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 mbprop               
///               $BPMBPROP            mbprop            REG          
///                                    ###
///                                    * First 32 bytes of MBPROP
///                                    ###
///     @ 0x00020                      (P)
///     # 0x00020 fctx                 
///               $FCTX                fctx              REG      [16]
///                                    ###
///                                    * All the FCTX of current MB
///                                    ###
///     @ 0x000A0                      (P)
///     # 0x000A0 tc                   
///               $LUT64b              tc                REG      [96]
///                                    ###
///                                    * Six 8x8 blocks TC coefficients
///                                    * End of FMOMBMsg
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     928B, bits:    7424b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FMOMBMsg
#define h_FMOMBMsg (){}

    #define     RA_FMOMBMsg_mbprop                             0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_FMOMBMsg_fctx                               0x0020
    ///////////////////////////////////////////////////////////
    #define     RA_FMOMBMsg_tc                                 0x00A0
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FMOMBMsg {
    ///////////////////////////////////////////////////////////
              SIE_BPMBPROP                                     ie_mbprop;
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_fctx[16];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_tc[96];
    ///////////////////////////////////////////////////////////
    } SIE_FMOMBMsg;

    ///////////////////////////////////////////////////////////
     SIGN32 FMOMBMsg_drvrd(SIE_FMOMBMsg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FMOMBMsg_drvwr(SIE_FMOMBMsg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FMOMBMsg_reset(SIE_FMOMBMsg *p);
     SIGN32 FMOMBMsg_cmp  (SIE_FMOMBMsg *p, SIE_FMOMBMsg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FMOMBMsg_check(p,pie,pfx,hLOG) FMOMBMsg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FMOMBMsg_print(p,    pfx,hLOG) FMOMBMsg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FMOMBMsg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BPCTX                                    (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 16 SID                       
///                                    ###
///                                    * Slice ID of Current MB
///                                    ###
///               %unsigned 5  NCU0                      
///                                    ###
///                                    * NC for 1st 4x4 Cb AC block
///                                    ###
///               %unsigned 5  NCU1                      
///                                    ###
///                                    * NC for 2nd 4x4 Cb AC block
///                                    ###
///               %%        6          # Stuffing bits...
///     @ 0x00004                      (P)
///               %unsigned 5  NCY0                      
///                                    ###
///                                    * NC for 1st 4x4 Luma AC block
///                                    ###
///               %unsigned 5  NCY1                      
///                                    ###
///                                    * NC for 2nd 4x4 Luma AC block
///                                    ###
///               %unsigned 5  NCY2                      
///                                    ###
///                                    * NC for 3rd 4x4 Luma AC block
///                                    ###
///               %%        1          # Stuffing bits...
///               %unsigned 5  NCY3                      
///                                    ###
///                                    * NC for 4th 4x4 Luma AC block
///                                    ###
///               %unsigned 5  NCV0                      
///                                    ###
///                                    * NC for 1st 4x4 Cr AC block
///                                    ###
///               %unsigned 5  NCV1                      
///                                    ###
///                                    * NC for 2nd 4x4 Cr AC block
///                                    * End of BPCTX
///                                    ###
///               %%        1          # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      56b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BPCTX
#define h_BPCTX (){}

    #define     BA_BPCTX_SID                                   0x0000
    #define     B16BPCTX_SID                                   0x0000
    #define   LSb32BPCTX_SID                                      0
    #define   LSb16BPCTX_SID                                      0
    #define       bBPCTX_SID                                   16
    #define   MSK32BPCTX_SID                                      0x0000FFFF

    #define     BA_BPCTX_NCU0                                  0x0002
    #define     B16BPCTX_NCU0                                  0x0002
    #define   LSb32BPCTX_NCU0                                     16
    #define   LSb16BPCTX_NCU0                                     0
    #define       bBPCTX_NCU0                                  5
    #define   MSK32BPCTX_NCU0                                     0x001F0000

    #define     BA_BPCTX_NCU1                                  0x0002
    #define     B16BPCTX_NCU1                                  0x0002
    #define   LSb32BPCTX_NCU1                                     21
    #define   LSb16BPCTX_NCU1                                     5
    #define       bBPCTX_NCU1                                  5
    #define   MSK32BPCTX_NCU1                                     0x03E00000
    ///////////////////////////////////////////////////////////

    #define     BA_BPCTX_NCY0                                  0x0004
    #define     B16BPCTX_NCY0                                  0x0004
    #define   LSb32BPCTX_NCY0                                     0
    #define   LSb16BPCTX_NCY0                                     0
    #define       bBPCTX_NCY0                                  5
    #define   MSK32BPCTX_NCY0                                     0x0000001F

    #define     BA_BPCTX_NCY1                                  0x0004
    #define     B16BPCTX_NCY1                                  0x0004
    #define   LSb32BPCTX_NCY1                                     5
    #define   LSb16BPCTX_NCY1                                     5
    #define       bBPCTX_NCY1                                  5
    #define   MSK32BPCTX_NCY1                                     0x000003E0

    #define     BA_BPCTX_NCY2                                  0x0005
    #define     B16BPCTX_NCY2                                  0x0004
    #define   LSb32BPCTX_NCY2                                     10
    #define   LSb16BPCTX_NCY2                                     10
    #define       bBPCTX_NCY2                                  5
    #define   MSK32BPCTX_NCY2                                     0x00007C00

    #define     BA_BPCTX_NCY3                                  0x0006
    #define     B16BPCTX_NCY3                                  0x0006
    #define   LSb32BPCTX_NCY3                                     16
    #define   LSb16BPCTX_NCY3                                     0
    #define       bBPCTX_NCY3                                  5
    #define   MSK32BPCTX_NCY3                                     0x001F0000

    #define     BA_BPCTX_NCV0                                  0x0006
    #define     B16BPCTX_NCV0                                  0x0006
    #define   LSb32BPCTX_NCV0                                     21
    #define   LSb16BPCTX_NCV0                                     5
    #define       bBPCTX_NCV0                                  5
    #define   MSK32BPCTX_NCV0                                     0x03E00000

    #define     BA_BPCTX_NCV1                                  0x0007
    #define     B16BPCTX_NCV1                                  0x0006
    #define   LSb32BPCTX_NCV1                                     26
    #define   LSb16BPCTX_NCV1                                     10
    #define       bBPCTX_NCV1                                  5
    #define   MSK32BPCTX_NCV1                                     0x7C000000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BPCTX {
    ///////////////////////////////////////////////////////////
    #define   GET32BPCTX_SID(r32)                              _BFGET_(r32,15, 0)
    #define   SET32BPCTX_SID(r32,v)                            _BFSET_(r32,15, 0,v)
    #define   GET16BPCTX_SID(r16)                              _BFGET_(r16,15, 0)
    #define   SET16BPCTX_SID(r16,v)                            _BFSET_(r16,15, 0,v)

    #define   GET32BPCTX_NCU0(r32)                             _BFGET_(r32,20,16)
    #define   SET32BPCTX_NCU0(r32,v)                           _BFSET_(r32,20,16,v)
    #define   GET16BPCTX_NCU0(r16)                             _BFGET_(r16, 4, 0)
    #define   SET16BPCTX_NCU0(r16,v)                           _BFSET_(r16, 4, 0,v)

    #define   GET32BPCTX_NCU1(r32)                             _BFGET_(r32,25,21)
    #define   SET32BPCTX_NCU1(r32,v)                           _BFSET_(r32,25,21,v)
    #define   GET16BPCTX_NCU1(r16)                             _BFGET_(r16, 9, 5)
    #define   SET16BPCTX_NCU1(r16,v)                           _BFSET_(r16, 9, 5,v)

            UNSG32 u_SID                                       : 16;
            UNSG32 u_NCU0                                      :  5;
            UNSG32 u_NCU1                                      :  5;
            UNSG32 RSVDx0_b26                                  :  6;
    ///////////////////////////////////////////////////////////
    #define   GET32BPCTX_NCY0(r32)                             _BFGET_(r32, 4, 0)
    #define   SET32BPCTX_NCY0(r32,v)                           _BFSET_(r32, 4, 0,v)
    #define   GET16BPCTX_NCY0(r16)                             _BFGET_(r16, 4, 0)
    #define   SET16BPCTX_NCY0(r16,v)                           _BFSET_(r16, 4, 0,v)

    #define   GET32BPCTX_NCY1(r32)                             _BFGET_(r32, 9, 5)
    #define   SET32BPCTX_NCY1(r32,v)                           _BFSET_(r32, 9, 5,v)
    #define   GET16BPCTX_NCY1(r16)                             _BFGET_(r16, 9, 5)
    #define   SET16BPCTX_NCY1(r16,v)                           _BFSET_(r16, 9, 5,v)

    #define   GET32BPCTX_NCY2(r32)                             _BFGET_(r32,14,10)
    #define   SET32BPCTX_NCY2(r32,v)                           _BFSET_(r32,14,10,v)
    #define   GET16BPCTX_NCY2(r16)                             _BFGET_(r16,14,10)
    #define   SET16BPCTX_NCY2(r16,v)                           _BFSET_(r16,14,10,v)

    #define   GET32BPCTX_NCY3(r32)                             _BFGET_(r32,20,16)
    #define   SET32BPCTX_NCY3(r32,v)                           _BFSET_(r32,20,16,v)
    #define   GET16BPCTX_NCY3(r16)                             _BFGET_(r16, 4, 0)
    #define   SET16BPCTX_NCY3(r16,v)                           _BFSET_(r16, 4, 0,v)

    #define   GET32BPCTX_NCV0(r32)                             _BFGET_(r32,25,21)
    #define   SET32BPCTX_NCV0(r32,v)                           _BFSET_(r32,25,21,v)
    #define   GET16BPCTX_NCV0(r16)                             _BFGET_(r16, 9, 5)
    #define   SET16BPCTX_NCV0(r16,v)                           _BFSET_(r16, 9, 5,v)

    #define   GET32BPCTX_NCV1(r32)                             _BFGET_(r32,30,26)
    #define   SET32BPCTX_NCV1(r32,v)                           _BFSET_(r32,30,26,v)
    #define   GET16BPCTX_NCV1(r16)                             _BFGET_(r16,14,10)
    #define   SET16BPCTX_NCV1(r16,v)                           _BFSET_(r16,14,10,v)

            UNSG32 u_NCY0                                      :  5;
            UNSG32 u_NCY1                                      :  5;
            UNSG32 u_NCY2                                      :  5;
            UNSG32 RSVDx4_b15                                  :  1;
            UNSG32 u_NCY3                                      :  5;
            UNSG32 u_NCV0                                      :  5;
            UNSG32 u_NCV1                                      :  5;
            UNSG32 RSVDx4_b31                                  :  1;
    ///////////////////////////////////////////////////////////
    } SIE_BPCTX;

    ///////////////////////////////////////////////////////////
     SIGN32 BPCTX_drvrd(SIE_BPCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BPCTX_drvwr(SIE_BPCTX *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BPCTX_reset(SIE_BPCTX *p);
     SIGN32 BPCTX_cmp  (SIE_BPCTX *p, SIE_BPCTX *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BPCTX_check(p,pie,pfx,hLOG) BPCTX_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BPCTX_print(p,    pfx,hLOG) BPCTX_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BPCTX
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE FMOAddr                                  (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 32 fmo_des                   
///                                    ###
///                                    * Fmo msg destination address, for parser
///                                    ###
///     @ 0x00004                      (P)
///               %unsigned 32 fmo_src                   
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      64b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_FMOAddr
#define h_FMOAddr (){}

    #define     BA_FMOAddr_fmo_des                             0x0000
    #define     B16FMOAddr_fmo_des                             0x0000
    #define   LSb32FMOAddr_fmo_des                                0
    #define   LSb16FMOAddr_fmo_des                                0
    #define       bFMOAddr_fmo_des                             32
    #define   MSK32FMOAddr_fmo_des                                0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    #define     BA_FMOAddr_fmo_src                             0x0004
    #define     B16FMOAddr_fmo_src                             0x0004
    #define   LSb32FMOAddr_fmo_src                                0
    #define   LSb16FMOAddr_fmo_src                                0
    #define       bFMOAddr_fmo_src                             32
    #define   MSK32FMOAddr_fmo_src                                0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_FMOAddr {
    ///////////////////////////////////////////////////////////
    #define   GET32FMOAddr_fmo_des(r32)                        _BFGET_(r32,31, 0)
    #define   SET32FMOAddr_fmo_des(r32,v)                      _BFSET_(r32,31, 0,v)

            UNSG32 u_fmo_des                                   : 32;
    ///////////////////////////////////////////////////////////
    #define   GET32FMOAddr_fmo_src(r32)                        _BFGET_(r32,31, 0)
    #define   SET32FMOAddr_fmo_src(r32,v)                      _BFSET_(r32,31, 0,v)

            UNSG32 u_fmo_src                                   : 32;
    ///////////////////////////////////////////////////////////
    } SIE_FMOAddr;

    ///////////////////////////////////////////////////////////
     SIGN32 FMOAddr_drvrd(SIE_FMOAddr *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 FMOAddr_drvwr(SIE_FMOAddr *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void FMOAddr_reset(SIE_FMOAddr *p);
     SIGN32 FMOAddr_cmp  (SIE_FMOAddr *p, SIE_FMOAddr *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define FMOAddr_check(p,pie,pfx,hLOG) FMOAddr_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define FMOAddr_print(p,    pfx,hLOG) FMOAddr_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: FMOAddr
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE BPLocal                                  (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 16 data_0i                   
///               %unsigned 16 data_1i                   
///               %unsigned 16 data_2i                   
///               %unsigned 16 data_3i                   
///               %unsigned 16 data_4i                   
///               %unsigned 16 data_5i                   
///               %unsigned 16 data_6i                   
///               %unsigned 16 data_7i                   
///               %unsigned 16 data_8i                   
///               %unsigned 16 data_9i                   
///               %unsigned 16 data_10i                  
///               %unsigned 16 data_11i                  
///               %unsigned 16 data_12i                  
///               %unsigned 16 data_13i                  
///               %unsigned 16 data_14i                  
///               %unsigned 16 data_15i                  
///               %unsigned 16 data_16i                  
///               %unsigned 16 data_17i                  
///               %unsigned 16 data_18i                  
///               %unsigned 16 data_19i                  
///               %unsigned 16 data_20i                  
///               %unsigned 16 data_21i                  
///               %unsigned 16 data_22i                  
///               %unsigned 16 data_23i                  
///               %unsigned 16 data_24i                  
///               %unsigned 16 data_25i                  
///               %unsigned 16 data_26i                  
///               %unsigned 16 data_27i                  
///               %unsigned 16 data_28i                  
///               %unsigned 16 data_29i                  
///               %unsigned 16 data_30i                  
///               %unsigned 16 data_31i                  
///                                    ###
///                                    * H264 bp's local data space
///                                    * End of FMOAddr
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      64B, bits:     512b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_BPLocal
#define h_BPLocal (){}

    #define     BA_BPLocal_data_0i                             0x0000
    #define     B16BPLocal_data_0i                             0x0000
    #define   LSb32BPLocal_data_0i                                0
    #define   LSb16BPLocal_data_0i                                0
    #define       bBPLocal_data_0i                             16
    #define   MSK32BPLocal_data_0i                                0x0000FFFF

    #define     BA_BPLocal_data_1i                             0x0002
    #define     B16BPLocal_data_1i                             0x0002
    #define   LSb32BPLocal_data_1i                                16
    #define   LSb16BPLocal_data_1i                                0
    #define       bBPLocal_data_1i                             16
    #define   MSK32BPLocal_data_1i                                0xFFFF0000

    #define     BA_BPLocal_data_2i                             0x0004
    #define     B16BPLocal_data_2i                             0x0004
    #define   LSb32BPLocal_data_2i                                0
    #define   LSb16BPLocal_data_2i                                0
    #define       bBPLocal_data_2i                             16
    #define   MSK32BPLocal_data_2i                                0x0000FFFF

    #define     BA_BPLocal_data_3i                             0x0006
    #define     B16BPLocal_data_3i                             0x0006
    #define   LSb32BPLocal_data_3i                                16
    #define   LSb16BPLocal_data_3i                                0
    #define       bBPLocal_data_3i                             16
    #define   MSK32BPLocal_data_3i                                0xFFFF0000

    #define     BA_BPLocal_data_4i                             0x0008
    #define     B16BPLocal_data_4i                             0x0008
    #define   LSb32BPLocal_data_4i                                0
    #define   LSb16BPLocal_data_4i                                0
    #define       bBPLocal_data_4i                             16
    #define   MSK32BPLocal_data_4i                                0x0000FFFF

    #define     BA_BPLocal_data_5i                             0x000A
    #define     B16BPLocal_data_5i                             0x000A
    #define   LSb32BPLocal_data_5i                                16
    #define   LSb16BPLocal_data_5i                                0
    #define       bBPLocal_data_5i                             16
    #define   MSK32BPLocal_data_5i                                0xFFFF0000

    #define     BA_BPLocal_data_6i                             0x000C
    #define     B16BPLocal_data_6i                             0x000C
    #define   LSb32BPLocal_data_6i                                0
    #define   LSb16BPLocal_data_6i                                0
    #define       bBPLocal_data_6i                             16
    #define   MSK32BPLocal_data_6i                                0x0000FFFF

    #define     BA_BPLocal_data_7i                             0x000E
    #define     B16BPLocal_data_7i                             0x000E
    #define   LSb32BPLocal_data_7i                                16
    #define   LSb16BPLocal_data_7i                                0
    #define       bBPLocal_data_7i                             16
    #define   MSK32BPLocal_data_7i                                0xFFFF0000

    #define     BA_BPLocal_data_8i                             0x0010
    #define     B16BPLocal_data_8i                             0x0010
    #define   LSb32BPLocal_data_8i                                0
    #define   LSb16BPLocal_data_8i                                0
    #define       bBPLocal_data_8i                             16
    #define   MSK32BPLocal_data_8i                                0x0000FFFF

    #define     BA_BPLocal_data_9i                             0x0012
    #define     B16BPLocal_data_9i                             0x0012
    #define   LSb32BPLocal_data_9i                                16
    #define   LSb16BPLocal_data_9i                                0
    #define       bBPLocal_data_9i                             16
    #define   MSK32BPLocal_data_9i                                0xFFFF0000

    #define     BA_BPLocal_data_10i                            0x0014
    #define     B16BPLocal_data_10i                            0x0014
    #define   LSb32BPLocal_data_10i                               0
    #define   LSb16BPLocal_data_10i                               0
    #define       bBPLocal_data_10i                            16
    #define   MSK32BPLocal_data_10i                               0x0000FFFF

    #define     BA_BPLocal_data_11i                            0x0016
    #define     B16BPLocal_data_11i                            0x0016
    #define   LSb32BPLocal_data_11i                               16
    #define   LSb16BPLocal_data_11i                               0
    #define       bBPLocal_data_11i                            16
    #define   MSK32BPLocal_data_11i                               0xFFFF0000

    #define     BA_BPLocal_data_12i                            0x0018
    #define     B16BPLocal_data_12i                            0x0018
    #define   LSb32BPLocal_data_12i                               0
    #define   LSb16BPLocal_data_12i                               0
    #define       bBPLocal_data_12i                            16
    #define   MSK32BPLocal_data_12i                               0x0000FFFF

    #define     BA_BPLocal_data_13i                            0x001A
    #define     B16BPLocal_data_13i                            0x001A
    #define   LSb32BPLocal_data_13i                               16
    #define   LSb16BPLocal_data_13i                               0
    #define       bBPLocal_data_13i                            16
    #define   MSK32BPLocal_data_13i                               0xFFFF0000

    #define     BA_BPLocal_data_14i                            0x001C
    #define     B16BPLocal_data_14i                            0x001C
    #define   LSb32BPLocal_data_14i                               0
    #define   LSb16BPLocal_data_14i                               0
    #define       bBPLocal_data_14i                            16
    #define   MSK32BPLocal_data_14i                               0x0000FFFF

    #define     BA_BPLocal_data_15i                            0x001E
    #define     B16BPLocal_data_15i                            0x001E
    #define   LSb32BPLocal_data_15i                               16
    #define   LSb16BPLocal_data_15i                               0
    #define       bBPLocal_data_15i                            16
    #define   MSK32BPLocal_data_15i                               0xFFFF0000

    #define     BA_BPLocal_data_16i                            0x0020
    #define     B16BPLocal_data_16i                            0x0020
    #define   LSb32BPLocal_data_16i                               0
    #define   LSb16BPLocal_data_16i                               0
    #define       bBPLocal_data_16i                            16
    #define   MSK32BPLocal_data_16i                               0x0000FFFF

    #define     BA_BPLocal_data_17i                            0x0022
    #define     B16BPLocal_data_17i                            0x0022
    #define   LSb32BPLocal_data_17i                               16
    #define   LSb16BPLocal_data_17i                               0
    #define       bBPLocal_data_17i                            16
    #define   MSK32BPLocal_data_17i                               0xFFFF0000

    #define     BA_BPLocal_data_18i                            0x0024
    #define     B16BPLocal_data_18i                            0x0024
    #define   LSb32BPLocal_data_18i                               0
    #define   LSb16BPLocal_data_18i                               0
    #define       bBPLocal_data_18i                            16
    #define   MSK32BPLocal_data_18i                               0x0000FFFF

    #define     BA_BPLocal_data_19i                            0x0026
    #define     B16BPLocal_data_19i                            0x0026
    #define   LSb32BPLocal_data_19i                               16
    #define   LSb16BPLocal_data_19i                               0
    #define       bBPLocal_data_19i                            16
    #define   MSK32BPLocal_data_19i                               0xFFFF0000

    #define     BA_BPLocal_data_20i                            0x0028
    #define     B16BPLocal_data_20i                            0x0028
    #define   LSb32BPLocal_data_20i                               0
    #define   LSb16BPLocal_data_20i                               0
    #define       bBPLocal_data_20i                            16
    #define   MSK32BPLocal_data_20i                               0x0000FFFF

    #define     BA_BPLocal_data_21i                            0x002A
    #define     B16BPLocal_data_21i                            0x002A
    #define   LSb32BPLocal_data_21i                               16
    #define   LSb16BPLocal_data_21i                               0
    #define       bBPLocal_data_21i                            16
    #define   MSK32BPLocal_data_21i                               0xFFFF0000

    #define     BA_BPLocal_data_22i                            0x002C
    #define     B16BPLocal_data_22i                            0x002C
    #define   LSb32BPLocal_data_22i                               0
    #define   LSb16BPLocal_data_22i                               0
    #define       bBPLocal_data_22i                            16
    #define   MSK32BPLocal_data_22i                               0x0000FFFF

    #define     BA_BPLocal_data_23i                            0x002E
    #define     B16BPLocal_data_23i                            0x002E
    #define   LSb32BPLocal_data_23i                               16
    #define   LSb16BPLocal_data_23i                               0
    #define       bBPLocal_data_23i                            16
    #define   MSK32BPLocal_data_23i                               0xFFFF0000

    #define     BA_BPLocal_data_24i                            0x0030
    #define     B16BPLocal_data_24i                            0x0030
    #define   LSb32BPLocal_data_24i                               0
    #define   LSb16BPLocal_data_24i                               0
    #define       bBPLocal_data_24i                            16
    #define   MSK32BPLocal_data_24i                               0x0000FFFF

    #define     BA_BPLocal_data_25i                            0x0032
    #define     B16BPLocal_data_25i                            0x0032
    #define   LSb32BPLocal_data_25i                               16
    #define   LSb16BPLocal_data_25i                               0
    #define       bBPLocal_data_25i                            16
    #define   MSK32BPLocal_data_25i                               0xFFFF0000

    #define     BA_BPLocal_data_26i                            0x0034
    #define     B16BPLocal_data_26i                            0x0034
    #define   LSb32BPLocal_data_26i                               0
    #define   LSb16BPLocal_data_26i                               0
    #define       bBPLocal_data_26i                            16
    #define   MSK32BPLocal_data_26i                               0x0000FFFF

    #define     BA_BPLocal_data_27i                            0x0036
    #define     B16BPLocal_data_27i                            0x0036
    #define   LSb32BPLocal_data_27i                               16
    #define   LSb16BPLocal_data_27i                               0
    #define       bBPLocal_data_27i                            16
    #define   MSK32BPLocal_data_27i                               0xFFFF0000

    #define     BA_BPLocal_data_28i                            0x0038
    #define     B16BPLocal_data_28i                            0x0038
    #define   LSb32BPLocal_data_28i                               0
    #define   LSb16BPLocal_data_28i                               0
    #define       bBPLocal_data_28i                            16
    #define   MSK32BPLocal_data_28i                               0x0000FFFF

    #define     BA_BPLocal_data_29i                            0x003A
    #define     B16BPLocal_data_29i                            0x003A
    #define   LSb32BPLocal_data_29i                               16
    #define   LSb16BPLocal_data_29i                               0
    #define       bBPLocal_data_29i                            16
    #define   MSK32BPLocal_data_29i                               0xFFFF0000

    #define     BA_BPLocal_data_30i                            0x003C
    #define     B16BPLocal_data_30i                            0x003C
    #define   LSb32BPLocal_data_30i                               0
    #define   LSb16BPLocal_data_30i                               0
    #define       bBPLocal_data_30i                            16
    #define   MSK32BPLocal_data_30i                               0x0000FFFF

    #define     BA_BPLocal_data_31i                            0x003E
    #define     B16BPLocal_data_31i                            0x003E
    #define   LSb32BPLocal_data_31i                               16
    #define   LSb16BPLocal_data_31i                               0
    #define       bBPLocal_data_31i                            16
    #define   MSK32BPLocal_data_31i                               0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_BPLocal {
    ///////////////////////////////////////////////////////////
    #define   GET32BPLocal_data_0i(r32)                        _BFGET_(r32,15, 0)
    #define   SET32BPLocal_data_0i(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16BPLocal_data_0i(r16)                        _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_0i(r16,v)                      _BFSET_(r16,15, 0,v)

    #define   GET32BPLocal_data_1i(r32)                        _BFGET_(r32,31,16)
    #define   SET32BPLocal_data_1i(r32,v)                      _BFSET_(r32,31,16,v)
    #define   GET16BPLocal_data_1i(r16)                        _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_1i(r16,v)                      _BFSET_(r16,15, 0,v)

            UNSG32 u_data_0i                                   : 16;
            UNSG32 u_data_1i                                   : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32BPLocal_data_2i(r32)                        _BFGET_(r32,15, 0)
    #define   SET32BPLocal_data_2i(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16BPLocal_data_2i(r16)                        _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_2i(r16,v)                      _BFSET_(r16,15, 0,v)

    #define   GET32BPLocal_data_3i(r32)                        _BFGET_(r32,31,16)
    #define   SET32BPLocal_data_3i(r32,v)                      _BFSET_(r32,31,16,v)
    #define   GET16BPLocal_data_3i(r16)                        _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_3i(r16,v)                      _BFSET_(r16,15, 0,v)

            UNSG32 u_data_2i                                   : 16;
            UNSG32 u_data_3i                                   : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32BPLocal_data_4i(r32)                        _BFGET_(r32,15, 0)
    #define   SET32BPLocal_data_4i(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16BPLocal_data_4i(r16)                        _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_4i(r16,v)                      _BFSET_(r16,15, 0,v)

    #define   GET32BPLocal_data_5i(r32)                        _BFGET_(r32,31,16)
    #define   SET32BPLocal_data_5i(r32,v)                      _BFSET_(r32,31,16,v)
    #define   GET16BPLocal_data_5i(r16)                        _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_5i(r16,v)                      _BFSET_(r16,15, 0,v)

            UNSG32 u_data_4i                                   : 16;
            UNSG32 u_data_5i                                   : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32BPLocal_data_6i(r32)                        _BFGET_(r32,15, 0)
    #define   SET32BPLocal_data_6i(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16BPLocal_data_6i(r16)                        _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_6i(r16,v)                      _BFSET_(r16,15, 0,v)

    #define   GET32BPLocal_data_7i(r32)                        _BFGET_(r32,31,16)
    #define   SET32BPLocal_data_7i(r32,v)                      _BFSET_(r32,31,16,v)
    #define   GET16BPLocal_data_7i(r16)                        _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_7i(r16,v)                      _BFSET_(r16,15, 0,v)

            UNSG32 u_data_6i                                   : 16;
            UNSG32 u_data_7i                                   : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32BPLocal_data_8i(r32)                        _BFGET_(r32,15, 0)
    #define   SET32BPLocal_data_8i(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16BPLocal_data_8i(r16)                        _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_8i(r16,v)                      _BFSET_(r16,15, 0,v)

    #define   GET32BPLocal_data_9i(r32)                        _BFGET_(r32,31,16)
    #define   SET32BPLocal_data_9i(r32,v)                      _BFSET_(r32,31,16,v)
    #define   GET16BPLocal_data_9i(r16)                        _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_9i(r16,v)                      _BFSET_(r16,15, 0,v)

            UNSG32 u_data_8i                                   : 16;
            UNSG32 u_data_9i                                   : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32BPLocal_data_10i(r32)                       _BFGET_(r32,15, 0)
    #define   SET32BPLocal_data_10i(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16BPLocal_data_10i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_10i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32BPLocal_data_11i(r32)                       _BFGET_(r32,31,16)
    #define   SET32BPLocal_data_11i(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16BPLocal_data_11i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_11i(r16,v)                     _BFSET_(r16,15, 0,v)

            UNSG32 u_data_10i                                  : 16;
            UNSG32 u_data_11i                                  : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32BPLocal_data_12i(r32)                       _BFGET_(r32,15, 0)
    #define   SET32BPLocal_data_12i(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16BPLocal_data_12i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_12i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32BPLocal_data_13i(r32)                       _BFGET_(r32,31,16)
    #define   SET32BPLocal_data_13i(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16BPLocal_data_13i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_13i(r16,v)                     _BFSET_(r16,15, 0,v)

            UNSG32 u_data_12i                                  : 16;
            UNSG32 u_data_13i                                  : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32BPLocal_data_14i(r32)                       _BFGET_(r32,15, 0)
    #define   SET32BPLocal_data_14i(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16BPLocal_data_14i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_14i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32BPLocal_data_15i(r32)                       _BFGET_(r32,31,16)
    #define   SET32BPLocal_data_15i(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16BPLocal_data_15i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_15i(r16,v)                     _BFSET_(r16,15, 0,v)

            UNSG32 u_data_14i                                  : 16;
            UNSG32 u_data_15i                                  : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32BPLocal_data_16i(r32)                       _BFGET_(r32,15, 0)
    #define   SET32BPLocal_data_16i(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16BPLocal_data_16i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_16i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32BPLocal_data_17i(r32)                       _BFGET_(r32,31,16)
    #define   SET32BPLocal_data_17i(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16BPLocal_data_17i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_17i(r16,v)                     _BFSET_(r16,15, 0,v)

            UNSG32 u_data_16i                                  : 16;
            UNSG32 u_data_17i                                  : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32BPLocal_data_18i(r32)                       _BFGET_(r32,15, 0)
    #define   SET32BPLocal_data_18i(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16BPLocal_data_18i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_18i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32BPLocal_data_19i(r32)                       _BFGET_(r32,31,16)
    #define   SET32BPLocal_data_19i(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16BPLocal_data_19i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_19i(r16,v)                     _BFSET_(r16,15, 0,v)

            UNSG32 u_data_18i                                  : 16;
            UNSG32 u_data_19i                                  : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32BPLocal_data_20i(r32)                       _BFGET_(r32,15, 0)
    #define   SET32BPLocal_data_20i(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16BPLocal_data_20i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_20i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32BPLocal_data_21i(r32)                       _BFGET_(r32,31,16)
    #define   SET32BPLocal_data_21i(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16BPLocal_data_21i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_21i(r16,v)                     _BFSET_(r16,15, 0,v)

            UNSG32 u_data_20i                                  : 16;
            UNSG32 u_data_21i                                  : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32BPLocal_data_22i(r32)                       _BFGET_(r32,15, 0)
    #define   SET32BPLocal_data_22i(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16BPLocal_data_22i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_22i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32BPLocal_data_23i(r32)                       _BFGET_(r32,31,16)
    #define   SET32BPLocal_data_23i(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16BPLocal_data_23i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_23i(r16,v)                     _BFSET_(r16,15, 0,v)

            UNSG32 u_data_22i                                  : 16;
            UNSG32 u_data_23i                                  : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32BPLocal_data_24i(r32)                       _BFGET_(r32,15, 0)
    #define   SET32BPLocal_data_24i(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16BPLocal_data_24i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_24i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32BPLocal_data_25i(r32)                       _BFGET_(r32,31,16)
    #define   SET32BPLocal_data_25i(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16BPLocal_data_25i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_25i(r16,v)                     _BFSET_(r16,15, 0,v)

            UNSG32 u_data_24i                                  : 16;
            UNSG32 u_data_25i                                  : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32BPLocal_data_26i(r32)                       _BFGET_(r32,15, 0)
    #define   SET32BPLocal_data_26i(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16BPLocal_data_26i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_26i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32BPLocal_data_27i(r32)                       _BFGET_(r32,31,16)
    #define   SET32BPLocal_data_27i(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16BPLocal_data_27i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_27i(r16,v)                     _BFSET_(r16,15, 0,v)

            UNSG32 u_data_26i                                  : 16;
            UNSG32 u_data_27i                                  : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32BPLocal_data_28i(r32)                       _BFGET_(r32,15, 0)
    #define   SET32BPLocal_data_28i(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16BPLocal_data_28i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_28i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32BPLocal_data_29i(r32)                       _BFGET_(r32,31,16)
    #define   SET32BPLocal_data_29i(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16BPLocal_data_29i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_29i(r16,v)                     _BFSET_(r16,15, 0,v)

            UNSG32 u_data_28i                                  : 16;
            UNSG32 u_data_29i                                  : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32BPLocal_data_30i(r32)                       _BFGET_(r32,15, 0)
    #define   SET32BPLocal_data_30i(r32,v)                     _BFSET_(r32,15, 0,v)
    #define   GET16BPLocal_data_30i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_30i(r16,v)                     _BFSET_(r16,15, 0,v)

    #define   GET32BPLocal_data_31i(r32)                       _BFGET_(r32,31,16)
    #define   SET32BPLocal_data_31i(r32,v)                     _BFSET_(r32,31,16,v)
    #define   GET16BPLocal_data_31i(r16)                       _BFGET_(r16,15, 0)
    #define   SET16BPLocal_data_31i(r16,v)                     _BFSET_(r16,15, 0,v)

            UNSG32 u_data_30i                                  : 16;
            UNSG32 u_data_31i                                  : 16;
    ///////////////////////////////////////////////////////////
    } SIE_BPLocal;

    ///////////////////////////////////////////////////////////
     SIGN32 BPLocal_drvrd(SIE_BPLocal *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 BPLocal_drvwr(SIE_BPLocal *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void BPLocal_reset(SIE_BPLocal *p);
     SIGN32 BPLocal_cmp  (SIE_BPLocal *p, SIE_BPLocal *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define BPLocal_check(p,pie,pfx,hLOG) BPLocal_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define BPLocal_print(p,    pfx,hLOG) BPLocal_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: BPLocal
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE h264bpHalData                            (4,4)
///     # # ----------------------------------------------------------
///               : stackPSER          0x2000
///               : stackSYNP          0x3000
///     @ 0x00000                      (P)
///     # 0x00000 mbCtxQ               
///               $MBCTXQ              mbCtxQ            REG          
///                                    ###
///                                    * 8 bank MB context buffer
///                                    * Including history context in & out
///                                    ###
///     @ 0x00A10                      (P)
///     # 0x00A10 mbpropQ              
///               $MBPROP              mbpropQ           REG       [4]
///                                    ###
///                                    * MB properties to syntax processor
///                                    * Also know as P3MsgQ:
///                                    * HBO FIFO (m2h):
///                                    * Message queue to vpro.hbo to vCache
///                                    ###
///     @ 0x00B10                      (P)
///     # 0x00B10 fmoaddr              
///               $FMOAddr             fmoaddr           REG          
///                                    ###
///                                    * DDR address for fmo msg
///                                    ###
///     @ 0x00B18                      (P)
///     # 0x00B18 leftCtx              
///               $BPCTX               leftCtx           REG          
///                                    ###
///                                    * Ctx for A MB
///                                    ###
///     @ 0x00B20                      (P)
///     # 0x00B20 tcSN                 
///               $LUT64b              tcSN              REG          
///                                    ###
///                                    * 8x8blk tc counter in fmo msg
///                                    ###
///     @ 0x00B28                      (P)
///     # 0x00B28 localMB              
///               $MBMsg               localMB           REG          
///                                    ###
///                                    * local MBMSG for Ping-Pang
///                                    ###
///     @ 0x00BC8                      (P)
///     # 0x00BC8 bpLocal              
///               $BPLocal             bpLocal           REG          
///                                    ###
///                                    * Extra local space
///                                    ###
///     @ 0x00C08                      (W-)
///     #         # Stuffing bytes...
///               %% 64
///     @ 0x00C10                      (P)
///     # 0x00C10 ctxPSER              
///               $BPCtxPSER           ctxPSER           REG          
///                                    ###
///                                    * Context of stream parser
///                                    ###
///     @ 0x00C34                      (W-)
///     #         # Stuffing bytes...
///               %% 96
///     @ 0x00C40                      (P)
///     # 0x00C40 ctxSYNP              
///               $BPCtxSYNP           ctxSYNP           REG          
///                                    ###
///                                    * Context of syntax processor
///                                    ###
///     @ 0x00C74                      (W-)
///     #         # Stuffing bytes...
///               %% 32
///     @ 0x00C78                      (P)
///     # 0x00C78 tagDS                
///               $LUT64b              tagDS             REG          
///                                    ###
///                                    * Receiving latest retired tag from data streamer
///                                    ###
///     @ 0x00C80                      (P)
///     # 0x00C80 DSMsgQ               
///               $LUT64b              DSMsgQ            REG      [16]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to data streamer
///                                    ###
///     @ 0x00D00                      (P)
///     # 0x00D00 localTCQ             
///               $LUT64b              localTCQ          REG          
///                                    ###
///                                    * 768 = 128 * 6 for one MB's TC data Ping_pang
///                                    ###
///     @ 0x00D08                      (W-)
///     #         # Stuffing bytes...
///               %% 6080
///     @ 0x01000                      (P)
///     # 0x01000 P3TCQ                
///               $LUT64b              P3TCQ             REG     [128]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * TC queue to vpro.hbo to PCube
///                                    ###
///     @ 0x01400                      (P)
///     # 0x01400 fmomsg0              
///               $FMOMBMsg            fmomsg0           REG          
///                                    ###
///                                    * FMO parser output, including MBPROP/FCTX/TC, size ~1K bytes
///                                    ###
///     @ 0x017A0                      (P)
///     # 0x017A0 cn2cbp               
///               $CBPLUT              cn2cbp            REG          
///                                    ###
///                                    * CBP lookup table used in parser.
///                                    ###
///     @ 0x01800                      (P)
///     # 0x01800 DSMsgQ1              
///               $LUT64b              DSMsgQ1           REG      [16]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to data streamer
///                                    ###
///     @ 0x01880                      (P)
///     # 0x01880 tagDS1               
///               $LUT64b              tagDS1            REG          
///                                    ###
///                                    * Receiving latest retired tag from data streamer
///                                    ###
///     @ 0x01888                      (P)
///     # 0x01888 sgrpMAP              
///               $LUT64b              sgrpMAP           REG     [128]
///                                    ###
///                                    * Bit map for slice groups in FMO
///                                    ###
///     @ 0x01C88                      (P)
///     # 0x01C88 t2prop8x8            
///               $LUT64b              t2prop8x8         REG          
///     @ 0x01C90                      (P)
///     # 0x01C90 t2prop               
///               $LUT64b              t2prop            REG       [8]
///     @ 0x01CD0                      (P)
///     # 0x01CD0 InvScan              
///               $BPInvScanBLK        InvScan           REG          
///     @ 0x01DB8                      (P)
///     # 0x01DB8 QP2CQP               
///               $CQPLUT              QP2CQP            REG          
///     @ 0x01DF8                      (W-)
///     #         # Stuffing bytes...
///               %% 1088
///     @ 0x01E80                      (P)
///     # 0x01E80 localPSER            
///               $VSLocal             localPSER         REG          
///                                    ###
///                                    * Local data area of stream parser
///                                    ###
///     @ 0x01F00                      (W-)
///     #         # Stuffing bytes...
///               %% 2048
///     @ 0x02000                      (P)
///     # 0x02000 VCMsgQ               
///               $LUT64b              VCMsgQ            REG     [128]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to vpro.hbo to PCube
///                                    ###
///     @ 0x02400                      (P)
///     # 0x02400 P3FopQ               
///               $LUT64b              P3FopQ            REG      [64]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * FOP queue to vpro.hbo to PCube
///                                    ###
///     @ 0x02600                      (P)
///     # 0x02600 NeighbQP             
///               $LUT64b              NeighbQP          REG      [32]
///                                    ###
///                                    * One row of {Qpy: 8bits, Qpu: 8bits}pair, with the last one indicates the left MB's QP
///                                    ###
///     @ 0x02700                      (P)
///     # 0x02700 datBuf               
///               $LUT64b              datBuf            REG     [112]
///     @ 0x02A80                      (P)
///     # 0x02A80 mbF0Msg              
///               $LUT64b              mbF0Msg           REG       [4]
///                                    ###
///                                    * 32 bytes' BPMBPROP for Figo0
///                                    ###
///     @ 0x02AA0                      (P)
///     # 0x02AA0 vcmDesc              
///               $VCMLUT              vcmDesc           REG          
///     @ 0x02B20                      (P)
///     # 0x02B20 fopCmdPOOL           
///               $FOPCmdPOOL          fopCmdPOOL        REG          
///     @ 0x02C40                      (P)
///     # 0x02C40 fopFuncTab           
///               $FOPFuncTab          fopFuncTab        REG          
///     @ 0x02C60                      (P)
///     # 0x02C60 fopCmdIdx            
///               $BPFOPCmdIDX         fopCmdIdx         REG          
///     @ 0x02C80                      (P)
///     # 0x02C80 rIDX2BID             
///               $IDX2BID             rIDX2BID          REG          
///     @ 0x02D40                      (W-)
///     #         # Stuffing bytes...
///               %% 2560
///     @ 0x02E80                      (P)
///     # 0x02E80 localSYNP            
///               $VSLocal             localSYNP         REG          
///                                    ###
///                                    * Local data area of syntax processor
///                                    * End of h264bpHalData
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:   12032B, bits:   84146b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_h264bpHalData
#define h_h264bpHalData (){}

    #define        h264bpHalData_stackPSER                     0x2000
    #define        h264bpHalData_stackSYNP                     0x3000
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_mbCtxQ                        0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_mbpropQ                       0x0A10
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_fmoaddr                       0x0B10
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_leftCtx                       0x0B18
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_tcSN                          0x0B20
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_localMB                       0x0B28
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_bpLocal                       0x0BC8
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_ctxPSER                       0x0C10
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_ctxSYNP                       0x0C40
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_tagDS                         0x0C78
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_DSMsgQ                        0x0C80
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_localTCQ                      0x0D00
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_P3TCQ                         0x1000
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_fmomsg0                       0x1400
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_cn2cbp                        0x17A0
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_DSMsgQ1                       0x1800
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_tagDS1                        0x1880
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_sgrpMAP                       0x1888
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_t2prop8x8                     0x1C88
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_t2prop                        0x1C90
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_InvScan                       0x1CD0
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_QP2CQP                        0x1DB8
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_localPSER                     0x1E80
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_VCMsgQ                        0x2000
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_P3FopQ                        0x2400
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_NeighbQP                      0x2600
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_datBuf                        0x2700
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_mbF0Msg                       0x2A80
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_vcmDesc                       0x2AA0
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_fopCmdPOOL                    0x2B20
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_fopFuncTab                    0x2C40
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_fopCmdIdx                     0x2C60
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_rIDX2BID                      0x2C80
    ///////////////////////////////////////////////////////////
    #define     RA_h264bpHalData_localSYNP                     0x2E80
    ///////////////////////////////////////////////////////////

    typedef struct SIE_h264bpHalData {
    ///////////////////////////////////////////////////////////
              SIE_MBCTXQ                                       ie_mbCtxQ;
    ///////////////////////////////////////////////////////////
              SIE_MBPROP                                       ie_mbpropQ[4];
    ///////////////////////////////////////////////////////////
              SIE_FMOAddr                                      ie_fmoaddr;
    ///////////////////////////////////////////////////////////
              SIE_BPCTX                                        ie_leftCtx;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_tcSN;
    ///////////////////////////////////////////////////////////
              SIE_MBMsg                                        ie_localMB;
    ///////////////////////////////////////////////////////////
              SIE_BPLocal                                      ie_bpLocal;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC08                                    [8];
    ///////////////////////////////////////////////////////////
              SIE_BPCtxPSER                                    ie_ctxPSER;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC34                                    [12];
    ///////////////////////////////////////////////////////////
              SIE_BPCtxSYNP                                    ie_ctxSYNP;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC74                                    [4];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_tagDS;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DSMsgQ[16];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_localTCQ;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxD08                                    [760];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_P3TCQ[128];
    ///////////////////////////////////////////////////////////
              SIE_FMOMBMsg                                     ie_fmomsg0;
    ///////////////////////////////////////////////////////////
              SIE_CBPLUT                                       ie_cn2cbp;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DSMsgQ1[16];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_tagDS1;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_sgrpMAP[128];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_t2prop8x8;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_t2prop[8];
    ///////////////////////////////////////////////////////////
              SIE_BPInvScanBLK                                 ie_InvScan;
    ///////////////////////////////////////////////////////////
              SIE_CQPLUT                                       ie_QP2CQP;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx1DF8                                   [136];
    ///////////////////////////////////////////////////////////
              SIE_VSLocal                                      ie_localPSER;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx1F00                                   [256];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_VCMsgQ[128];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_P3FopQ[64];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_NeighbQP[32];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_datBuf[112];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_mbF0Msg[4];
    ///////////////////////////////////////////////////////////
              SIE_VCMLUT                                       ie_vcmDesc;
    ///////////////////////////////////////////////////////////
              SIE_FOPCmdPOOL                                   ie_fopCmdPOOL;
    ///////////////////////////////////////////////////////////
              SIE_FOPFuncTab                                   ie_fopFuncTab;
    ///////////////////////////////////////////////////////////
              SIE_BPFOPCmdIDX                                  ie_fopCmdIdx;
    ///////////////////////////////////////////////////////////
              SIE_IDX2BID                                      ie_rIDX2BID;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx2D40                                   [320];
    ///////////////////////////////////////////////////////////
              SIE_VSLocal                                      ie_localSYNP;
    ///////////////////////////////////////////////////////////
    } SIE_h264bpHalData;

    ///////////////////////////////////////////////////////////
     SIGN32 h264bpHalData_drvrd(SIE_h264bpHalData *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 h264bpHalData_drvwr(SIE_h264bpHalData *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void h264bpHalData_reset(SIE_h264bpHalData *p);
     SIGN32 h264bpHalData_cmp  (SIE_h264bpHalData *p, SIE_h264bpHalData *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define h264bpHalData_check(p,pie,pfx,hLOG) h264bpHalData_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define h264bpHalData_print(p,    pfx,hLOG) h264bpHalData_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: h264bpHalData
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE mpgData                                  (4,4)
///     # # ----------------------------------------------------------
///               : stackPSER          0x2000
///               : stackSYNP          0x3000
///     @ 0x00000                      (P)
///     # 0x00000 mbCtxQ               
///               $MBCTXQ              mbCtxQ            REG          
///                                    ###
///                                    * 8 bank MB context buffer
///                                    * Including history context in & out
///                                    ###
///     @ 0x00A10                      (P)
///     # 0x00A10 mbpropQ              
///               $MBPROP              mbpropQ           REG       [8]
///                                    ###
///                                    * MB properties to syntax processor
///                                    * Also know as P3MsgQ:
///                                    * HBO FIFO (m2h):
///                                    * Message queue to vpro.hbo to vCache
///                                    ###
///     @ 0x00C10                      (P)
///     # 0x00C10 ctxPSER              
///               $CtxPSER             ctxPSER           REG          
///                                    ###
///                                    * Context of stream parser
///                                    ###
///     @ 0x00C34                      (W-)
///     #         # Stuffing bytes...
///               %% 96
///     @ 0x00C40                      (P)
///     # 0x00C40 ctxSYNP              
///               $CtxSYNP             ctxSYNP           REG          
///                                    ###
///                                    * Context of syntax processor
///                                    ###
///     @ 0x00C70                      (W-)
///     #         # Stuffing bytes...
///               %% 64
///     @ 0x00C78                      (P)
///     # 0x00C78 tagDS                
///               $LUT64b              tagDS             REG          
///                                    ###
///                                    * Receiving latest retired tag from data streamer
///                                    ###
///     @ 0x00C80                      (P)
///     # 0x00C80 DSMsgQ               
///               $LUT64b              DSMsgQ            REG      [16]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to data streamer
///                                    ###
///     @ 0x00D00                      (P)
///     # 0x00D00 tCtxOut              
///               $TCTX                tCtxOut           REG       [2]
///                                    ###
///                                    * Temporal contexts (data streamer) output
///                                    ###
///     @ 0x00D40                      (P)
///     # 0x00D40 tCtxIn               
///               $TCTX                tCtxIn            REG       [2]
///                                    ###
///                                    * Temporal contexts (data streamer) input
///                                    ###
///     @ 0x00D80                      (P)
///     # 0x00D80 ctxMPGx              
///               $CtxMPGx             ctxMPGx           REG          
///                                    ###
///                                    * Context of MPEGx
///                                    ###
///     @ 0x00D90                      (P)
///     # 0x00D90 localPSER            
///               $VSLocal             localPSER         REG          
///                                    ###
///                                    * Local data area of stream parser
///                                    ###
///     @ 0x00E10                      (P)
///     # 0x00E10 localSYNP            
///               $VSLocal             localSYNP         REG          
///                                    ###
///                                    * Local data area of syntax processor
///                                    ###
///     @ 0x00E90                      (P)
///               %unsigned 32 fop_param                 
///                                    ###
///                                    * Fop param include Alpha, Beta, C0
///                                    ###
///     @ 0x00E94                      (P)
///     # 0x00E94 alpha_beta_C_tab     
///               $LUT64b              alpha_beta_C_tab  REG      [32]
///                                    ###
///                                    * Fop table include Alpha, Beta, C0
///                                    ###
///     @ 0x00F94                      (W-)
///     #         # Stuffing bytes...
///               %% 864
///     @ 0x01000                      (P)
///     # 0x01000 P3TCQ                
///               $LUT64b              P3TCQ             REG     [128]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * TC queue to vpro.hbo to PCube
///                                    ###
///     @ 0x01400                      (P)
///     # 0x01400 pairDesc             
///               $PairRow             pairDesc          REG          
///                                    ###
///                                    * Non-H264 may only require a sub-set?
///                                    ###
///     @ 0x01920                      (P)
///     # 0x01920 t2prop               
///               $T2PROP              t2prop            REG          
///     @ 0x01988                      (P)
///     # 0x01988 InvScan              
///               $InvScanMPG          InvScan           REG          
///     @ 0x01B08                      (P)
///     # 0x01B08 quant                
///               $QuantMatrix         quant             REG          
///     @ 0x01B88                      (P)
///     # 0x01B88 scale                
///               $ScaleLUT            scale             REG          
///     @ 0x01BA8                      (W-)
///     #         # Stuffing bytes...
///               %% 8896
///     @ 0x02000                      (P)
///     # 0x02000 VCMsgQ               
///               $LUT64b              VCMsgQ            REG      [64]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to vpro.hbo to PCube
///                                    ###
///     @ 0x02200                      (W-)
///     #         # Stuffing bytes...
///               %% 4096
///     @ 0x02400                      (P)
///     # 0x02400 P3FopQ               
///               $LUT64b              P3FopQ            REG      [64]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * FOP queue to vpro.hbo to PCube
///                                    * End of mpgData
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    9728B, bits:   63304b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_mpgData
#define h_mpgData (){}

    #define        mpgData_stackPSER                           0x2000
    #define        mpgData_stackSYNP                           0x3000
    ///////////////////////////////////////////////////////////
    #define     RA_mpgData_mbCtxQ                              0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_mpgData_mbpropQ                             0x0A10
    ///////////////////////////////////////////////////////////
    #define     RA_mpgData_ctxPSER                             0x0C10
    ///////////////////////////////////////////////////////////
    #define     RA_mpgData_ctxSYNP                             0x0C40
    ///////////////////////////////////////////////////////////
    #define     RA_mpgData_tagDS                               0x0C78
    ///////////////////////////////////////////////////////////
    #define     RA_mpgData_DSMsgQ                              0x0C80
    ///////////////////////////////////////////////////////////
    #define     RA_mpgData_tCtxOut                             0x0D00
    ///////////////////////////////////////////////////////////
    #define     RA_mpgData_tCtxIn                              0x0D40
    ///////////////////////////////////////////////////////////
    #define     RA_mpgData_ctxMPGx                             0x0D80
    ///////////////////////////////////////////////////////////
    #define     RA_mpgData_localPSER                           0x0D90
    ///////////////////////////////////////////////////////////
    #define     RA_mpgData_localSYNP                           0x0E10
    ///////////////////////////////////////////////////////////

    #define     BA_mpgData_fop_param                           0x0E90
    #define     B16mpgData_fop_param                           0x0E90
    #define   LSb32mpgData_fop_param                              0
    #define   LSb16mpgData_fop_param                              0
    #define       bmpgData_fop_param                           32
    #define   MSK32mpgData_fop_param                              0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_mpgData_alpha_beta_C_tab                    0x0E94
    ///////////////////////////////////////////////////////////
    #define     RA_mpgData_P3TCQ                               0x1000
    ///////////////////////////////////////////////////////////
    #define     RA_mpgData_pairDesc                            0x1400
    ///////////////////////////////////////////////////////////
    #define     RA_mpgData_t2prop                              0x1920
    ///////////////////////////////////////////////////////////
    #define     RA_mpgData_InvScan                             0x1988
    ///////////////////////////////////////////////////////////
    #define     RA_mpgData_quant                               0x1B08
    ///////////////////////////////////////////////////////////
    #define     RA_mpgData_scale                               0x1B88
    ///////////////////////////////////////////////////////////
    #define     RA_mpgData_VCMsgQ                              0x2000
    ///////////////////////////////////////////////////////////
    #define     RA_mpgData_P3FopQ                              0x2400
    ///////////////////////////////////////////////////////////

    typedef struct SIE_mpgData {
    ///////////////////////////////////////////////////////////
              SIE_MBCTXQ                                       ie_mbCtxQ;
    ///////////////////////////////////////////////////////////
              SIE_MBPROP                                       ie_mbpropQ[8];
    ///////////////////////////////////////////////////////////
              SIE_CtxPSER                                      ie_ctxPSER;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC34                                    [12];
    ///////////////////////////////////////////////////////////
              SIE_CtxSYNP                                      ie_ctxSYNP;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC70                                    [8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_tagDS;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DSMsgQ[16];
    ///////////////////////////////////////////////////////////
              SIE_TCTX                                         ie_tCtxOut[2];
    ///////////////////////////////////////////////////////////
              SIE_TCTX                                         ie_tCtxIn[2];
    ///////////////////////////////////////////////////////////
              SIE_CtxMPGx                                      ie_ctxMPGx;
    ///////////////////////////////////////////////////////////
              SIE_VSLocal                                      ie_localPSER;
    ///////////////////////////////////////////////////////////
              SIE_VSLocal                                      ie_localSYNP;
    ///////////////////////////////////////////////////////////
    #define   GET32mpgData_fop_param(r32)                      _BFGET_(r32,31, 0)
    #define   SET32mpgData_fop_param(r32,v)                    _BFSET_(r32,31, 0,v)

            UNSG32 u_fop_param                                 : 32;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_alpha_beta_C_tab[32];
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxF94                                    [108];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_P3TCQ[128];
    ///////////////////////////////////////////////////////////
              SIE_PairRow                                      ie_pairDesc;
    ///////////////////////////////////////////////////////////
              SIE_T2PROP                                       ie_t2prop;
    ///////////////////////////////////////////////////////////
              SIE_InvScanMPG                                   ie_InvScan;
    ///////////////////////////////////////////////////////////
              SIE_QuantMatrix                                  ie_quant;
    ///////////////////////////////////////////////////////////
              SIE_ScaleLUT                                     ie_scale;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx1BA8                                   [1112];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_VCMsgQ[64];
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx2200                                   [512];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_P3FopQ[64];
    ///////////////////////////////////////////////////////////
    } SIE_mpgData;

    ///////////////////////////////////////////////////////////
     SIGN32 mpgData_drvrd(SIE_mpgData *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 mpgData_drvwr(SIE_mpgData *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void mpgData_reset(SIE_mpgData *p);
     SIGN32 mpgData_cmp  (SIE_mpgData *p, SIE_mpgData *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define mpgData_check(p,pie,pfx,hLOG) mpgData_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define mpgData_print(p,    pfx,hLOG) mpgData_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: mpgData
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vc1HalData                               (4,4)
///     # # ----------------------------------------------------------
///               : stackPSER          0x2000
///               : stackSYNP          0x3000
///     @ 0x00000                      (P)
///     # 0x00000 mbCtxQ               
///               $MBCTXQ              mbCtxQ            REG          
///                                    ###
///                                    * 8 bank MB context buffer
///                                    * Including history context in & out
///                                    ###
///     @ 0x00A10                      (P)
///     # 0x00A10 mbpropQ              
///               $MBPROP              mbpropQ           REG       [8]
///                                    ###
///                                    * MB properties to syntax processor
///                                    * Also know as P3MsgQ:
///                                    * HBO FIFO (m2h):
///                                    * Message queue to vpro.hbo to vCache
///                                    ###
///     @ 0x00C10                      (P)
///     # 0x00C10 ctxPSER              
///               $CtxPSER             ctxPSER           REG          
///                                    ###
///                                    * Context of stream parser
///                                    ###
///     @ 0x00C34                      (W-)
///     #         # Stuffing bytes...
///               %% 96
///     @ 0x00C40                      (P)
///     # 0x00C40 ctxSYNP              
///               $CtxSYNP             ctxSYNP           REG          
///                                    ###
///                                    * Context of syntax processor
///                                    ###
///     @ 0x00C70                      (W-)
///     #         # Stuffing bytes...
///               %% 64
///     @ 0x00C78                      (P)
///     # 0x00C78 tagDS                
///               $LUT64b              tagDS             REG          
///                                    ###
///                                    * Receiving latest retired tag from data streamer
///                                    ###
///     @ 0x00C80                      (P)
///     # 0x00C80 DSMsgQ               
///               $LUT64b              DSMsgQ            REG      [16]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to data streamer
///                                    ###
///     @ 0x00D00                      (P)
///     # 0x00D00 tCtxOut              
///               $TCTX                tCtxOut           REG       [2]
///                                    ###
///                                    * Temporal contexts (data streamer) output
///                                    ###
///     @ 0x00D40                      (P)
///     # 0x00D40 tCtxIn               
///               $TCTX                tCtxIn            REG       [2]
///                                    ###
///                                    * Temporal contexts (data streamer) input
///                                    ###
///     @ 0x00D80                      (P)
///     # 0x00D80 ctxMPGx              
///               $CtxMPGx             ctxMPGx           REG          
///                                    ###
///                                    * Common context of MPEGx and vc1
///                                    ###
///     @ 0x00D90                      (P)
///     # 0x00D90 localPSER            
///               $VSLocal             localPSER         REG          
///                                    ###
///                                    * Local data area of stream parser
///                                    ###
///     @ 0x00E10                      (P)
///     # 0x00E10 localSYNP            
///               $VSLocal             localSYNP         REG          
///                                    ###
///                                    * Local data area of syntax processor
///                                    ###
///     @ 0x00E90                      (W-)
///     #         # Stuffing bytes...
///               %% 2944
///     @ 0x01000                      (P)
///     # 0x01000 P3TCQ                
///               $LUT64b              P3TCQ             REG     [128]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * TC queue to vpro.hbo to PCube
///                                    ###
///     @ 0x01400                      (P)
///     # 0x01400 bpfld                
///               $BitPlane            bpfld             REG       [2]
///                                    ###
///                                    * For I/BI:                          ACPRED
///                                    * For P :                            SKIPMB, MVTYPEMB
///                                    * For B field:                     FORWADMB
///                                    * For B progressive:         DIRECTMB, SKIPMB
///                                    * For B interlaced frame: SKIPMB, DIRECTMB
///                                    ###
///     @ 0x01C00                      (P)
///     # 0x01C00 InvScan              
///               $InvScanMPG          InvScan           REG          
///     @ 0x01D80                      (P)
///     # 0x01D80 mvdsize              
///               $MVDSize             mvdsize           REG          
///     @ 0x01D90                      (P)
///     # 0x01D90 mvdoffset            
///               $MVDOffset           mvdoffset         REG          
///     @ 0x01D98                      (P)
///     # 0x01D98 mvdoffset2           
///               $MVDOffset           mvdoffset2        REG          
///     @ 0x01DA0                      (P)
///     # 0x01DA0 modtab               
///               $ModTable            modtab            REG          
///     @ 0x01E20                      (P)
///     # 0x01E20 nIntraLut            
///               $NIntraCtx           nIntraLut         REG       [6]
///     @ 0x01E80                      (W-)
///     #         # Stuffing bytes...
///               %% 3072
///     @ 0x02000                      (P)
///     # 0x02000 VCMsgQ               
///               $LUT64b              VCMsgQ            REG     [128]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to vpro.hbo to PCube
///                                    ###
///     @ 0x02400                      (P)
///     # 0x02400 P3FopQ               
///               $LUT64b              P3FopQ            REG      [64]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * FOP queue to vpro.hbo to PCube
///                                    ###
///     @ 0x02600                      (P)
///     # 0x02600 bplanes              
///               $BitPlane            bplanes           REG       [2]
///                                    ###
///                                    * VC-1 bit planes:
///                                    * For I/BI picture: FIELDTX, OVERFLAGS
///                                    * End of vc1HalData
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:   11776B, bits:   87996b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vc1HalData
#define h_vc1HalData (){}

    #define        vc1HalData_stackPSER                        0x2000
    #define        vc1HalData_stackSYNP                        0x3000
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_mbCtxQ                           0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_mbpropQ                          0x0A10
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_ctxPSER                          0x0C10
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_ctxSYNP                          0x0C40
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_tagDS                            0x0C78
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_DSMsgQ                           0x0C80
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_tCtxOut                          0x0D00
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_tCtxIn                           0x0D40
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_ctxMPGx                          0x0D80
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_localPSER                        0x0D90
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_localSYNP                        0x0E10
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_P3TCQ                            0x1000
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_bpfld                            0x1400
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_InvScan                          0x1C00
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_mvdsize                          0x1D80
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_mvdoffset                        0x1D90
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_mvdoffset2                       0x1D98
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_modtab                           0x1DA0
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_nIntraLut                        0x1E20
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_VCMsgQ                           0x2000
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_P3FopQ                           0x2400
    ///////////////////////////////////////////////////////////
    #define     RA_vc1HalData_bplanes                          0x2600
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vc1HalData {
    ///////////////////////////////////////////////////////////
              SIE_MBCTXQ                                       ie_mbCtxQ;
    ///////////////////////////////////////////////////////////
              SIE_MBPROP                                       ie_mbpropQ[8];
    ///////////////////////////////////////////////////////////
              SIE_CtxPSER                                      ie_ctxPSER;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC34                                    [12];
    ///////////////////////////////////////////////////////////
              SIE_CtxSYNP                                      ie_ctxSYNP;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC70                                    [8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_tagDS;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DSMsgQ[16];
    ///////////////////////////////////////////////////////////
              SIE_TCTX                                         ie_tCtxOut[2];
    ///////////////////////////////////////////////////////////
              SIE_TCTX                                         ie_tCtxIn[2];
    ///////////////////////////////////////////////////////////
              SIE_CtxMPGx                                      ie_ctxMPGx;
    ///////////////////////////////////////////////////////////
              SIE_VSLocal                                      ie_localPSER;
    ///////////////////////////////////////////////////////////
              SIE_VSLocal                                      ie_localSYNP;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxE90                                    [368];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_P3TCQ[128];
    ///////////////////////////////////////////////////////////
              SIE_BitPlane                                     ie_bpfld[2];
    ///////////////////////////////////////////////////////////
              SIE_InvScanMPG                                   ie_InvScan;
    ///////////////////////////////////////////////////////////
              SIE_MVDSize                                      ie_mvdsize;
    ///////////////////////////////////////////////////////////
              SIE_MVDOffset                                    ie_mvdoffset;
    ///////////////////////////////////////////////////////////
              SIE_MVDOffset                                    ie_mvdoffset2;
    ///////////////////////////////////////////////////////////
              SIE_ModTable                                     ie_modtab;
    ///////////////////////////////////////////////////////////
              SIE_NIntraCtx                                    ie_nIntraLut[6];
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx1E80                                   [384];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_VCMsgQ[128];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_P3FopQ[64];
    ///////////////////////////////////////////////////////////
              SIE_BitPlane                                     ie_bplanes[2];
    ///////////////////////////////////////////////////////////
    } SIE_vc1HalData;

    ///////////////////////////////////////////////////////////
     SIGN32 vc1HalData_drvrd(SIE_vc1HalData *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vc1HalData_drvwr(SIE_vc1HalData *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vc1HalData_reset(SIE_vc1HalData *p);
     SIGN32 vc1HalData_cmp  (SIE_vc1HalData *p, SIE_vc1HalData *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vc1HalData_check(p,pie,pfx,hLOG) vc1HalData_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vc1HalData_print(p,    pfx,hLOG) vc1HalData_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vc1HalData
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vc1_IC_ctx                               (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 prop                 (P)
///               %unsigned 16 rBID                      
///                                    ###
///                                    * Reference buffer ID, last 1b indicates access mode:
///                                    * 0: frame/progressive or top field
///                                    * 1: bottom field
///                                    ###
///               %unsigned 16 curr_pict_struct          
///                                    ###
///                                    * Current picture format
///                                    * 0: progressive
///                                    * 1: interlaced field/top field
///                                    * 2: interlaced frame
///                                    * 3: bottom field
///                                    ###
///     # 0x00004 prop1                
///               %unsigned 16 ref_pict_struct           
///                                    ###
///                                    * Reference picture format
///                                    * 0: progressive
///                                    * 1: interlaced field/top field
///                                    * 2: interlaced frame
///                                    * 3: bottom field
///                                    ###
///               %unsigned 16 fldMB                     
///                                    ###
///                                    * 1: if current picture is field picture, and reference picture is NOT progressive picture.
///                                    * 0: otherwise
///                                    ###
///     # 0x00008 prop2                
///               %unsigned 16 width_in_mb               
///                                    ###
///                                    * Frame width in number of MBs
///                                    ###
///               %unsigned 16 height_in_mb              
///                                    ###
///                                    * Frame height in number of MBs
///                                    * Note: if current picture is field picture and reference picture is progressive, use the height of progressive (i.e., do not divide by 2).
///                                    ###
///     @ 0x0000C SN                   (P)
///               %unsigned 16 VCMsgQ                    
///                                    ###
///                                    * Running counter of vCache message output
///                                    ###
///               %unsigned 16 vcmDesc                   
///                                    ###
///                                    * Running counter of vcMSG descriptor bank
///                                    * Staring from 0xFFFF at each picture
///                                    ###
///     @ 0x00010 tmp                  (P)
///               %unsigned 16 v_0i                      
///               %unsigned 16 v_1i                      
///     # 0x00014 tmp1                 
///               %unsigned 16 v_2i                      
///               %unsigned 16 v_3i                      
///     # 0x00018 tmp2                 
///               %unsigned 16 v_4i                      
///               %unsigned 16 v_5i                      
///     # 0x0001C tmp3                 
///               %unsigned 16 v_6i                      
///               %unsigned 16 v_7i                      
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      32B, bits:     256b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vc1_IC_ctx
#define h_vc1_IC_ctx (){}

    #define     RA_vc1_IC_ctx_prop                             0x0000

    #define     BA_vc1_IC_ctx_prop_rBID                        0x0000
    #define     B16vc1_IC_ctx_prop_rBID                        0x0000
    #define   LSb32vc1_IC_ctx_prop_rBID                           0
    #define   LSb16vc1_IC_ctx_prop_rBID                           0
    #define       bvc1_IC_ctx_prop_rBID                        16
    #define   MSK32vc1_IC_ctx_prop_rBID                           0x0000FFFF

    #define     BA_vc1_IC_ctx_prop_curr_pict_struct            0x0002
    #define     B16vc1_IC_ctx_prop_curr_pict_struct            0x0002
    #define   LSb32vc1_IC_ctx_prop_curr_pict_struct               16
    #define   LSb16vc1_IC_ctx_prop_curr_pict_struct               0
    #define       bvc1_IC_ctx_prop_curr_pict_struct            16
    #define   MSK32vc1_IC_ctx_prop_curr_pict_struct               0xFFFF0000

    #define     RA_vc1_IC_ctx_prop1                            0x0004

    #define     BA_vc1_IC_ctx_prop_ref_pict_struct             0x0004
    #define     B16vc1_IC_ctx_prop_ref_pict_struct             0x0004
    #define   LSb32vc1_IC_ctx_prop_ref_pict_struct                0
    #define   LSb16vc1_IC_ctx_prop_ref_pict_struct                0
    #define       bvc1_IC_ctx_prop_ref_pict_struct             16
    #define   MSK32vc1_IC_ctx_prop_ref_pict_struct                0x0000FFFF

    #define     BA_vc1_IC_ctx_prop_fldMB                       0x0006
    #define     B16vc1_IC_ctx_prop_fldMB                       0x0006
    #define   LSb32vc1_IC_ctx_prop_fldMB                          16
    #define   LSb16vc1_IC_ctx_prop_fldMB                          0
    #define       bvc1_IC_ctx_prop_fldMB                       16
    #define   MSK32vc1_IC_ctx_prop_fldMB                          0xFFFF0000

    #define     RA_vc1_IC_ctx_prop2                            0x0008

    #define     BA_vc1_IC_ctx_prop_width_in_mb                 0x0008
    #define     B16vc1_IC_ctx_prop_width_in_mb                 0x0008
    #define   LSb32vc1_IC_ctx_prop_width_in_mb                    0
    #define   LSb16vc1_IC_ctx_prop_width_in_mb                    0
    #define       bvc1_IC_ctx_prop_width_in_mb                 16
    #define   MSK32vc1_IC_ctx_prop_width_in_mb                    0x0000FFFF

    #define     BA_vc1_IC_ctx_prop_height_in_mb                0x000A
    #define     B16vc1_IC_ctx_prop_height_in_mb                0x000A
    #define   LSb32vc1_IC_ctx_prop_height_in_mb                   16
    #define   LSb16vc1_IC_ctx_prop_height_in_mb                   0
    #define       bvc1_IC_ctx_prop_height_in_mb                16
    #define   MSK32vc1_IC_ctx_prop_height_in_mb                   0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_vc1_IC_ctx_SN                               0x000C

    #define     BA_vc1_IC_ctx_SN_VCMsgQ                        0x000C
    #define     B16vc1_IC_ctx_SN_VCMsgQ                        0x000C
    #define   LSb32vc1_IC_ctx_SN_VCMsgQ                           0
    #define   LSb16vc1_IC_ctx_SN_VCMsgQ                           0
    #define       bvc1_IC_ctx_SN_VCMsgQ                        16
    #define   MSK32vc1_IC_ctx_SN_VCMsgQ                           0x0000FFFF

    #define     BA_vc1_IC_ctx_SN_vcmDesc                       0x000E
    #define     B16vc1_IC_ctx_SN_vcmDesc                       0x000E
    #define   LSb32vc1_IC_ctx_SN_vcmDesc                          16
    #define   LSb16vc1_IC_ctx_SN_vcmDesc                          0
    #define       bvc1_IC_ctx_SN_vcmDesc                       16
    #define   MSK32vc1_IC_ctx_SN_vcmDesc                          0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_vc1_IC_ctx_tmp                              0x0010

    #define     BA_vc1_IC_ctx_tmp_v_0i                         0x0010
    #define     B16vc1_IC_ctx_tmp_v_0i                         0x0010
    #define   LSb32vc1_IC_ctx_tmp_v_0i                            0
    #define   LSb16vc1_IC_ctx_tmp_v_0i                            0
    #define       bvc1_IC_ctx_tmp_v_0i                         16
    #define   MSK32vc1_IC_ctx_tmp_v_0i                            0x0000FFFF

    #define     BA_vc1_IC_ctx_tmp_v_1i                         0x0012
    #define     B16vc1_IC_ctx_tmp_v_1i                         0x0012
    #define   LSb32vc1_IC_ctx_tmp_v_1i                            16
    #define   LSb16vc1_IC_ctx_tmp_v_1i                            0
    #define       bvc1_IC_ctx_tmp_v_1i                         16
    #define   MSK32vc1_IC_ctx_tmp_v_1i                            0xFFFF0000

    #define     RA_vc1_IC_ctx_tmp1                             0x0014

    #define     BA_vc1_IC_ctx_tmp_v_2i                         0x0014
    #define     B16vc1_IC_ctx_tmp_v_2i                         0x0014
    #define   LSb32vc1_IC_ctx_tmp_v_2i                            0
    #define   LSb16vc1_IC_ctx_tmp_v_2i                            0
    #define       bvc1_IC_ctx_tmp_v_2i                         16
    #define   MSK32vc1_IC_ctx_tmp_v_2i                            0x0000FFFF

    #define     BA_vc1_IC_ctx_tmp_v_3i                         0x0016
    #define     B16vc1_IC_ctx_tmp_v_3i                         0x0016
    #define   LSb32vc1_IC_ctx_tmp_v_3i                            16
    #define   LSb16vc1_IC_ctx_tmp_v_3i                            0
    #define       bvc1_IC_ctx_tmp_v_3i                         16
    #define   MSK32vc1_IC_ctx_tmp_v_3i                            0xFFFF0000

    #define     RA_vc1_IC_ctx_tmp2                             0x0018

    #define     BA_vc1_IC_ctx_tmp_v_4i                         0x0018
    #define     B16vc1_IC_ctx_tmp_v_4i                         0x0018
    #define   LSb32vc1_IC_ctx_tmp_v_4i                            0
    #define   LSb16vc1_IC_ctx_tmp_v_4i                            0
    #define       bvc1_IC_ctx_tmp_v_4i                         16
    #define   MSK32vc1_IC_ctx_tmp_v_4i                            0x0000FFFF

    #define     BA_vc1_IC_ctx_tmp_v_5i                         0x001A
    #define     B16vc1_IC_ctx_tmp_v_5i                         0x001A
    #define   LSb32vc1_IC_ctx_tmp_v_5i                            16
    #define   LSb16vc1_IC_ctx_tmp_v_5i                            0
    #define       bvc1_IC_ctx_tmp_v_5i                         16
    #define   MSK32vc1_IC_ctx_tmp_v_5i                            0xFFFF0000

    #define     RA_vc1_IC_ctx_tmp3                             0x001C

    #define     BA_vc1_IC_ctx_tmp_v_6i                         0x001C
    #define     B16vc1_IC_ctx_tmp_v_6i                         0x001C
    #define   LSb32vc1_IC_ctx_tmp_v_6i                            0
    #define   LSb16vc1_IC_ctx_tmp_v_6i                            0
    #define       bvc1_IC_ctx_tmp_v_6i                         16
    #define   MSK32vc1_IC_ctx_tmp_v_6i                            0x0000FFFF

    #define     BA_vc1_IC_ctx_tmp_v_7i                         0x001E
    #define     B16vc1_IC_ctx_tmp_v_7i                         0x001E
    #define   LSb32vc1_IC_ctx_tmp_v_7i                            16
    #define   LSb16vc1_IC_ctx_tmp_v_7i                            0
    #define       bvc1_IC_ctx_tmp_v_7i                         16
    #define   MSK32vc1_IC_ctx_tmp_v_7i                            0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vc1_IC_ctx {
    ///////////////////////////////////////////////////////////
    #define   GET32vc1_IC_ctx_prop_rBID(r32)                   _BFGET_(r32,15, 0)
    #define   SET32vc1_IC_ctx_prop_rBID(r32,v)                 _BFSET_(r32,15, 0,v)
    #define   GET16vc1_IC_ctx_prop_rBID(r16)                   _BFGET_(r16,15, 0)
    #define   SET16vc1_IC_ctx_prop_rBID(r16,v)                 _BFSET_(r16,15, 0,v)

    #define   GET32vc1_IC_ctx_prop_curr_pict_struct(r32)       _BFGET_(r32,31,16)
    #define   SET32vc1_IC_ctx_prop_curr_pict_struct(r32,v)     _BFSET_(r32,31,16,v)
    #define   GET16vc1_IC_ctx_prop_curr_pict_struct(r16)       _BFGET_(r16,15, 0)
    #define   SET16vc1_IC_ctx_prop_curr_pict_struct(r16,v)     _BFSET_(r16,15, 0,v)

    #define     w32vc1_IC_ctx_prop                             {\
            UNSG32 uprop_rBID                                  : 16;\
            UNSG32 uprop_curr_pict_struct                      : 16;\
          }
    union { UNSG32 u32vc1_IC_ctx_prop;
            struct w32vc1_IC_ctx_prop;
          };
    #define   GET32vc1_IC_ctx_prop_ref_pict_struct(r32)        _BFGET_(r32,15, 0)
    #define   SET32vc1_IC_ctx_prop_ref_pict_struct(r32,v)      _BFSET_(r32,15, 0,v)
    #define   GET16vc1_IC_ctx_prop_ref_pict_struct(r16)        _BFGET_(r16,15, 0)
    #define   SET16vc1_IC_ctx_prop_ref_pict_struct(r16,v)      _BFSET_(r16,15, 0,v)

    #define   GET32vc1_IC_ctx_prop_fldMB(r32)                  _BFGET_(r32,31,16)
    #define   SET32vc1_IC_ctx_prop_fldMB(r32,v)                _BFSET_(r32,31,16,v)
    #define   GET16vc1_IC_ctx_prop_fldMB(r16)                  _BFGET_(r16,15, 0)
    #define   SET16vc1_IC_ctx_prop_fldMB(r16,v)                _BFSET_(r16,15, 0,v)

    #define     w32vc1_IC_ctx_prop1                            {\
            UNSG32 uprop_ref_pict_struct                       : 16;\
            UNSG32 uprop_fldMB                                 : 16;\
          }
    union { UNSG32 u32vc1_IC_ctx_prop1;
            struct w32vc1_IC_ctx_prop1;
          };
    #define   GET32vc1_IC_ctx_prop_width_in_mb(r32)            _BFGET_(r32,15, 0)
    #define   SET32vc1_IC_ctx_prop_width_in_mb(r32,v)          _BFSET_(r32,15, 0,v)
    #define   GET16vc1_IC_ctx_prop_width_in_mb(r16)            _BFGET_(r16,15, 0)
    #define   SET16vc1_IC_ctx_prop_width_in_mb(r16,v)          _BFSET_(r16,15, 0,v)

    #define   GET32vc1_IC_ctx_prop_height_in_mb(r32)           _BFGET_(r32,31,16)
    #define   SET32vc1_IC_ctx_prop_height_in_mb(r32,v)         _BFSET_(r32,31,16,v)
    #define   GET16vc1_IC_ctx_prop_height_in_mb(r16)           _BFGET_(r16,15, 0)
    #define   SET16vc1_IC_ctx_prop_height_in_mb(r16,v)         _BFSET_(r16,15, 0,v)

    #define     w32vc1_IC_ctx_prop2                            {\
            UNSG32 uprop_width_in_mb                           : 16;\
            UNSG32 uprop_height_in_mb                          : 16;\
          }
    union { UNSG32 u32vc1_IC_ctx_prop2;
            struct w32vc1_IC_ctx_prop2;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32vc1_IC_ctx_SN_VCMsgQ(r32)                   _BFGET_(r32,15, 0)
    #define   SET32vc1_IC_ctx_SN_VCMsgQ(r32,v)                 _BFSET_(r32,15, 0,v)
    #define   GET16vc1_IC_ctx_SN_VCMsgQ(r16)                   _BFGET_(r16,15, 0)
    #define   SET16vc1_IC_ctx_SN_VCMsgQ(r16,v)                 _BFSET_(r16,15, 0,v)

    #define   GET32vc1_IC_ctx_SN_vcmDesc(r32)                  _BFGET_(r32,31,16)
    #define   SET32vc1_IC_ctx_SN_vcmDesc(r32,v)                _BFSET_(r32,31,16,v)
    #define   GET16vc1_IC_ctx_SN_vcmDesc(r16)                  _BFGET_(r16,15, 0)
    #define   SET16vc1_IC_ctx_SN_vcmDesc(r16,v)                _BFSET_(r16,15, 0,v)

    #define     w32vc1_IC_ctx_SN                               {\
            UNSG32 uSN_VCMsgQ                                  : 16;\
            UNSG32 uSN_vcmDesc                                 : 16;\
          }
    union { UNSG32 u32vc1_IC_ctx_SN;
            struct w32vc1_IC_ctx_SN;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32vc1_IC_ctx_tmp_v_0i(r32)                    _BFGET_(r32,15, 0)
    #define   SET32vc1_IC_ctx_tmp_v_0i(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16vc1_IC_ctx_tmp_v_0i(r16)                    _BFGET_(r16,15, 0)
    #define   SET16vc1_IC_ctx_tmp_v_0i(r16,v)                  _BFSET_(r16,15, 0,v)

    #define   GET32vc1_IC_ctx_tmp_v_1i(r32)                    _BFGET_(r32,31,16)
    #define   SET32vc1_IC_ctx_tmp_v_1i(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16vc1_IC_ctx_tmp_v_1i(r16)                    _BFGET_(r16,15, 0)
    #define   SET16vc1_IC_ctx_tmp_v_1i(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32vc1_IC_ctx_tmp                              {\
            UNSG32 utmp_v_0i                                   : 16;\
            UNSG32 utmp_v_1i                                   : 16;\
          }
    union { UNSG32 u32vc1_IC_ctx_tmp;
            struct w32vc1_IC_ctx_tmp;
          };
    #define   GET32vc1_IC_ctx_tmp_v_2i(r32)                    _BFGET_(r32,15, 0)
    #define   SET32vc1_IC_ctx_tmp_v_2i(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16vc1_IC_ctx_tmp_v_2i(r16)                    _BFGET_(r16,15, 0)
    #define   SET16vc1_IC_ctx_tmp_v_2i(r16,v)                  _BFSET_(r16,15, 0,v)

    #define   GET32vc1_IC_ctx_tmp_v_3i(r32)                    _BFGET_(r32,31,16)
    #define   SET32vc1_IC_ctx_tmp_v_3i(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16vc1_IC_ctx_tmp_v_3i(r16)                    _BFGET_(r16,15, 0)
    #define   SET16vc1_IC_ctx_tmp_v_3i(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32vc1_IC_ctx_tmp1                             {\
            UNSG32 utmp_v_2i                                   : 16;\
            UNSG32 utmp_v_3i                                   : 16;\
          }
    union { UNSG32 u32vc1_IC_ctx_tmp1;
            struct w32vc1_IC_ctx_tmp1;
          };
    #define   GET32vc1_IC_ctx_tmp_v_4i(r32)                    _BFGET_(r32,15, 0)
    #define   SET32vc1_IC_ctx_tmp_v_4i(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16vc1_IC_ctx_tmp_v_4i(r16)                    _BFGET_(r16,15, 0)
    #define   SET16vc1_IC_ctx_tmp_v_4i(r16,v)                  _BFSET_(r16,15, 0,v)

    #define   GET32vc1_IC_ctx_tmp_v_5i(r32)                    _BFGET_(r32,31,16)
    #define   SET32vc1_IC_ctx_tmp_v_5i(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16vc1_IC_ctx_tmp_v_5i(r16)                    _BFGET_(r16,15, 0)
    #define   SET16vc1_IC_ctx_tmp_v_5i(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32vc1_IC_ctx_tmp2                             {\
            UNSG32 utmp_v_4i                                   : 16;\
            UNSG32 utmp_v_5i                                   : 16;\
          }
    union { UNSG32 u32vc1_IC_ctx_tmp2;
            struct w32vc1_IC_ctx_tmp2;
          };
    #define   GET32vc1_IC_ctx_tmp_v_6i(r32)                    _BFGET_(r32,15, 0)
    #define   SET32vc1_IC_ctx_tmp_v_6i(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16vc1_IC_ctx_tmp_v_6i(r16)                    _BFGET_(r16,15, 0)
    #define   SET16vc1_IC_ctx_tmp_v_6i(r16,v)                  _BFSET_(r16,15, 0,v)

    #define   GET32vc1_IC_ctx_tmp_v_7i(r32)                    _BFGET_(r32,31,16)
    #define   SET32vc1_IC_ctx_tmp_v_7i(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16vc1_IC_ctx_tmp_v_7i(r16)                    _BFGET_(r16,15, 0)
    #define   SET16vc1_IC_ctx_tmp_v_7i(r16,v)                  _BFSET_(r16,15, 0,v)

    #define     w32vc1_IC_ctx_tmp3                             {\
            UNSG32 utmp_v_6i                                   : 16;\
            UNSG32 utmp_v_7i                                   : 16;\
          }
    union { UNSG32 u32vc1_IC_ctx_tmp3;
            struct w32vc1_IC_ctx_tmp3;
          };
    ///////////////////////////////////////////////////////////
    } SIE_vc1_IC_ctx;

    typedef union  T32vc1_IC_ctx_prop
          { UNSG32 u32;
            struct w32vc1_IC_ctx_prop;
                 } T32vc1_IC_ctx_prop;
    typedef union  T32vc1_IC_ctx_prop1
          { UNSG32 u32;
            struct w32vc1_IC_ctx_prop1;
                 } T32vc1_IC_ctx_prop1;
    typedef union  T32vc1_IC_ctx_prop2
          { UNSG32 u32;
            struct w32vc1_IC_ctx_prop2;
                 } T32vc1_IC_ctx_prop2;
    typedef union  T32vc1_IC_ctx_SN
          { UNSG32 u32;
            struct w32vc1_IC_ctx_SN;
                 } T32vc1_IC_ctx_SN;
    typedef union  T32vc1_IC_ctx_tmp
          { UNSG32 u32;
            struct w32vc1_IC_ctx_tmp;
                 } T32vc1_IC_ctx_tmp;
    typedef union  T32vc1_IC_ctx_tmp1
          { UNSG32 u32;
            struct w32vc1_IC_ctx_tmp1;
                 } T32vc1_IC_ctx_tmp1;
    typedef union  T32vc1_IC_ctx_tmp2
          { UNSG32 u32;
            struct w32vc1_IC_ctx_tmp2;
                 } T32vc1_IC_ctx_tmp2;
    typedef union  T32vc1_IC_ctx_tmp3
          { UNSG32 u32;
            struct w32vc1_IC_ctx_tmp3;
                 } T32vc1_IC_ctx_tmp3;
    ///////////////////////////////////////////////////////////

    typedef union  Tvc1_IC_ctx_prop
          { UNSG32 u32[3];
            struct {
            struct w32vc1_IC_ctx_prop;
            struct w32vc1_IC_ctx_prop1;
            struct w32vc1_IC_ctx_prop2;
                   };
                 } Tvc1_IC_ctx_prop;
    typedef union  Tvc1_IC_ctx_SN
          { UNSG32 u32[1];
            struct {
            struct w32vc1_IC_ctx_SN;
                   };
                 } Tvc1_IC_ctx_SN;
    typedef union  Tvc1_IC_ctx_tmp
          { UNSG32 u32[4];
            struct {
            struct w32vc1_IC_ctx_tmp;
            struct w32vc1_IC_ctx_tmp1;
            struct w32vc1_IC_ctx_tmp2;
            struct w32vc1_IC_ctx_tmp3;
                   };
                 } Tvc1_IC_ctx_tmp;

    ///////////////////////////////////////////////////////////
     SIGN32 vc1_IC_ctx_drvrd(SIE_vc1_IC_ctx *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vc1_IC_ctx_drvwr(SIE_vc1_IC_ctx *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vc1_IC_ctx_reset(SIE_vc1_IC_ctx *p);
     SIGN32 vc1_IC_ctx_cmp  (SIE_vc1_IC_ctx *p, SIE_vc1_IC_ctx *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vc1_IC_ctx_check(p,pie,pfx,hLOG) vc1_IC_ctx_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vc1_IC_ctx_print(p,    pfx,hLOG) vc1_IC_ctx_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vc1_IC_ctx
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE GMCParam                                 (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %signed   32 a                         
///               %signed   32 b                         
///                                    ###
///                                    * x' = ax+by+c
///                                    ###
///               %signed   32 MvSumBase                 
///                                    ###
///                                    * mv sum of MB(0,0)
///                                    ###
///     @ 0x0000C                      (P)
///               %unsigned 16 alphaP                    
///                                    ###
///                                    * number of fraction bits
///                                    ###
///               %unsigned 16 mask                      
///                                    ###
///                                    * Mask = (1<<alphaP)-1
///                                    ###
///     @ 0x00010                      (P)
///               %unsigned 16 fracs_len                 
///                                    ###
///                                    * len of fraction array of MB(0,0)
///                                    ###
///               %unsigned 16 PointsNum                 
///               %unsigned 16 WarpingAccuracy           
///               %unsigned 16 avgShiftBits              
///     @ 0x00018                      (P)
///               %unsigned 16 avgShiftRnd               
///                                    ###
///                                    * avgShiftRnd = 1<<(avgShiftBits-1)
///                                    ###
///               %unsigned 16 unused_0i                 
///               %unsigned 16 unused_1i                 
///               %unsigned 16 unused_2i                 
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      32B, bits:     256b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_GMCParam
#define h_GMCParam (){}

    #define     BA_GMCParam_a                                  0x0000
    #define     B16GMCParam_a                                  0x0000
    #define   LSb32GMCParam_a                                     0
    #define   LSb16GMCParam_a                                     0
    #define       bGMCParam_a                                  32
    #define   MSK32GMCParam_a                                     0xFFFFFFFF

    #define     BA_GMCParam_b                                  0x0004
    #define     B16GMCParam_b                                  0x0004
    #define   LSb32GMCParam_b                                     0
    #define   LSb16GMCParam_b                                     0
    #define       bGMCParam_b                                  32
    #define   MSK32GMCParam_b                                     0xFFFFFFFF

    #define     BA_GMCParam_MvSumBase                          0x0008
    #define     B16GMCParam_MvSumBase                          0x0008
    #define   LSb32GMCParam_MvSumBase                             0
    #define   LSb16GMCParam_MvSumBase                             0
    #define       bGMCParam_MvSumBase                          32
    #define   MSK32GMCParam_MvSumBase                             0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    #define     BA_GMCParam_alphaP                             0x000C
    #define     B16GMCParam_alphaP                             0x000C
    #define   LSb32GMCParam_alphaP                                0
    #define   LSb16GMCParam_alphaP                                0
    #define       bGMCParam_alphaP                             16
    #define   MSK32GMCParam_alphaP                                0x0000FFFF

    #define     BA_GMCParam_mask                               0x000E
    #define     B16GMCParam_mask                               0x000E
    #define   LSb32GMCParam_mask                                  16
    #define   LSb16GMCParam_mask                                  0
    #define       bGMCParam_mask                               16
    #define   MSK32GMCParam_mask                                  0xFFFF0000
    ///////////////////////////////////////////////////////////

    #define     BA_GMCParam_fracs_len                          0x0010
    #define     B16GMCParam_fracs_len                          0x0010
    #define   LSb32GMCParam_fracs_len                             0
    #define   LSb16GMCParam_fracs_len                             0
    #define       bGMCParam_fracs_len                          16
    #define   MSK32GMCParam_fracs_len                             0x0000FFFF

    #define     BA_GMCParam_PointsNum                          0x0012
    #define     B16GMCParam_PointsNum                          0x0012
    #define   LSb32GMCParam_PointsNum                             16
    #define   LSb16GMCParam_PointsNum                             0
    #define       bGMCParam_PointsNum                          16
    #define   MSK32GMCParam_PointsNum                             0xFFFF0000

    #define     BA_GMCParam_WarpingAccuracy                    0x0014
    #define     B16GMCParam_WarpingAccuracy                    0x0014
    #define   LSb32GMCParam_WarpingAccuracy                       0
    #define   LSb16GMCParam_WarpingAccuracy                       0
    #define       bGMCParam_WarpingAccuracy                    16
    #define   MSK32GMCParam_WarpingAccuracy                       0x0000FFFF

    #define     BA_GMCParam_avgShiftBits                       0x0016
    #define     B16GMCParam_avgShiftBits                       0x0016
    #define   LSb32GMCParam_avgShiftBits                          16
    #define   LSb16GMCParam_avgShiftBits                          0
    #define       bGMCParam_avgShiftBits                       16
    #define   MSK32GMCParam_avgShiftBits                          0xFFFF0000
    ///////////////////////////////////////////////////////////

    #define     BA_GMCParam_avgShiftRnd                        0x0018
    #define     B16GMCParam_avgShiftRnd                        0x0018
    #define   LSb32GMCParam_avgShiftRnd                           0
    #define   LSb16GMCParam_avgShiftRnd                           0
    #define       bGMCParam_avgShiftRnd                        16
    #define   MSK32GMCParam_avgShiftRnd                           0x0000FFFF

    #define     BA_GMCParam_unused_0i                          0x001A
    #define     B16GMCParam_unused_0i                          0x001A
    #define   LSb32GMCParam_unused_0i                             16
    #define   LSb16GMCParam_unused_0i                             0
    #define       bGMCParam_unused_0i                          16
    #define   MSK32GMCParam_unused_0i                             0xFFFF0000

    #define     BA_GMCParam_unused_1i                          0x001C
    #define     B16GMCParam_unused_1i                          0x001C
    #define   LSb32GMCParam_unused_1i                             0
    #define   LSb16GMCParam_unused_1i                             0
    #define       bGMCParam_unused_1i                          16
    #define   MSK32GMCParam_unused_1i                             0x0000FFFF

    #define     BA_GMCParam_unused_2i                          0x001E
    #define     B16GMCParam_unused_2i                          0x001E
    #define   LSb32GMCParam_unused_2i                             16
    #define   LSb16GMCParam_unused_2i                             0
    #define       bGMCParam_unused_2i                          16
    #define   MSK32GMCParam_unused_2i                             0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_GMCParam {
    ///////////////////////////////////////////////////////////
    #define   GET32GMCParam_a(r32)                             _BFGET_(r32,31, 0)
    #define   SET32GMCParam_a(r32,v)                           _BFSET_(r32,31, 0,v)

            UNSG32 s_a                                         : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32GMCParam_b(r32)                             _BFGET_(r32,31, 0)
    #define   SET32GMCParam_b(r32,v)                           _BFSET_(r32,31, 0,v)

            UNSG32 s_b                                         : 32;
    ///////////////////////////////////////////////////////////

    #define   GET32GMCParam_MvSumBase(r32)                     _BFGET_(r32,31, 0)
    #define   SET32GMCParam_MvSumBase(r32,v)                   _BFSET_(r32,31, 0,v)

            UNSG32 s_MvSumBase                                 : 32;
    ///////////////////////////////////////////////////////////
    #define   GET32GMCParam_alphaP(r32)                        _BFGET_(r32,15, 0)
    #define   SET32GMCParam_alphaP(r32,v)                      _BFSET_(r32,15, 0,v)
    #define   GET16GMCParam_alphaP(r16)                        _BFGET_(r16,15, 0)
    #define   SET16GMCParam_alphaP(r16,v)                      _BFSET_(r16,15, 0,v)

    #define   GET32GMCParam_mask(r32)                          _BFGET_(r32,31,16)
    #define   SET32GMCParam_mask(r32,v)                        _BFSET_(r32,31,16,v)
    #define   GET16GMCParam_mask(r16)                          _BFGET_(r16,15, 0)
    #define   SET16GMCParam_mask(r16,v)                        _BFSET_(r16,15, 0,v)

            UNSG32 u_alphaP                                    : 16;
            UNSG32 u_mask                                      : 16;
    ///////////////////////////////////////////////////////////
    #define   GET32GMCParam_fracs_len(r32)                     _BFGET_(r32,15, 0)
    #define   SET32GMCParam_fracs_len(r32,v)                   _BFSET_(r32,15, 0,v)
    #define   GET16GMCParam_fracs_len(r16)                     _BFGET_(r16,15, 0)
    #define   SET16GMCParam_fracs_len(r16,v)                   _BFSET_(r16,15, 0,v)

    #define   GET32GMCParam_PointsNum(r32)                     _BFGET_(r32,31,16)
    #define   SET32GMCParam_PointsNum(r32,v)                   _BFSET_(r32,31,16,v)
    #define   GET16GMCParam_PointsNum(r16)                     _BFGET_(r16,15, 0)
    #define   SET16GMCParam_PointsNum(r16,v)                   _BFSET_(r16,15, 0,v)

            UNSG32 u_fracs_len                                 : 16;
            UNSG32 u_PointsNum                                 : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32GMCParam_WarpingAccuracy(r32)               _BFGET_(r32,15, 0)
    #define   SET32GMCParam_WarpingAccuracy(r32,v)             _BFSET_(r32,15, 0,v)
    #define   GET16GMCParam_WarpingAccuracy(r16)               _BFGET_(r16,15, 0)
    #define   SET16GMCParam_WarpingAccuracy(r16,v)             _BFSET_(r16,15, 0,v)

    #define   GET32GMCParam_avgShiftBits(r32)                  _BFGET_(r32,31,16)
    #define   SET32GMCParam_avgShiftBits(r32,v)                _BFSET_(r32,31,16,v)
    #define   GET16GMCParam_avgShiftBits(r16)                  _BFGET_(r16,15, 0)
    #define   SET16GMCParam_avgShiftBits(r16,v)                _BFSET_(r16,15, 0,v)

            UNSG32 u_WarpingAccuracy                           : 16;
            UNSG32 u_avgShiftBits                              : 16;
    ///////////////////////////////////////////////////////////
    #define   GET32GMCParam_avgShiftRnd(r32)                   _BFGET_(r32,15, 0)
    #define   SET32GMCParam_avgShiftRnd(r32,v)                 _BFSET_(r32,15, 0,v)
    #define   GET16GMCParam_avgShiftRnd(r16)                   _BFGET_(r16,15, 0)
    #define   SET16GMCParam_avgShiftRnd(r16,v)                 _BFSET_(r16,15, 0,v)

    #define   GET32GMCParam_unused_0i(r32)                     _BFGET_(r32,31,16)
    #define   SET32GMCParam_unused_0i(r32,v)                   _BFSET_(r32,31,16,v)
    #define   GET16GMCParam_unused_0i(r16)                     _BFGET_(r16,15, 0)
    #define   SET16GMCParam_unused_0i(r16,v)                   _BFSET_(r16,15, 0,v)

            UNSG32 u_avgShiftRnd                               : 16;
            UNSG32 u_unused_0i                                 : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32GMCParam_unused_1i(r32)                     _BFGET_(r32,15, 0)
    #define   SET32GMCParam_unused_1i(r32,v)                   _BFSET_(r32,15, 0,v)
    #define   GET16GMCParam_unused_1i(r16)                     _BFGET_(r16,15, 0)
    #define   SET16GMCParam_unused_1i(r16,v)                   _BFSET_(r16,15, 0,v)

    #define   GET32GMCParam_unused_2i(r32)                     _BFGET_(r32,31,16)
    #define   SET32GMCParam_unused_2i(r32,v)                   _BFSET_(r32,31,16,v)
    #define   GET16GMCParam_unused_2i(r16)                     _BFGET_(r16,15, 0)
    #define   SET16GMCParam_unused_2i(r16,v)                   _BFSET_(r16,15, 0,v)

            UNSG32 u_unused_1i                                 : 16;
            UNSG32 u_unused_2i                                 : 16;
    ///////////////////////////////////////////////////////////
    } SIE_GMCParam;

    ///////////////////////////////////////////////////////////
     SIGN32 GMCParam_drvrd(SIE_GMCParam *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 GMCParam_drvwr(SIE_GMCParam *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void GMCParam_reset(SIE_GMCParam *p);
     SIGN32 GMCParam_cmp  (SIE_GMCParam *p, SIE_GMCParam *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define GMCParam_check(p,pie,pfx,hLOG) GMCParam_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define GMCParam_print(p,    pfx,hLOG) GMCParam_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: GMCParam
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE ITypeDc                                  (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 4  cbpc                      
///               %unsigned 3  mbtype                    
///               %unsigned 5  qp                        
///               %unsigned 1  hasDc                     
///               %unsigned 3  unused                    
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_ITypeDc
#define h_ITypeDc (){}

    #define     BA_ITypeDc_cbpc                                0x0000
    #define     B16ITypeDc_cbpc                                0x0000
    #define   LSb32ITypeDc_cbpc                                   0
    #define   LSb16ITypeDc_cbpc                                   0
    #define       bITypeDc_cbpc                                4
    #define   MSK32ITypeDc_cbpc                                   0x0000000F

    #define     BA_ITypeDc_mbtype                              0x0000
    #define     B16ITypeDc_mbtype                              0x0000
    #define   LSb32ITypeDc_mbtype                                 4
    #define   LSb16ITypeDc_mbtype                                 4
    #define       bITypeDc_mbtype                              3
    #define   MSK32ITypeDc_mbtype                                 0x00000070

    #define     BA_ITypeDc_qp                                  0x0000
    #define     B16ITypeDc_qp                                  0x0000
    #define   LSb32ITypeDc_qp                                     7
    #define   LSb16ITypeDc_qp                                     7
    #define       bITypeDc_qp                                  5
    #define   MSK32ITypeDc_qp                                     0x00000F80

    #define     BA_ITypeDc_hasDc                               0x0001
    #define     B16ITypeDc_hasDc                               0x0000
    #define   LSb32ITypeDc_hasDc                                  12
    #define   LSb16ITypeDc_hasDc                                  12
    #define       bITypeDc_hasDc                               1
    #define   MSK32ITypeDc_hasDc                                  0x00001000

    #define     BA_ITypeDc_unused                              0x0001
    #define     B16ITypeDc_unused                              0x0000
    #define   LSb32ITypeDc_unused                                 13
    #define   LSb16ITypeDc_unused                                 13
    #define       bITypeDc_unused                              3
    #define   MSK32ITypeDc_unused                                 0x0000E000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_ITypeDc {
    ///////////////////////////////////////////////////////////
    #define   GET32ITypeDc_cbpc(r32)                           _BFGET_(r32, 3, 0)
    #define   SET32ITypeDc_cbpc(r32,v)                         _BFSET_(r32, 3, 0,v)
    #define   GET16ITypeDc_cbpc(r16)                           _BFGET_(r16, 3, 0)
    #define   SET16ITypeDc_cbpc(r16,v)                         _BFSET_(r16, 3, 0,v)

    #define   GET32ITypeDc_mbtype(r32)                         _BFGET_(r32, 6, 4)
    #define   SET32ITypeDc_mbtype(r32,v)                       _BFSET_(r32, 6, 4,v)
    #define   GET16ITypeDc_mbtype(r16)                         _BFGET_(r16, 6, 4)
    #define   SET16ITypeDc_mbtype(r16,v)                       _BFSET_(r16, 6, 4,v)

    #define   GET32ITypeDc_qp(r32)                             _BFGET_(r32,11, 7)
    #define   SET32ITypeDc_qp(r32,v)                           _BFSET_(r32,11, 7,v)
    #define   GET16ITypeDc_qp(r16)                             _BFGET_(r16,11, 7)
    #define   SET16ITypeDc_qp(r16,v)                           _BFSET_(r16,11, 7,v)

    #define   GET32ITypeDc_hasDc(r32)                          _BFGET_(r32,12,12)
    #define   SET32ITypeDc_hasDc(r32,v)                        _BFSET_(r32,12,12,v)
    #define   GET16ITypeDc_hasDc(r16)                          _BFGET_(r16,12,12)
    #define   SET16ITypeDc_hasDc(r16,v)                        _BFSET_(r16,12,12,v)

    #define   GET32ITypeDc_unused(r32)                         _BFGET_(r32,15,13)
    #define   SET32ITypeDc_unused(r32,v)                       _BFSET_(r32,15,13,v)
    #define   GET16ITypeDc_unused(r16)                         _BFGET_(r16,15,13)
    #define   SET16ITypeDc_unused(r16,v)                       _BFSET_(r16,15,13,v)

            UNSG32 u_cbpc                                      :  4;
            UNSG32 u_mbtype                                    :  3;
            UNSG32 u_qp                                        :  5;
            UNSG32 u_hasDc                                     :  1;
            UNSG32 u_unused                                    :  3;
    ///////////////////////////////////////////////////////////
    } SIE_ITypeDc;

    ///////////////////////////////////////////////////////////
     SIGN32 ITypeDc_drvrd(SIE_ITypeDc *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 ITypeDc_drvwr(SIE_ITypeDc *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void ITypeDc_reset(SIE_ITypeDc *p);
     SIGN32 ITypeDc_cmp  (SIE_ITypeDc *p, SIE_ITypeDc *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define ITypeDc_check(p,pie,pfx,hLOG) ITypeDc_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define ITypeDc_print(p,    pfx,hLOG) ITypeDc_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: ITypeDc
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE IAcpredCbp                               (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 1  acPredFlag                
///               %unsigned 12 cbpy                      
///                                    ###
///                                    * Low 8b is inter cbpy; high 4b is intra cbpy
///                                    ###
///               %unsigned 3  unused                    
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_IAcpredCbp
#define h_IAcpredCbp (){}

    #define     BA_IAcpredCbp_acPredFlag                       0x0000
    #define     B16IAcpredCbp_acPredFlag                       0x0000
    #define   LSb32IAcpredCbp_acPredFlag                          0
    #define   LSb16IAcpredCbp_acPredFlag                          0
    #define       bIAcpredCbp_acPredFlag                       1
    #define   MSK32IAcpredCbp_acPredFlag                          0x00000001

    #define     BA_IAcpredCbp_cbpy                             0x0000
    #define     B16IAcpredCbp_cbpy                             0x0000
    #define   LSb32IAcpredCbp_cbpy                                1
    #define   LSb16IAcpredCbp_cbpy                                1
    #define       bIAcpredCbp_cbpy                             12
    #define   MSK32IAcpredCbp_cbpy                                0x00001FFE

    #define     BA_IAcpredCbp_unused                           0x0001
    #define     B16IAcpredCbp_unused                           0x0000
    #define   LSb32IAcpredCbp_unused                              13
    #define   LSb16IAcpredCbp_unused                              13
    #define       bIAcpredCbp_unused                           3
    #define   MSK32IAcpredCbp_unused                              0x0000E000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_IAcpredCbp {
    ///////////////////////////////////////////////////////////
    #define   GET32IAcpredCbp_acPredFlag(r32)                  _BFGET_(r32, 0, 0)
    #define   SET32IAcpredCbp_acPredFlag(r32,v)                _BFSET_(r32, 0, 0,v)
    #define   GET16IAcpredCbp_acPredFlag(r16)                  _BFGET_(r16, 0, 0)
    #define   SET16IAcpredCbp_acPredFlag(r16,v)                _BFSET_(r16, 0, 0,v)

    #define   GET32IAcpredCbp_cbpy(r32)                        _BFGET_(r32,12, 1)
    #define   SET32IAcpredCbp_cbpy(r32,v)                      _BFSET_(r32,12, 1,v)
    #define   GET16IAcpredCbp_cbpy(r16)                        _BFGET_(r16,12, 1)
    #define   SET16IAcpredCbp_cbpy(r16,v)                      _BFSET_(r16,12, 1,v)

    #define   GET32IAcpredCbp_unused(r32)                      _BFGET_(r32,15,13)
    #define   SET32IAcpredCbp_unused(r32,v)                    _BFSET_(r32,15,13,v)
    #define   GET16IAcpredCbp_unused(r16)                      _BFGET_(r16,15,13)
    #define   SET16IAcpredCbp_unused(r16,v)                    _BFSET_(r16,15,13,v)

            UNSG32 u_acPredFlag                                :  1;
            UNSG32 u_cbpy                                      : 12;
            UNSG32 u_unused                                    :  3;
    ///////////////////////////////////////////////////////////
    } SIE_IAcpredCbp;

    ///////////////////////////////////////////////////////////
     SIGN32 IAcpredCbp_drvrd(SIE_IAcpredCbp *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 IAcpredCbp_drvwr(SIE_IAcpredCbp *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void IAcpredCbp_reset(SIE_IAcpredCbp *p);
     SIGN32 IAcpredCbp_cmp  (SIE_IAcpredCbp *p, SIE_IAcpredCbp *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define IAcpredCbp_check(p,pie,pfx,hLOG) IAcpredCbp_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define IAcpredCbp_print(p,    pfx,hLOG) IAcpredCbp_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: IAcpredCbp
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE PTypeMv                                  (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 4  cbpc                      
///               %unsigned 3  mbtype                    
///               %unsigned 3  mv_num                    
///               %unsigned 1  not_coded                 
///               %unsigned 1  mcsel                     
///               %unsigned 4  unused                    
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_PTypeMv
#define h_PTypeMv (){}

    #define     BA_PTypeMv_cbpc                                0x0000
    #define     B16PTypeMv_cbpc                                0x0000
    #define   LSb32PTypeMv_cbpc                                   0
    #define   LSb16PTypeMv_cbpc                                   0
    #define       bPTypeMv_cbpc                                4
    #define   MSK32PTypeMv_cbpc                                   0x0000000F

    #define     BA_PTypeMv_mbtype                              0x0000
    #define     B16PTypeMv_mbtype                              0x0000
    #define   LSb32PTypeMv_mbtype                                 4
    #define   LSb16PTypeMv_mbtype                                 4
    #define       bPTypeMv_mbtype                              3
    #define   MSK32PTypeMv_mbtype                                 0x00000070

    #define     BA_PTypeMv_mv_num                              0x0000
    #define     B16PTypeMv_mv_num                              0x0000
    #define   LSb32PTypeMv_mv_num                                 7
    #define   LSb16PTypeMv_mv_num                                 7
    #define       bPTypeMv_mv_num                              3
    #define   MSK32PTypeMv_mv_num                                 0x00000380

    #define     BA_PTypeMv_not_coded                           0x0001
    #define     B16PTypeMv_not_coded                           0x0000
    #define   LSb32PTypeMv_not_coded                              10
    #define   LSb16PTypeMv_not_coded                              10
    #define       bPTypeMv_not_coded                           1
    #define   MSK32PTypeMv_not_coded                              0x00000400

    #define     BA_PTypeMv_mcsel                               0x0001
    #define     B16PTypeMv_mcsel                               0x0000
    #define   LSb32PTypeMv_mcsel                                  11
    #define   LSb16PTypeMv_mcsel                                  11
    #define       bPTypeMv_mcsel                               1
    #define   MSK32PTypeMv_mcsel                                  0x00000800

    #define     BA_PTypeMv_unused                              0x0001
    #define     B16PTypeMv_unused                              0x0000
    #define   LSb32PTypeMv_unused                                 12
    #define   LSb16PTypeMv_unused                                 12
    #define       bPTypeMv_unused                              4
    #define   MSK32PTypeMv_unused                                 0x0000F000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_PTypeMv {
    ///////////////////////////////////////////////////////////
    #define   GET32PTypeMv_cbpc(r32)                           _BFGET_(r32, 3, 0)
    #define   SET32PTypeMv_cbpc(r32,v)                         _BFSET_(r32, 3, 0,v)
    #define   GET16PTypeMv_cbpc(r16)                           _BFGET_(r16, 3, 0)
    #define   SET16PTypeMv_cbpc(r16,v)                         _BFSET_(r16, 3, 0,v)

    #define   GET32PTypeMv_mbtype(r32)                         _BFGET_(r32, 6, 4)
    #define   SET32PTypeMv_mbtype(r32,v)                       _BFSET_(r32, 6, 4,v)
    #define   GET16PTypeMv_mbtype(r16)                         _BFGET_(r16, 6, 4)
    #define   SET16PTypeMv_mbtype(r16,v)                       _BFSET_(r16, 6, 4,v)

    #define   GET32PTypeMv_mv_num(r32)                         _BFGET_(r32, 9, 7)
    #define   SET32PTypeMv_mv_num(r32,v)                       _BFSET_(r32, 9, 7,v)
    #define   GET16PTypeMv_mv_num(r16)                         _BFGET_(r16, 9, 7)
    #define   SET16PTypeMv_mv_num(r16,v)                       _BFSET_(r16, 9, 7,v)

    #define   GET32PTypeMv_not_coded(r32)                      _BFGET_(r32,10,10)
    #define   SET32PTypeMv_not_coded(r32,v)                    _BFSET_(r32,10,10,v)
    #define   GET16PTypeMv_not_coded(r16)                      _BFGET_(r16,10,10)
    #define   SET16PTypeMv_not_coded(r16,v)                    _BFSET_(r16,10,10,v)

    #define   GET32PTypeMv_mcsel(r32)                          _BFGET_(r32,11,11)
    #define   SET32PTypeMv_mcsel(r32,v)                        _BFSET_(r32,11,11,v)
    #define   GET16PTypeMv_mcsel(r16)                          _BFGET_(r16,11,11)
    #define   SET16PTypeMv_mcsel(r16,v)                        _BFSET_(r16,11,11,v)

    #define   GET32PTypeMv_unused(r32)                         _BFGET_(r32,15,12)
    #define   SET32PTypeMv_unused(r32,v)                       _BFSET_(r32,15,12,v)
    #define   GET16PTypeMv_unused(r16)                         _BFGET_(r16,15,12)
    #define   SET16PTypeMv_unused(r16,v)                       _BFSET_(r16,15,12,v)

            UNSG32 u_cbpc                                      :  4;
            UNSG32 u_mbtype                                    :  3;
            UNSG32 u_mv_num                                    :  3;
            UNSG32 u_not_coded                                 :  1;
            UNSG32 u_mcsel                                     :  1;
            UNSG32 u_unused                                    :  4;
    ///////////////////////////////////////////////////////////
    } SIE_PTypeMv;

    ///////////////////////////////////////////////////////////
     SIGN32 PTypeMv_drvrd(SIE_PTypeMv *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 PTypeMv_drvwr(SIE_PTypeMv *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void PTypeMv_reset(SIE_PTypeMv *p);
     SIGN32 PTypeMv_cmp  (SIE_PTypeMv *p, SIE_PTypeMv *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define PTypeMv_check(p,pie,pfx,hLOG) PTypeMv_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define PTypeMv_print(p,    pfx,hLOG) PTypeMv_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: PTypeMv
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE PAcpredCbp                               (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 1  acPredFlag                
///               %unsigned 4  cbpy                      
///               %unsigned 5  qp                        
///               %unsigned 1  hasDc                     
///               %unsigned 5  unused                    
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_PAcpredCbp
#define h_PAcpredCbp (){}

    #define     BA_PAcpredCbp_acPredFlag                       0x0000
    #define     B16PAcpredCbp_acPredFlag                       0x0000
    #define   LSb32PAcpredCbp_acPredFlag                          0
    #define   LSb16PAcpredCbp_acPredFlag                          0
    #define       bPAcpredCbp_acPredFlag                       1
    #define   MSK32PAcpredCbp_acPredFlag                          0x00000001

    #define     BA_PAcpredCbp_cbpy                             0x0000
    #define     B16PAcpredCbp_cbpy                             0x0000
    #define   LSb32PAcpredCbp_cbpy                                1
    #define   LSb16PAcpredCbp_cbpy                                1
    #define       bPAcpredCbp_cbpy                             4
    #define   MSK32PAcpredCbp_cbpy                                0x0000001E

    #define     BA_PAcpredCbp_qp                               0x0000
    #define     B16PAcpredCbp_qp                               0x0000
    #define   LSb32PAcpredCbp_qp                                  5
    #define   LSb16PAcpredCbp_qp                                  5
    #define       bPAcpredCbp_qp                               5
    #define   MSK32PAcpredCbp_qp                                  0x000003E0

    #define     BA_PAcpredCbp_hasDc                            0x0001
    #define     B16PAcpredCbp_hasDc                            0x0000
    #define   LSb32PAcpredCbp_hasDc                               10
    #define   LSb16PAcpredCbp_hasDc                               10
    #define       bPAcpredCbp_hasDc                            1
    #define   MSK32PAcpredCbp_hasDc                               0x00000400

    #define     BA_PAcpredCbp_unused                           0x0001
    #define     B16PAcpredCbp_unused                           0x0000
    #define   LSb32PAcpredCbp_unused                              11
    #define   LSb16PAcpredCbp_unused                              11
    #define       bPAcpredCbp_unused                           5
    #define   MSK32PAcpredCbp_unused                              0x0000F800
    ///////////////////////////////////////////////////////////

    typedef struct SIE_PAcpredCbp {
    ///////////////////////////////////////////////////////////
    #define   GET32PAcpredCbp_acPredFlag(r32)                  _BFGET_(r32, 0, 0)
    #define   SET32PAcpredCbp_acPredFlag(r32,v)                _BFSET_(r32, 0, 0,v)
    #define   GET16PAcpredCbp_acPredFlag(r16)                  _BFGET_(r16, 0, 0)
    #define   SET16PAcpredCbp_acPredFlag(r16,v)                _BFSET_(r16, 0, 0,v)

    #define   GET32PAcpredCbp_cbpy(r32)                        _BFGET_(r32, 4, 1)
    #define   SET32PAcpredCbp_cbpy(r32,v)                      _BFSET_(r32, 4, 1,v)
    #define   GET16PAcpredCbp_cbpy(r16)                        _BFGET_(r16, 4, 1)
    #define   SET16PAcpredCbp_cbpy(r16,v)                      _BFSET_(r16, 4, 1,v)

    #define   GET32PAcpredCbp_qp(r32)                          _BFGET_(r32, 9, 5)
    #define   SET32PAcpredCbp_qp(r32,v)                        _BFSET_(r32, 9, 5,v)
    #define   GET16PAcpredCbp_qp(r16)                          _BFGET_(r16, 9, 5)
    #define   SET16PAcpredCbp_qp(r16,v)                        _BFSET_(r16, 9, 5,v)

    #define   GET32PAcpredCbp_hasDc(r32)                       _BFGET_(r32,10,10)
    #define   SET32PAcpredCbp_hasDc(r32,v)                     _BFSET_(r32,10,10,v)
    #define   GET16PAcpredCbp_hasDc(r16)                       _BFGET_(r16,10,10)
    #define   SET16PAcpredCbp_hasDc(r16,v)                     _BFSET_(r16,10,10,v)

    #define   GET32PAcpredCbp_unused(r32)                      _BFGET_(r32,15,11)
    #define   SET32PAcpredCbp_unused(r32,v)                    _BFSET_(r32,15,11,v)
    #define   GET16PAcpredCbp_unused(r16)                      _BFGET_(r16,15,11)
    #define   SET16PAcpredCbp_unused(r16,v)                    _BFSET_(r16,15,11,v)

            UNSG32 u_acPredFlag                                :  1;
            UNSG32 u_cbpy                                      :  4;
            UNSG32 u_qp                                        :  5;
            UNSG32 u_hasDc                                     :  1;
            UNSG32 u_unused                                    :  5;
    ///////////////////////////////////////////////////////////
    } SIE_PAcpredCbp;

    ///////////////////////////////////////////////////////////
     SIGN32 PAcpredCbp_drvrd(SIE_PAcpredCbp *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 PAcpredCbp_drvwr(SIE_PAcpredCbp *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void PAcpredCbp_reset(SIE_PAcpredCbp *p);
     SIGN32 PAcpredCbp_cmp  (SIE_PAcpredCbp *p, SIE_PAcpredCbp *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define PAcpredCbp_check(p,pie,pfx,hLOG) PAcpredCbp_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define PAcpredCbp_print(p,    pfx,hLOG) PAcpredCbp_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: PAcpredCbp
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE mp4HalData                               (4,4)
///     # # ----------------------------------------------------------
///               : stackPSER          0x2000
///               : stackSYNP          0x3000
///     @ 0x00000                      (P)
///     # 0x00000 mbCtxQ               
///               $MBCTXQ              mbCtxQ            REG          
///                                    ###
///                                    * 8 bank MB context buffer
///                                    * Including history context in & out
///                                    ###
///     @ 0x00A10                      (P)
///     # 0x00A10 mbpropQ              
///               $MBPROP              mbpropQ           REG       [8]
///                                    ###
///                                    * MB properties to syntax processor
///                                    * Also know as P3MsgQ:
///                                    * HBO FIFO (m2h):
///                                    * Message queue to vpro.hbo to vCache
///                                    ###
///     @ 0x00C10                      (P)
///     # 0x00C10 ctxPSER              
///               $CtxPSER             ctxPSER           REG          
///                                    ###
///                                    * Context of stream parser
///                                    ###
///     @ 0x00C34                      (W-)
///     #         # Stuffing bytes...
///               %% 96
///     @ 0x00C40                      (P)
///     # 0x00C40 ctxSYNP              
///               $CtxSYNP             ctxSYNP           REG          
///                                    ###
///                                    * Context of syntax processor
///                                    ###
///     @ 0x00C70                      (W-)
///     #         # Stuffing bytes...
///               %% 64
///     @ 0x00C78                      (P)
///     # 0x00C78 tagDS                
///               $LUT64b              tagDS             REG          
///                                    ###
///                                    * Receiving latest retired tag from data streamer
///                                    ###
///     @ 0x00C80                      (P)
///     # 0x00C80 DSMsgQ               
///               $LUT64b              DSMsgQ            REG      [16]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to data streamer
///                                    ###
///     @ 0x00D00                      (P)
///     # 0x00D00 tCtxOut              
///               $TCTX                tCtxOut           REG       [2]
///                                    ###
///                                    * Temporal contexts (data streamer) output
///                                    ###
///     @ 0x00D40                      (P)
///     # 0x00D40 tCtxIn               
///               $TCTX                tCtxIn            REG       [2]
///                                    ###
///                                    * Temporal contexts (data streamer) input
///                                    ###
///     @ 0x00D80                      (P)
///     # 0x00D80 ctxMPGx              
///               $CtxMPGx             ctxMPGx           REG          
///                                    ###
///                                    * Common context of MPEGx and vc1
///                                    ###
///     @ 0x00D90                      (P)
///     # 0x00D90 localPSER            
///               $VSLocal             localPSER         REG          
///                                    ###
///                                    * Local data area of stream parser
///                                    ###
///     @ 0x00E10                      (P)
///     # 0x00E10 localSYNP            
///               $VSLocal             localSYNP         REG          
///                                    ###
///                                    * Local data area of syntax processor
///                                    ###
///     @ 0x00E90                      (P)
///     # 0x00E90 gmcDSmsg             
///               $DSmsg               gmcDSmsg          REG          
///     @ 0x00E98                      (W-)
///     #         # Stuffing bytes...
///               %% 64
///     @ 0x00EA0                      (P)
///     # 0x00EA0 gmcBitMapBuf         
///               $LUT64b              gmcBitMapBuf      REG       [4]
///                                    ###
///                                    * Local buff for gmc mb bit map
///                                    ###
///     @ 0x00EC0                      (P)
///     # 0x00EC0 tagDS1               
///               $LUT64b              tagDS1            REG          
///     @ 0x00EC8                      (P)
///     # 0x00EC8 DpTemp2              
///               $LUT64b              DpTemp2           REG      [16]
///     @ 0x00F48                      (P)
///     # 0x00F48 cmdDS1               
///               $LUT64b              cmdDS1            REG          
///     @ 0x00F50                      (P)
///     # 0x00F50 DpTemp               
///               $LUT64b              DpTemp            REG      [16]
///     @ 0x00FD0                      (P)
///               %unsigned 16 DpParam1                  
///               %unsigned 16 DpParam2                  
///     @ 0x00FD4                      (P)
///     # 0x00FD4 dpTempData_addr      
///               $LUT64b              dpTempData_addr   REG       [2]
///     @ 0x00FE4                      (W-)
///     #         # Stuffing bytes...
///               %% 224
///     @ 0x01000                      (P)
///     # 0x01000 P3TCQ                
///               $LUT64b              P3TCQ             REG     [128]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * TC queue to vpro.hbo to PCube
///                                    ###
///     @ 0x01400                      (P)
///     # 0x01400 InvScan              
///               $InvScanMPG          InvScan           REG          
///     @ 0x01580                      (P)
///     # 0x01580 intraQMatrix         
///               $LUT64b              intraQMatrix      REG      [24]
///                                    ###
///                                    * unsigned8 qintra[3][64]
///                                    * Intra quant matrix, combined with three scan mode: standard, horizontal,vertical zigzag.
///                                    ###
///     @ 0x01640                      (P)
///     # 0x01640 interQMatrix         
///               $LUT64b              interQMatrix      REG      [24]
///                                    ###
///                                    * unsigned8 qinter[3][64]
///                                    * Inter quant matrix, combined with three scan mode: standard, horizontal,vertical zigzag.
///                                    ###
///     @ 0x01700                      (P)
///     # 0x01700 PredBuf              
///               $LUT64b              PredBuf           REG      [16]
///                                    ###
///                                    * To check it is 128 byte aligned
///                                    ###
///     @ 0x01780                      (P)
///     # 0x01780 DCScalarY            
///               $LUT64b              DCScalarY         REG       [4]
///                                    ###
///                                    * Cast to unsigned8 dcscalary[32]
///                                    * Refer to: Table 7-1 mpeg4 spec
///                                    ###
///     @ 0x017A0                      (P)
///     # 0x017A0 DCScalarUV           
///               $LUT64b              DCScalarUV        REG       [4]
///                                    ###
///                                    * Cast to unsigned8 dcscalaruv[32]
///                                    ###
///     @ 0x017C0                      (P)
///     # 0x017C0 gmcParam_x           
///               $GMCParam            gmcParam_x        REG          
///     @ 0x017E0                      (P)
///     # 0x017E0 gmcParam_y           
///               $GMCParam            gmcParam_y        REG          
///                                    ###
///                                    * parameter set for GMC average mv calculation
///                                    ###
///     @ 0x01800                      (P)
///     # 0x01800 frac_x_array         
///               $LUT64b              frac_x_array      REG      [64]
///     @ 0x01A00                      (P)
///     # 0x01A00 frac_y_array         
///               $LUT64b              frac_y_array      REG      [64]
///     @ 0x01C00                      (P)
///     # 0x01C00 mb_info_buf          
///               $LUT64b              mb_info_buf       REG      [64]
///     @ 0x01E00                      (P)
///     # 0x01E00 fop_param            
///               $LUT64b              fop_param         REG          
///                                    ###
///                                    * Fop param include Alpha, Beta, C0
///                                    ###
///     @ 0x01E08                      (P)
///     # 0x01E08 alpha_beta_C_tab     
///               $LUT64b              alpha_beta_C_tab  REG      [32]
///                                    ###
///                                    * Fop table include Alpha, Beta, C0
///                                    ###
///     @ 0x01F08                      (P)
///     # 0x01F08 DSMsgQ1              
///               $LUT64b              DSMsgQ1           REG      [16]
///     @ 0x01F88                      (P)
///               %unsigned 32 Dp_temp_dc_mv_addr        
///     @ 0x01F8C                      (W-)
///     #         # Stuffing bytes...
///               %% 928
///     @ 0x02000                      (P)
///     # 0x02000 REG                  
///               $LUT64b              REG               REG     [128]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to vpro.hbo to PCube
///                                    ###
///     @ 0x02400                      (P)
///     # 0x02400 P3FopQ               
///               $LUT64b              P3FopQ            REG      [64]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * FOP queue to vpro.hbo to PCube
///                                    * End of mp4HalData
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    9728B, bits:   76412b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_mp4HalData
#define h_mp4HalData (){}

    #define        mp4HalData_stackPSER                        0x2000
    #define        mp4HalData_stackSYNP                        0x3000
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_mbCtxQ                           0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_mbpropQ                          0x0A10
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_ctxPSER                          0x0C10
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_ctxSYNP                          0x0C40
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_tagDS                            0x0C78
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_DSMsgQ                           0x0C80
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_tCtxOut                          0x0D00
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_tCtxIn                           0x0D40
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_ctxMPGx                          0x0D80
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_localPSER                        0x0D90
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_localSYNP                        0x0E10
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_gmcDSmsg                         0x0E90
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_gmcBitMapBuf                     0x0EA0
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_tagDS1                           0x0EC0
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_DpTemp2                          0x0EC8
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_cmdDS1                           0x0F48
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_DpTemp                           0x0F50
    ///////////////////////////////////////////////////////////

    #define     BA_mp4HalData_DpParam1                         0x0FD0
    #define     B16mp4HalData_DpParam1                         0x0FD0
    #define   LSb32mp4HalData_DpParam1                            0
    #define   LSb16mp4HalData_DpParam1                            0
    #define       bmp4HalData_DpParam1                         16
    #define   MSK32mp4HalData_DpParam1                            0x0000FFFF

    #define     BA_mp4HalData_DpParam2                         0x0FD2
    #define     B16mp4HalData_DpParam2                         0x0FD2
    #define   LSb32mp4HalData_DpParam2                            16
    #define   LSb16mp4HalData_DpParam2                            0
    #define       bmp4HalData_DpParam2                         16
    #define   MSK32mp4HalData_DpParam2                            0xFFFF0000
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_dpTempData_addr                  0x0FD4
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_P3TCQ                            0x1000
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_InvScan                          0x1400
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_intraQMatrix                     0x1580
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_interQMatrix                     0x1640
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_PredBuf                          0x1700
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_DCScalarY                        0x1780
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_DCScalarUV                       0x17A0
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_gmcParam_x                       0x17C0
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_gmcParam_y                       0x17E0
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_frac_x_array                     0x1800
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_frac_y_array                     0x1A00
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_mb_info_buf                      0x1C00
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_fop_param                        0x1E00
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_alpha_beta_C_tab                 0x1E08
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_DSMsgQ1                          0x1F08
    ///////////////////////////////////////////////////////////

    #define     BA_mp4HalData_Dp_temp_dc_mv_addr               0x1F88
    #define     B16mp4HalData_Dp_temp_dc_mv_addr               0x1F88
    #define   LSb32mp4HalData_Dp_temp_dc_mv_addr                  0
    #define   LSb16mp4HalData_Dp_temp_dc_mv_addr                  0
    #define       bmp4HalData_Dp_temp_dc_mv_addr               32
    #define   MSK32mp4HalData_Dp_temp_dc_mv_addr                  0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_REG                              0x2000
    ///////////////////////////////////////////////////////////
    #define     RA_mp4HalData_P3FopQ                           0x2400
    ///////////////////////////////////////////////////////////

    typedef struct SIE_mp4HalData {
    ///////////////////////////////////////////////////////////
              SIE_MBCTXQ                                       ie_mbCtxQ;
    ///////////////////////////////////////////////////////////
              SIE_MBPROP                                       ie_mbpropQ[8];
    ///////////////////////////////////////////////////////////
              SIE_CtxPSER                                      ie_ctxPSER;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC34                                    [12];
    ///////////////////////////////////////////////////////////
              SIE_CtxSYNP                                      ie_ctxSYNP;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC70                                    [8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_tagDS;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DSMsgQ[16];
    ///////////////////////////////////////////////////////////
              SIE_TCTX                                         ie_tCtxOut[2];
    ///////////////////////////////////////////////////////////
              SIE_TCTX                                         ie_tCtxIn[2];
    ///////////////////////////////////////////////////////////
              SIE_CtxMPGx                                      ie_ctxMPGx;
    ///////////////////////////////////////////////////////////
              SIE_VSLocal                                      ie_localPSER;
    ///////////////////////////////////////////////////////////
              SIE_VSLocal                                      ie_localSYNP;
    ///////////////////////////////////////////////////////////
              SIE_DSmsg                                        ie_gmcDSmsg;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxE98                                    [8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_gmcBitMapBuf[4];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_tagDS1;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DpTemp2[16];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_cmdDS1;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DpTemp[16];
    ///////////////////////////////////////////////////////////
    #define   GET32mp4HalData_DpParam1(r32)                    _BFGET_(r32,15, 0)
    #define   SET32mp4HalData_DpParam1(r32,v)                  _BFSET_(r32,15, 0,v)
    #define   GET16mp4HalData_DpParam1(r16)                    _BFGET_(r16,15, 0)
    #define   SET16mp4HalData_DpParam1(r16,v)                  _BFSET_(r16,15, 0,v)

    #define   GET32mp4HalData_DpParam2(r32)                    _BFGET_(r32,31,16)
    #define   SET32mp4HalData_DpParam2(r32,v)                  _BFSET_(r32,31,16,v)
    #define   GET16mp4HalData_DpParam2(r16)                    _BFGET_(r16,15, 0)
    #define   SET16mp4HalData_DpParam2(r16,v)                  _BFSET_(r16,15, 0,v)

            UNSG32 u_DpParam1                                  : 16;
            UNSG32 u_DpParam2                                  : 16;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_dpTempData_addr[2];
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxFE4                                    [28];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_P3TCQ[128];
    ///////////////////////////////////////////////////////////
              SIE_InvScanMPG                                   ie_InvScan;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_intraQMatrix[24];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_interQMatrix[24];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_PredBuf[16];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DCScalarY[4];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DCScalarUV[4];
    ///////////////////////////////////////////////////////////
              SIE_GMCParam                                     ie_gmcParam_x;
    ///////////////////////////////////////////////////////////
              SIE_GMCParam                                     ie_gmcParam_y;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_frac_x_array[64];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_frac_y_array[64];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_mb_info_buf[64];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_fop_param;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_alpha_beta_C_tab[32];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DSMsgQ1[16];
    ///////////////////////////////////////////////////////////
    #define   GET32mp4HalData_Dp_temp_dc_mv_addr(r32)          _BFGET_(r32,31, 0)
    #define   SET32mp4HalData_Dp_temp_dc_mv_addr(r32,v)        _BFSET_(r32,31, 0,v)

            UNSG32 u_Dp_temp_dc_mv_addr                        : 32;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx1F8C                                   [116];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_REG[128];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_P3FopQ[64];
    ///////////////////////////////////////////////////////////
    } SIE_mp4HalData;

    ///////////////////////////////////////////////////////////
     SIGN32 mp4HalData_drvrd(SIE_mp4HalData *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 mp4HalData_drvwr(SIE_mp4HalData *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void mp4HalData_reset(SIE_mp4HalData *p);
     SIGN32 mp4HalData_cmp  (SIE_mp4HalData *p, SIE_mp4HalData *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define mp4HalData_check(p,pie,pfx,hLOG) mp4HalData_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define mp4HalData_print(p,    pfx,hLOG) mp4HalData_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: mp4HalData
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE jpegHalData                              (4,4)
///     # # ----------------------------------------------------------
///               : stackPSER          0x2000
///               : stackSYNP          0x3000
///     @ 0x00000                      (P)
///     # 0x00000 localTCQ             
///               $LUT64b              localTCQ          REG     [256]
///                                    ###
///                                    * local FIFO:
///                                    * TC queue to FIGO[1] to FIGO[0].
///                                    ###
///     @ 0x00800                      (P)
///     # 0x00800 AcVldTab0            
///               $LUT64b              AcVldTab0         REG      [64]
///                                    ###
///                                    * Ac VLD lookup table 0
///                                    * 1 tables * 256 entrys * 2 bytes
///                                    ###
///     @ 0x00A00                      (P)
///     # 0x00A00 AcVldTab1            
///               $LUT64b              AcVldTab1         REG      [64]
///                                    ###
///                                    * Ac VLD lookup table 1
///                                    * 1 tables * 256 entrys * 2 bytes
///                                    ###
///     @ 0x00C00                      (W-)
///     #         # Stuffing bytes...
///               %% 128
///     @ 0x00C10                      (P)
///     # 0x00C10 ctxPSER              
///               $CtxPSER             ctxPSER           REG          
///                                    ###
///                                    * Context of stream parser
///                                    ###
///     @ 0x00C34                      (W-)
///     #         # Stuffing bytes...
///               %% 96
///     @ 0x00C40                      (P)
///     # 0x00C40 ctxSYNP              
///               $CtxSYNP             ctxSYNP           REG          
///                                    ###
///                                    * Context of syntax processor
///                                    ###
///     @ 0x00C70                      (W-)
///     #         # Stuffing bytes...
///               %% 64
///     @ 0x00C78                      (P)
///     # 0x00C78 tagDS                
///               $LUT64b              tagDS             REG          
///                                    ###
///                                    * Receiving latest retired tag from data streamer
///                                    ###
///     @ 0x00C80                      (P)
///     # 0x00C80 DSMsgQ               
///               $LUT64b              DSMsgQ            REG      [16]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to data streamer
///                                    ###
///     @ 0x00D00                      (P)
///     # 0x00D00 mbpropQ              
///               $MBPROPJPEG          mbpropQ           REG       [8]
///                                    ###
///                                    * MB properties to syntax processor
///                                    * Also know as P3MsgQ:
///                                    * HBO FIFO (m2h):
///                                    * Message queue to vpro.hbo to vCache
///                                    ###
///     @ 0x00D40                      (P)
///     # 0x00D40 localPSER            
///               $VSLocal             localPSER         REG          
///                                    ###
///                                    * Local data area of stream parser
///                                    ###
///     @ 0x00DC0                      (P)
///     # 0x00DC0 InvScanTab1          
///               $LUT64b              InvScanTab1       REG      [16]
///                                    ###
///                                    * Inverse scan table. For FIGO[1] if necessary.
///                                    ###
///     @ 0x00E40                      (P)
///     # 0x00E40 ctxJPEG              
///               $CtxJPEG             ctxJPEG           REG          
///                                    ###
///                                    * Common context of JPEG
///                                    ###
///     @ 0x00EC0                      (W-)
///     #         # Stuffing bytes...
///               %% 2560
///     @ 0x01000                      (P)
///     # 0x01000 P3TCQ                
///               $LUT64b              P3TCQ             REG     [256]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * TC queue to vpro.hbo to PCube
///                                    ###
///     @ 0x01800                      (P)
///     # 0x01800 DcVldTab0            
///               $LUT64b              DcVldTab0         REG      [64]
///                                    ###
///                                    * Dc VLD lookup table 0.
///                                    * 1 tables * 256 entrys * 2 bytes.
///                                    ###
///     @ 0x01A00                      (P)
///     # 0x01A00 DcVldTab1            
///               $LUT64b              DcVldTab1         REG      [64]
///                                    ###
///                                    * Dc VLD lookup table 1.
///                                    * 1 tables * 256 entrys * 2 bytes.
///                                    ###
///     @ 0x01C00                      (P)
///     # 0x01C00 DcHuffTab            
///               $HuffCodeTab         DcHuffTab         REG       [2]
///                                    ###
///                                    * Two dc tables for choice.
///                                    ###
///     @ 0x01C80                      (P)
///     # 0x01C80 AcHuffTab            
///               $HuffCodeTab         AcHuffTab         REG       [2]
///                                    ###
///                                    * Two ac tables for choice in base-line.
///                                    ###
///     @ 0x01D00                      (P)
///     # 0x01D00 DcSize               
///               $LUT64b              DcSize            REG       [4]
///                                    ###
///                                    * unsigned8 DcSizeTab[2][16].
///                                    ###
///     @ 0x01D20                      (P)
///     # 0x01D20 AcEvent              
///               $LUT64b              AcEvent           REG      [64]
///                                    ###
///                                    * unsigned8 AcEventTab[2][256].
///                                    ###
///     @ 0x01F20                      (W-)
///     #         # Stuffing bytes...
///               %% 1792
///     @ 0x02000                      (P)
///     # 0x02000 VCMsgQ               
///               $LUT64b              VCMsgQ            REG     [128]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to vpro.hbo to PCube
///                                    ###
///     @ 0x02400                      (P)
///     # 0x02400 P3FopQ               
///               $LUT64b              P3FopQ            REG      [64]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * FOP queue to vpro.hbo to PCube
///                                    ###
///     @ 0x02600                      (P)
///     # 0x02600 InvScan              
///               $LUT64b              InvScan           REG      [16]
///                                    ###
///                                    * Inverse scan table for FIGO[0].
///                                    ###
///     @ 0x02680                      (P)
///     # 0x02680 QMatrix              
///               $LUT64b              QMatrix           REG      [32]
///                                    ###
///                                    * unsigned8 qmatrix[4][64]
///                                    * Four quant matrix for JPEG.
///                                    ###
///     @ 0x02780                      (P)
///     # 0x02780 localSYNP            
///               $VSLocal             localSYNP         REG          
///                                    ###
///                                    * Local data area of syntax processor.
///                                    * End of jpegHalData
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:   10240B, bits:   77216b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_jpegHalData
#define h_jpegHalData (){}

    #define        jpegHalData_stackPSER                       0x2000
    #define        jpegHalData_stackSYNP                       0x3000
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_localTCQ                        0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_AcVldTab0                       0x0800
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_AcVldTab1                       0x0A00
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_ctxPSER                         0x0C10
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_ctxSYNP                         0x0C40
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_tagDS                           0x0C78
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_DSMsgQ                          0x0C80
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_mbpropQ                         0x0D00
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_localPSER                       0x0D40
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_InvScanTab1                     0x0DC0
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_ctxJPEG                         0x0E40
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_P3TCQ                           0x1000
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_DcVldTab0                       0x1800
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_DcVldTab1                       0x1A00
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_DcHuffTab                       0x1C00
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_AcHuffTab                       0x1C80
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_DcSize                          0x1D00
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_AcEvent                         0x1D20
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_VCMsgQ                          0x2000
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_P3FopQ                          0x2400
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_InvScan                         0x2600
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_QMatrix                         0x2680
    ///////////////////////////////////////////////////////////
    #define     RA_jpegHalData_localSYNP                       0x2780
    ///////////////////////////////////////////////////////////

    typedef struct SIE_jpegHalData {
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_localTCQ[256];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_AcVldTab0[64];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_AcVldTab1[64];
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC00                                    [16];
    ///////////////////////////////////////////////////////////
              SIE_CtxPSER                                      ie_ctxPSER;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC34                                    [12];
    ///////////////////////////////////////////////////////////
              SIE_CtxSYNP                                      ie_ctxSYNP;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC70                                    [8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_tagDS;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DSMsgQ[16];
    ///////////////////////////////////////////////////////////
              SIE_MBPROPJPEG                                   ie_mbpropQ[8];
    ///////////////////////////////////////////////////////////
              SIE_VSLocal                                      ie_localPSER;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_InvScanTab1[16];
    ///////////////////////////////////////////////////////////
              SIE_CtxJPEG                                      ie_ctxJPEG;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxEC0                                    [320];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_P3TCQ[256];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DcVldTab0[64];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DcVldTab1[64];
    ///////////////////////////////////////////////////////////
              SIE_HuffCodeTab                                  ie_DcHuffTab[2];
    ///////////////////////////////////////////////////////////
              SIE_HuffCodeTab                                  ie_AcHuffTab[2];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DcSize[4];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_AcEvent[64];
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx1F20                                   [224];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_VCMsgQ[128];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_P3FopQ[64];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_InvScan[16];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_QMatrix[32];
    ///////////////////////////////////////////////////////////
              SIE_VSLocal                                      ie_localSYNP;
    ///////////////////////////////////////////////////////////
    } SIE_jpegHalData;

    ///////////////////////////////////////////////////////////
     SIGN32 jpegHalData_drvrd(SIE_jpegHalData *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 jpegHalData_drvwr(SIE_jpegHalData *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void jpegHalData_reset(SIE_jpegHalData *p);
     SIGN32 jpegHalData_cmp  (SIE_jpegHalData *p, SIE_jpegHalData *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define jpegHalData_check(p,pie,pfx,hLOG) jpegHalData_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define jpegHalData_print(p,    pfx,hLOG) jpegHalData_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: jpegHalData
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE VP6_MBMsg                                (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 mbprop               
///               $MBPROP              mbprop            REG          
///                                    ###
///                                    * Current MBPROP (64 bytes)
///                                    ###
///     @ 0x00040                      (W-)
///     #         # Stuffing bytes...
///               %% 512
///     @ 0x00080                      (P)
///     # 0x00080 fctx                 
///               $FCTX                fctx              REG       [5]
///                                    ###
///                                    * All the FCTX of current MB
///                                    ###
///     @ 0x000A8                      (W-)
///     #         # Stuffing bytes...
///               %% 704
///     @ 0x00100                      (P)
///     # 0x00100 tc                   
///               $LUT64b              tc                REG      [96]
///                                    ###
///                                    * Six 8x8 blocks TC coefficients
///                                    * End of vp6_FMOMBMsg
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    1024B, bits:    6976b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_VP6_MBMsg
#define h_VP6_MBMsg (){}

    #define     RA_VP6_MBMsg_mbprop                            0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_VP6_MBMsg_fctx                              0x0080
    ///////////////////////////////////////////////////////////
    #define     RA_VP6_MBMsg_tc                                0x0100
    ///////////////////////////////////////////////////////////

    typedef struct SIE_VP6_MBMsg {
    ///////////////////////////////////////////////////////////
              SIE_MBPROP                                       ie_mbprop;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx40                                     [64];
    ///////////////////////////////////////////////////////////
              SIE_FCTX                                         ie_fctx[5];
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxA8                                     [88];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_tc[96];
    ///////////////////////////////////////////////////////////
    } SIE_VP6_MBMsg;

    ///////////////////////////////////////////////////////////
     SIGN32 VP6_MBMsg_drvrd(SIE_VP6_MBMsg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 VP6_MBMsg_drvwr(SIE_VP6_MBMsg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void VP6_MBMsg_reset(SIE_VP6_MBMsg *p);
     SIGN32 VP6_MBMsg_cmp  (SIE_VP6_MBMsg *p, SIE_VP6_MBMsg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define VP6_MBMsg_check(p,pie,pfx,hLOG) VP6_MBMsg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define VP6_MBMsg_print(p,    pfx,hLOG) VP6_MBMsg_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: VP6_MBMsg
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vp6HalData                               (4,4)
///     # # ----------------------------------------------------------
///               : stackPSER          0x2000
///               : stackSYNP          0x3000
///     @ 0x00000                      (P)
///     # 0x00000 mbCtxQ               
///               $MBCTXQ              mbCtxQ            REG          
///                                    ###
///                                    * 8 bank MB context buffer
///                                    * Including history context in & out
///                                    ###
///     @ 0x00A10                      (P)
///     # 0x00A10 mbpropQ              
///               $MBPROP              mbpropQ           REG       [8]
///                                    ###
///                                    * MB properties to syntax processor
///                                    * Also know as P3MsgQ:
///                                    * HBO FIFO (m2h):
///                                    * Message queue to vpro.hbo to vCache
///                                    ###
///     @ 0x00C10                      (P)
///     # 0x00C10 ctxPSER              
///               $CtxPSER             ctxPSER           REG          
///                                    ###
///                                    * Context of stream parser
///                                    ###
///     @ 0x00C34                      (W-)
///     #         # Stuffing bytes...
///               %% 96
///     @ 0x00C40                      (P)
///     # 0x00C40 ctxSYNP              
///               $CtxSYNP             ctxSYNP           REG          
///                                    ###
///                                    * Context of syntax processor
///                                    ###
///     @ 0x00C70                      (W-)
///     #         # Stuffing bytes...
///               %% 64
///     @ 0x00C78                      (P)
///     # 0x00C78 tagDS                
///               $LUT64b              tagDS             REG          
///                                    ###
///                                    * Receiving latest retired tag from data streamer
///                                    ###
///     @ 0x00C80                      (P)
///     # 0x00C80 DSMsgQ               
///               $LUT64b              DSMsgQ            REG      [16]
///                                    ###
///                                    * HBO FIFO (h2m):
///                                    * vscope_dtcm to DDR (parser)
///                                    ###
///     @ 0x00D00                      (P)
///     # 0x00D00 dsmsg0               
///               $DSmsg               dsmsg0            REG          
///                                    ###
///                                    * Dsmsg for parser
///                                    ###
///     @ 0x00D08                      (P)
///     # 0x00D08 dsmsg1               
///               $DSmsg               dsmsg1            REG          
///                                    ###
///                                    * Dsmsg for synpro
///                                    ###
///     @ 0x00D10                      (P)
///     # 0x00D10 tcSN                 
///               $LUT8b               tcSN              REG          
///                                    ###
///                                    * 8x8blk tc counter in vp6_mb msg
///                                    ###
///     @ 0x00D14                      (W-)
///     #         # Stuffing bytes...
///               %% 5984
///     @ 0x01000                      (P)
///     # 0x01000 P3TCQ                
///               $LUT64b              P3TCQ             REG     [128]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * TC queue to vpro.hbo to PCube
///                                    ###
///     @ 0x01400                      (P)
///     # 0x01400 vp6_mbmsg0           
///               $VP6_MBMsg           vp6_mbmsg0        REG          
///                                    ###
///                                    * parser output to DDR, including MBPROP/FCTX/TC, size is 1K bytes
///                                    ###
///     @ 0x01800                      (P)
///     # 0x01800 DSMsgQ1              
///               $LUT64b              DSMsgQ1           REG      [16]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * DDR to vscope_dtcm (synpro)
///                                    ###
///     @ 0x01880                      (P)
///     # 0x01880 tagDS1               
///               $LUT64b              tagDS1            REG          
///                                    ###
///                                    * Receiving latest retired tag from data streamer
///                                    ###
///     @ 0x01888                      (W-)
///     #         # Stuffing bytes...
///               %% 12224
///     @ 0x01E80                      (P)
///     # 0x01E80 localPSER            
///               $VSLocal             localPSER         REG          
///                                    ###
///                                    * Local data area of stream parser
///                                    ###
///     @ 0x01F00                      (W-)
///     #         # Stuffing bytes...
///               %% 2048
///     @ 0x02000                      (P)
///     # 0x02000 VCMsgQ               
///               $LUT64b              VCMsgQ            REG     [128]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to vpro.hbo to PCube
///                                    ###
///     @ 0x02400                      (P)
///     # 0x02400 vp6_mbmsg1           
///               $VP6_MBMsg           vp6_mbmsg1        REG          
///                                    ###
///                                    * DDR to synpro, including MBPROP/FCTX/TC, size is 1K bytes
///                                    ###
///     @ 0x02800                      (P)
///     # 0x02800 vcmDesc              
///               $VCMLUT              vcmDesc           REG          
///     @ 0x02880                      (W-)
///     #         # Stuffing bytes...
///               %% 12288
///     @ 0x02E80                      (P)
///     # 0x02E80 localSYNP            
///               $VSLocal             localSYNP         REG          
///                                    ###
///                                    * Local data area of syntax processor
///                                    * End of vp6HalData
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:   12032B, bits:   61094b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vp6HalData
#define h_vp6HalData (){}

    #define        vp6HalData_stackPSER                        0x2000
    #define        vp6HalData_stackSYNP                        0x3000
    ///////////////////////////////////////////////////////////
    #define     RA_vp6HalData_mbCtxQ                           0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_vp6HalData_mbpropQ                          0x0A10
    ///////////////////////////////////////////////////////////
    #define     RA_vp6HalData_ctxPSER                          0x0C10
    ///////////////////////////////////////////////////////////
    #define     RA_vp6HalData_ctxSYNP                          0x0C40
    ///////////////////////////////////////////////////////////
    #define     RA_vp6HalData_tagDS                            0x0C78
    ///////////////////////////////////////////////////////////
    #define     RA_vp6HalData_DSMsgQ                           0x0C80
    ///////////////////////////////////////////////////////////
    #define     RA_vp6HalData_dsmsg0                           0x0D00
    ///////////////////////////////////////////////////////////
    #define     RA_vp6HalData_dsmsg1                           0x0D08
    ///////////////////////////////////////////////////////////
    #define     RA_vp6HalData_tcSN                             0x0D10
    ///////////////////////////////////////////////////////////
    #define     RA_vp6HalData_P3TCQ                            0x1000
    ///////////////////////////////////////////////////////////
    #define     RA_vp6HalData_vp6_mbmsg0                       0x1400
    ///////////////////////////////////////////////////////////
    #define     RA_vp6HalData_DSMsgQ1                          0x1800
    ///////////////////////////////////////////////////////////
    #define     RA_vp6HalData_tagDS1                           0x1880
    ///////////////////////////////////////////////////////////
    #define     RA_vp6HalData_localPSER                        0x1E80
    ///////////////////////////////////////////////////////////
    #define     RA_vp6HalData_VCMsgQ                           0x2000
    ///////////////////////////////////////////////////////////
    #define     RA_vp6HalData_vp6_mbmsg1                       0x2400
    ///////////////////////////////////////////////////////////
    #define     RA_vp6HalData_vcmDesc                          0x2800
    ///////////////////////////////////////////////////////////
    #define     RA_vp6HalData_localSYNP                        0x2E80
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vp6HalData {
    ///////////////////////////////////////////////////////////
              SIE_MBCTXQ                                       ie_mbCtxQ;
    ///////////////////////////////////////////////////////////
              SIE_MBPROP                                       ie_mbpropQ[8];
    ///////////////////////////////////////////////////////////
              SIE_CtxPSER                                      ie_ctxPSER;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC34                                    [12];
    ///////////////////////////////////////////////////////////
              SIE_CtxSYNP                                      ie_ctxSYNP;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC70                                    [8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_tagDS;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DSMsgQ[16];
    ///////////////////////////////////////////////////////////
              SIE_DSmsg                                        ie_dsmsg0;
    ///////////////////////////////////////////////////////////
              SIE_DSmsg                                        ie_dsmsg1;
    ///////////////////////////////////////////////////////////
              SIE_LUT8b                                        ie_tcSN;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxD14                                    [748];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_P3TCQ[128];
    ///////////////////////////////////////////////////////////
              SIE_VP6_MBMsg                                    ie_vp6_mbmsg0;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DSMsgQ1[16];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_tagDS1;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx1888                                   [1528];
    ///////////////////////////////////////////////////////////
              SIE_VSLocal                                      ie_localPSER;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx1F00                                   [256];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_VCMsgQ[128];
    ///////////////////////////////////////////////////////////
              SIE_VP6_MBMsg                                    ie_vp6_mbmsg1;
    ///////////////////////////////////////////////////////////
              SIE_VCMLUT                                       ie_vcmDesc;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx2880                                   [1536];
    ///////////////////////////////////////////////////////////
              SIE_VSLocal                                      ie_localSYNP;
    ///////////////////////////////////////////////////////////
    } SIE_vp6HalData;

    ///////////////////////////////////////////////////////////
     SIGN32 vp6HalData_drvrd(SIE_vp6HalData *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vp6HalData_drvwr(SIE_vp6HalData *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vp6HalData_reset(SIE_vp6HalData *p);
     SIGN32 vp6HalData_cmp  (SIE_vp6HalData *p, SIE_vp6HalData *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vp6HalData_check(p,pie,pfx,hLOG) vp6HalData_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vp6HalData_print(p,    pfx,hLOG) vp6HalData_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vp6HalData
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE rvHalData                                (4,4)
///     # # ----------------------------------------------------------
///               : stackPSER          0x2000
///               : stackSYNP          0x3000
///     @ 0x00000                      (P)
///     # 0x00000 mbCtxQ               
///               $MBCTXQ              mbCtxQ            REG          
///                                    ###
///                                    * 8 bank MB context buffer
///                                    * Including history context in & out
///                                    ###
///     @ 0x00A10                      (P)
///     # 0x00A10 mbpropQ              
///               $MBPROP              mbpropQ           REG       [8]
///                                    ###
///                                    * MB properties to syntax processor
///                                    * Also know as P3MsgQ:
///                                    * HBO FIFO (m2h):
///                                    * Message queue to vpro.hbo to vCache
///                                    ###
///     @ 0x00C10                      (P)
///     # 0x00C10 ctxPSER              
///               $CtxPSER             ctxPSER           REG          
///                                    ###
///                                    * Context of stream parser
///                                    ###
///     @ 0x00C34                      (W-)
///     #         # Stuffing bytes...
///               %% 96
///     @ 0x00C40                      (P)
///     # 0x00C40 ctxSYNP              
///               $CtxSYNP             ctxSYNP           REG          
///                                    ###
///                                    * Context of syntax processor
///                                    ###
///     @ 0x00C70                      (W-)
///     #         # Stuffing bytes...
///               %% 64
///     @ 0x00C78                      (P)
///     # 0x00C78 tagDS                
///               $LUT64b              tagDS             REG          
///                                    ###
///                                    * Receiving latest retired tag from data streamer
///                                    ###
///     @ 0x00C80                      (P)
///     # 0x00C80 DSMsgQ               
///               $LUT64b              DSMsgQ            REG      [16]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to data streamer
///                                    ###
///     @ 0x00D00                      (P)
///     # 0x00D00 tCtxOut              
///               $TCTX                tCtxOut           REG       [2]
///                                    ###
///                                    * Temporal contexts (data streamer) output
///                                    ###
///     @ 0x00D40                      (P)
///     # 0x00D40 tCtxIn               
///               $TCTX                tCtxIn            REG       [2]
///                                    ###
///                                    * Temporal contexts (data streamer) input
///                                    ###
///     @ 0x00D80                      (P)
///     # 0x00D80 ctxMPGx              
///               $CtxMPGx             ctxMPGx           REG          
///                                    ###
///                                    * Common context of MPEGx and vc1
///                                    ###
///     @ 0x00D90                      (P)
///     # 0x00D90 localPSER            
///               $VSLocal             localPSER         REG          
///                                    ###
///                                    * Local data area of stream parser
///                                    ###
///     @ 0x00E10                      (P)
///     # 0x00E10 localSYNP            
///               $VSLocal             localSYNP         REG          
///                                    ###
///                                    * Local data area of syntax processor
///                                    ###
///     @ 0x00E90                      (P)
///     # 0x00E90 rv8TypeTbl           
///               $LUT64b              rv8TypeTbl        REG          
///                                    ###
///                                    * Table for rv8 mb type decoding
///                                    ###
///     @ 0x00E98                      (W-)
///     #         # Stuffing bytes...
///               %% 2880
///     @ 0x01000                      (P)
///     # 0x01000 P3TCQ                
///               $LUT64b              P3TCQ             REG     [128]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * TC queue to vpro.hbo to PCube
///                                    ###
///     @ 0x01400                      (P)
///     # 0x01400 NlocCmd              
///               $LUT64b              NlocCmd           REG       [4]
///                                    ###
///                                    * Nloc Cmd array
///                                    ###
///     @ 0x01420                      (P)
///     # 0x01420 FopBs                
///               $LUT64b              FopBs             REG       [8]
///                                    ###
///                                    * Fop bs array
///                                    ###
///     @ 0x01460                      (P)
///     # 0x01460 BsTbl                
///               $LUT64b              BsTbl             REG       [4]
///                                    ###
///                                    * Bs = bstbl[qp]
///                                    ###
///     @ 0x01480                      (P)
///     # 0x01480 Tab2Mode             
///               $LUT64b              Tab2Mode          REG     [128]
///     @ 0x01880                      (P)
///     # 0x01880 TabDquantMQ          
///               $LUT64b              TabDquantMQ       REG      [16]
///     @ 0x01900                      (P)
///     # 0x01900 TabIntraQp2Idx       
///               $LUT64b              TabIntraQp2Idx    REG       [8]
///     @ 0x01940                      (P)
///     # 0x01940 TabInterQp2Idx       
///               $LUT64b              TabInterQp2Idx    REG       [8]
///     @ 0x01980                      (P)
///     # 0x01980 TabChromaQp          
///               $LUT64b              TabChromaQp       REG       [8]
///     @ 0x019C0                      (P)
///     # 0x019C0 TabChromaQpDc        
///               $LUT64b              TabChromaQpDc     REG       [8]
///     @ 0x01A00                      (P)
///     # 0x01A00 TabLumaIntraQpDc     
///               $LUT64b              TabLumaIntraQpDc  REG       [8]
///     @ 0x01A40                      (P)
///     # 0x01A40 TabLumaInterQpDc     
///               $LUT64b              TabLumaInterQpDc  REG       [8]
///     @ 0x01A80                      (P)
///     # 0x01A80 TabRaster2Idx        
///               $LUT64b              TabRaster2Idx     REG       [4]
///     @ 0x01AA0                      (P)
///     # 0x01AA0 TabCbpyMask          
///               $LUT64b              TabCbpyMask       REG       [4]
///     @ 0x01AC0                      (P)
///     # 0x01AC0 TabCbpyMaskC         
///               $LUT64b              TabCbpyMaskC      REG       [2]
///     @ 0x01AD0                      (P)
///     # 0x01AD0 TabMv                
///               $LUT64b              TabMv             REG       [2]
///     @ 0x01AE0                      (P)
///     # 0x01AE0 Tab4x4map            
///               $LUT64b              Tab4x4map         REG       [4]
///     @ 0x01B00                      (P)
///     # 0x01B00 VLCDecodeTable       
///               $LUT64b              VLCDecodeTable    REG      [32]
///     @ 0x01C00                      (P)
///     # 0x01C00 IProbRV8             
///               $LUT64b              IProbRV8          REG      [24]
///     @ 0x01CC0                      (P)
///     # 0x01CC0 TabBquantTable       
///               $LUT64b              TabBquantTable    REG       [8]
///     @ 0x01D00                      (W-)
///     #         # Stuffing bytes...
///               %% 6144
///     @ 0x02000                      (P)
///     # 0x02000 VCMsgQ               
///               $LUT64b              VCMsgQ            REG     [128]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to vpro.hbo to PCube
///                                    ###
///     @ 0x02400                      (P)
///     # 0x02400 P3FopQ               
///               $LUT64b              P3FopQ            REG      [72]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * FOP queue to vpro.hbo to PCube
///                                    * End of rvHalData
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    9792B, bits:   69116b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_rvHalData
#define h_rvHalData (){}

    #define        rvHalData_stackPSER                         0x2000
    #define        rvHalData_stackSYNP                         0x3000
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_mbCtxQ                            0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_mbpropQ                           0x0A10
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_ctxPSER                           0x0C10
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_ctxSYNP                           0x0C40
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_tagDS                             0x0C78
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_DSMsgQ                            0x0C80
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_tCtxOut                           0x0D00
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_tCtxIn                            0x0D40
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_ctxMPGx                           0x0D80
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_localPSER                         0x0D90
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_localSYNP                         0x0E10
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_rv8TypeTbl                        0x0E90
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_P3TCQ                             0x1000
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_NlocCmd                           0x1400
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_FopBs                             0x1420
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_BsTbl                             0x1460
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_Tab2Mode                          0x1480
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_TabDquantMQ                       0x1880
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_TabIntraQp2Idx                    0x1900
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_TabInterQp2Idx                    0x1940
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_TabChromaQp                       0x1980
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_TabChromaQpDc                     0x19C0
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_TabLumaIntraQpDc                  0x1A00
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_TabLumaInterQpDc                  0x1A40
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_TabRaster2Idx                     0x1A80
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_TabCbpyMask                       0x1AA0
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_TabCbpyMaskC                      0x1AC0
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_TabMv                             0x1AD0
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_Tab4x4map                         0x1AE0
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_VLCDecodeTable                    0x1B00
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_IProbRV8                          0x1C00
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_TabBquantTable                    0x1CC0
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_VCMsgQ                            0x2000
    ///////////////////////////////////////////////////////////
    #define     RA_rvHalData_P3FopQ                            0x2400
    ///////////////////////////////////////////////////////////

    typedef struct SIE_rvHalData {
    ///////////////////////////////////////////////////////////
              SIE_MBCTXQ                                       ie_mbCtxQ;
    ///////////////////////////////////////////////////////////
              SIE_MBPROP                                       ie_mbpropQ[8];
    ///////////////////////////////////////////////////////////
              SIE_CtxPSER                                      ie_ctxPSER;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC34                                    [12];
    ///////////////////////////////////////////////////////////
              SIE_CtxSYNP                                      ie_ctxSYNP;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC70                                    [8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_tagDS;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DSMsgQ[16];
    ///////////////////////////////////////////////////////////
              SIE_TCTX                                         ie_tCtxOut[2];
    ///////////////////////////////////////////////////////////
              SIE_TCTX                                         ie_tCtxIn[2];
    ///////////////////////////////////////////////////////////
              SIE_CtxMPGx                                      ie_ctxMPGx;
    ///////////////////////////////////////////////////////////
              SIE_VSLocal                                      ie_localPSER;
    ///////////////////////////////////////////////////////////
              SIE_VSLocal                                      ie_localSYNP;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_rv8TypeTbl;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxE98                                    [360];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_P3TCQ[128];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_NlocCmd[4];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_FopBs[8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_BsTbl[4];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_Tab2Mode[128];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_TabDquantMQ[16];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_TabIntraQp2Idx[8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_TabInterQp2Idx[8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_TabChromaQp[8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_TabChromaQpDc[8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_TabLumaIntraQpDc[8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_TabLumaInterQpDc[8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_TabRaster2Idx[4];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_TabCbpyMask[4];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_TabCbpyMaskC[2];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_TabMv[2];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_Tab4x4map[4];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_VLCDecodeTable[32];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_IProbRV8[24];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_TabBquantTable[8];
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx1D00                                   [768];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_VCMsgQ[128];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_P3FopQ[72];
    ///////////////////////////////////////////////////////////
    } SIE_rvHalData;

    ///////////////////////////////////////////////////////////
     SIGN32 rvHalData_drvrd(SIE_rvHalData *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 rvHalData_drvwr(SIE_rvHalData *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void rvHalData_reset(SIE_rvHalData *p);
     SIGN32 rvHalData_cmp  (SIE_rvHalData *p, SIE_rvHalData *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define rvHalData_check(p,pie,pfx,hLOG) rvHalData_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define rvHalData_print(p,    pfx,hLOG) rvHalData_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: rvHalData
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE avsHalData                               (4,4)
///     # # ----------------------------------------------------------
///               : stackPSER          0x2000
///               : stackSYNP          0x3000
///     @ 0x00000                      (P)
///     # 0x00000 mbCtxQ               
///               $MBCTXQ              mbCtxQ            REG          
///                                    ###
///                                    * 8 bank MB context buffer
///                                    * Including history context in & out
///                                    ###
///     @ 0x00A10                      (P)
///     # 0x00A10 mbpropQ              
///               $MBPROP              mbpropQ           REG       [8]
///                                    ###
///                                    * MB properties to syntax processor
///                                    * Also know as P3MsgQ:
///                                    * HBO FIFO (m2h):
///                                    * Message queue to vpro.hbo to vCache
///                                    ###
///     @ 0x00C10                      (P)
///     # 0x00C10 ctxPSER              
///               $CtxPSER             ctxPSER           REG          
///                                    ###
///                                    * Context of stream parser
///                                    ###
///     @ 0x00C34                      (W-)
///     #         # Stuffing bytes...
///               %% 96
///     @ 0x00C40                      (P)
///     # 0x00C40 ctxSYNP              
///               $CtxSYNP             ctxSYNP           REG          
///                                    ###
///                                    * Context of syntax processor
///                                    ###
///     @ 0x00C70                      (W-)
///     #         # Stuffing bytes...
///               %% 64
///     @ 0x00C78                      (P)
///     # 0x00C78 tagDS                
///               $LUT64b              tagDS             REG          
///                                    ###
///                                    * Receiving latest retired tag from data streamer
///                                    ###
///     @ 0x00C80                      (P)
///     # 0x00C80 DSMsgQ               
///               $LUT64b              DSMsgQ            REG      [16]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to data streamer
///                                    ###
///     @ 0x00D00                      (P)
///     # 0x00D00 tCtxOut              
///               $TCTX                tCtxOut           REG       [2]
///                                    ###
///                                    * Temporal contexts (data streamer) output
///                                    ###
///     @ 0x00D40                      (P)
///     # 0x00D40 tCtxIn               
///               $TCTX                tCtxIn            REG       [2]
///                                    ###
///                                    * Temporal contexts (data streamer) input
///                                    ###
///     @ 0x00D80                      (P)
///     # 0x00D80 ctxMPGx              
///               $CtxMPGx             ctxMPGx           REG          
///                                    ###
///                                    * Common context of MPEGx and vc1
///                                    ###
///     @ 0x00D90                      (P)
///     # 0x00D90 localPSER            
///               $VSLocal             localPSER         REG          
///                                    ###
///                                    * Local data area of stream parser
///                                    ###
///     @ 0x00E10                      (P)
///     # 0x00E10 localSYNP            
///               $VSLocal             localSYNP         REG          
///                                    ###
///                                    * Local data area of syntax processor
///                                    ###
///     @ 0x00E90                      (W-)
///     #         # Stuffing bytes...
///               %% 2944
///     @ 0x01000                      (P)
///     # 0x01000 P3TCQ                
///               $LUT64b              P3TCQ             REG     [128]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * TC queue to vpro.hbo to PCube
///                                    ###
///     @ 0x01400                      (P)
///     # 0x01400 DQCmdTable           
///               $LUT64b              DQCmdTable        REG      [32]
///     @ 0x01500                      (P)
///     # 0x01500 IntraCbpTable        
///               $LUT64b              IntraCbpTable     REG       [8]
///                                    ###
///                                    * UNSG8 intra_cbp_table[64].
///                                    * Intra cbp = intra_cbp_table[codenum]
///                                    ###
///     @ 0x01540                      (P)
///     # 0x01540 ChromaQPTable        
///               $LUT64b              ChromaQPTable     REG       [8]
///                                    ###
///                                    * UNSG8 chroma_qp_table[64]
///                                    * chroma qp = chroma_qp_table[qp]
///                                    ###
///     @ 0x01580                      (P)
///     # 0x01580 BTPMTable            
///               $LUT64b              BTPMTable         REG       [7]
///                                    ###
///                                    * Type, parition, mv_num, motion, table for B picture
///                                    ###
///     @ 0x015B8                      (P)
///     # 0x015B8 PTPMTable            
///               $LUT64b              PTPMTable         REG          
///                                    ###
///                                    * Type, parition, mv_num, table for P picture
///                                    ###
///     @ 0x015C0                      (P)
///     # 0x015C0 RunLvlbuf            
///               $LUT64b              RunLvlbuf         REG      [65]
///                                    ###
///                                    * 64 pair of run level last plus EOB
///                                    ###
///     @ 0x017C8                      (P)
///     # 0x017C8 SymMvScaler          
///               $LUT64b              SymMvScaler       REG          
///                                    ###
///                                    * UNSG32 SymBwScaler = SymMvScaler[fw_idx]
///                                    * fw_idx take 1 bit
///                                    ###
///     @ 0x017D0                      (P)
///     # 0x017D0 BwMvScaler           
///               $LUT64b              BwMvScaler        REG       [2]
///                                    ###
///                                    * UNSG32 bwScaler = bwMvScaler[nidx*2+xidx]
///                                    * each idx take 1 bits
///                                    ###
///     @ 0x017E0                      (P)
///     # 0x017E0 DirMvScaler          
///               $LUT64b              DirMvScaler       REG       [4]
///                                    ###
///                                    * [BlockDistanceFw, BlockDistanceBw, InvBlockDistanceRef, 0] = (UNSG 64) dirMvScaler[colocated_Idx];
///                                    * each idx take 2 bits
///                                    ###
///     @ 0x01800                      (P)
///     # 0x01800 FwMvScaler           
///               $LUT64b              FwMvScaler        REG       [8]
///                                    ###
///                                    * UNSG32 fwScaler = fwMvScaler[nidx*4+xidx]
///                                    * each idx take 2 bits
///                                    ###
///     @ 0x01840                      (P)
///     # 0x01840 IntraModeTab         
///               $LUT64b              IntraModeTab      REG      [16]
///                                    ###
///                                    * Table for intra pred mode look up
///                                    ###
///     @ 0x018C0                      (P)
///     # 0x018C0 WpScaleShiftTab      
///               $LUT64b              WpScaleShiftTab   REG       [2]
///     @ 0x018D0                      (P)
///     # 0x018D0 InvScan              
///               $LUT64b              InvScan           REG       [8]
///     @ 0x01910                      (P)
///     # 0x01910 FldInvScan           
///               $LUT64b              FldInvScan        REG       [8]
///     @ 0x01950                      (W-)
///     #         # Stuffing bytes...
///               %% 13696
///     @ 0x02000                      (P)
///     # 0x02000 VCMsgQ               
///               $LUT64b              VCMsgQ            REG     [128]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to vpro.hbo to PCube
///                                    ###
///     @ 0x02400                      (P)
///     # 0x02400 P3FopQ               
///               $LUT64b              P3FopQ            REG      [64]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * FOP queue to vpro.hbo to PCube
///                                    * End of mp4HalData
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:    9728B, bits:   60988b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_avsHalData
#define h_avsHalData (){}

    #define        avsHalData_stackPSER                        0x2000
    #define        avsHalData_stackSYNP                        0x3000
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_mbCtxQ                           0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_mbpropQ                          0x0A10
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_ctxPSER                          0x0C10
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_ctxSYNP                          0x0C40
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_tagDS                            0x0C78
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_DSMsgQ                           0x0C80
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_tCtxOut                          0x0D00
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_tCtxIn                           0x0D40
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_ctxMPGx                          0x0D80
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_localPSER                        0x0D90
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_localSYNP                        0x0E10
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_P3TCQ                            0x1000
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_DQCmdTable                       0x1400
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_IntraCbpTable                    0x1500
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_ChromaQPTable                    0x1540
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_BTPMTable                        0x1580
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_PTPMTable                        0x15B8
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_RunLvlbuf                        0x15C0
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_SymMvScaler                      0x17C8
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_BwMvScaler                       0x17D0
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_DirMvScaler                      0x17E0
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_FwMvScaler                       0x1800
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_IntraModeTab                     0x1840
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_WpScaleShiftTab                  0x18C0
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_InvScan                          0x18D0
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_FldInvScan                       0x1910
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_VCMsgQ                           0x2000
    ///////////////////////////////////////////////////////////
    #define     RA_avsHalData_P3FopQ                           0x2400
    ///////////////////////////////////////////////////////////

    typedef struct SIE_avsHalData {
    ///////////////////////////////////////////////////////////
              SIE_MBCTXQ                                       ie_mbCtxQ;
    ///////////////////////////////////////////////////////////
              SIE_MBPROP                                       ie_mbpropQ[8];
    ///////////////////////////////////////////////////////////
              SIE_CtxPSER                                      ie_ctxPSER;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC34                                    [12];
    ///////////////////////////////////////////////////////////
              SIE_CtxSYNP                                      ie_ctxSYNP;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC70                                    [8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_tagDS;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DSMsgQ[16];
    ///////////////////////////////////////////////////////////
              SIE_TCTX                                         ie_tCtxOut[2];
    ///////////////////////////////////////////////////////////
              SIE_TCTX                                         ie_tCtxIn[2];
    ///////////////////////////////////////////////////////////
              SIE_CtxMPGx                                      ie_ctxMPGx;
    ///////////////////////////////////////////////////////////
              SIE_VSLocal                                      ie_localPSER;
    ///////////////////////////////////////////////////////////
              SIE_VSLocal                                      ie_localSYNP;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxE90                                    [368];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_P3TCQ[128];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DQCmdTable[32];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_IntraCbpTable[8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_ChromaQPTable[8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_BTPMTable[7];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_PTPMTable;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_RunLvlbuf[65];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_SymMvScaler;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_BwMvScaler[2];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DirMvScaler[4];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_FwMvScaler[8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_IntraModeTab[16];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_WpScaleShiftTab[2];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_InvScan[8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_FldInvScan[8];
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx1950                                   [1712];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_VCMsgQ[128];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_P3FopQ[64];
    ///////////////////////////////////////////////////////////
    } SIE_avsHalData;

    ///////////////////////////////////////////////////////////
     SIGN32 avsHalData_drvrd(SIE_avsHalData *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 avsHalData_drvwr(SIE_avsHalData *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void avsHalData_reset(SIE_avsHalData *p);
     SIGN32 avsHalData_cmp  (SIE_avsHalData *p, SIE_avsHalData *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define avsHalData_check(p,pie,pfx,hLOG) avsHalData_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define avsHalData_print(p,    pfx,hLOG) avsHalData_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: avsHalData
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE temp                                     (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///               %unsigned 16 v_0i                      
///               %unsigned 16 v_1i                      
///               %unsigned 16 v_2i                      
///               %unsigned 16 v_3i                      
///               %unsigned 16 v_4i                      
///               %unsigned 16 v_5i                      
///               %unsigned 16 v_6i                      
///               %unsigned 16 v_7i                      
///               %unsigned 16 v_8i                      
///               %unsigned 16 v_9i                      
///               %unsigned 16 v_10i                     
///               %unsigned 16 v_11i                     
///               %unsigned 16 v_12i                     
///               %unsigned 16 v_13i                     
///               %unsigned 16 v_14i                     
///               %unsigned 16 v_15i                     
///               %unsigned 16 v_16i                     
///               %unsigned 16 v_17i                     
///               %unsigned 16 v_18i                     
///               %unsigned 16 v_19i                     
///               %unsigned 16 v_20i                     
///               %unsigned 16 v_21i                     
///               %unsigned 16 v_22i                     
///               %unsigned 16 v_23i                     
///               %unsigned 16 v_24i                     
///               %unsigned 16 v_25i                     
///               %unsigned 16 v_26i                     
///               %unsigned 16 v_27i                     
///               %unsigned 16 v_28i                     
///               %unsigned 16 v_29i                     
///               %unsigned 16 v_30i                     
///               %unsigned 16 v_31i                     
///               %unsigned 16 v_32i                     
///               %unsigned 16 v_33i                     
///               %unsigned 16 v_34i                     
///               %unsigned 16 v_35i                     
///               %unsigned 16 v_36i                     
///               %unsigned 16 v_37i                     
///               %unsigned 16 v_38i                     
///               %unsigned 16 v_39i                     
///               %unsigned 16 v_40i                     
///               %unsigned 16 v_41i                     
///               %unsigned 16 v_42i                     
///               %unsigned 16 v_43i                     
///               %unsigned 16 v_44i                     
///               %unsigned 16 v_45i                     
///               %unsigned 16 v_46i                     
///               %unsigned 16 v_47i                     
///               %unsigned 16 v_48i                     
///               %unsigned 16 v_49i                     
///               %unsigned 16 v_50i                     
///               %unsigned 16 v_51i                     
///               %unsigned 16 v_52i                     
///               %unsigned 16 v_53i                     
///               %unsigned 16 v_54i                     
///               %unsigned 16 v_55i                     
///               %unsigned 16 v_56i                     
///               %unsigned 16 v_57i                     
///               %unsigned 16 v_58i                     
///               %unsigned 16 v_59i                     
///               %unsigned 16 v_60i                     
///               %unsigned 16 v_61i                     
///               %unsigned 16 v_62i                     
///               %unsigned 16 v_63i                     
///               %unsigned 16 v_64i                     
///               %unsigned 16 v_65i                     
///               %unsigned 16 v_66i                     
///               %unsigned 16 v_67i                     
///               %unsigned 16 v_68i                     
///               %unsigned 16 v_69i                     
///               %unsigned 16 v_70i                     
///               %unsigned 16 v_71i                     
///               %unsigned 16 v_72i                     
///               %unsigned 16 v_73i                     
///               %unsigned 16 v_74i                     
///               %unsigned 16 v_75i                     
///               %unsigned 16 v_76i                     
///               %unsigned 16 v_77i                     
///               %unsigned 16 v_78i                     
///               %unsigned 16 v_79i                     
///               %unsigned 16 v_80i                     
///               %unsigned 16 v_81i                     
///               %unsigned 16 v_82i                     
///               %unsigned 16 v_83i                     
///               %unsigned 16 v_84i                     
///               %unsigned 16 v_85i                     
///               %unsigned 16 v_86i                     
///               %unsigned 16 v_87i                     
///               %unsigned 16 v_88i                     
///               %unsigned 16 v_89i                     
///               %unsigned 16 v_90i                     
///               %unsigned 16 v_91i                     
///               %unsigned 16 v_92i                     
///               %unsigned 16 v_93i                     
///               %unsigned 16 v_94i                     
///               %unsigned 16 v_95i                     
///               %unsigned 16 v_96i                     
///               %unsigned 16 v_97i                     
///               %unsigned 16 v_98i                     
///               %unsigned 16 v_99i                     
///               %unsigned 16 v_100i                    
///               %unsigned 16 v_101i                    
///               %unsigned 16 v_102i                    
///               %unsigned 16 v_103i                    
///               %unsigned 16 v_104i                    
///               %unsigned 16 v_105i                    
///               %unsigned 16 v_106i                    
///               %unsigned 16 v_107i                    
///               %unsigned 16 v_108i                    
///               %unsigned 16 v_109i                    
///               %unsigned 16 v_110i                    
///               %unsigned 16 v_111i                    
///               %unsigned 16 v_112i                    
///               %unsigned 16 v_113i                    
///               %unsigned 16 v_114i                    
///               %unsigned 16 v_115i                    
///               %unsigned 16 v_116i                    
///               %unsigned 16 v_117i                    
///               %unsigned 16 v_118i                    
///               %unsigned 16 v_119i                    
///               %unsigned 16 v_120i                    
///               %unsigned 16 v_121i                    
///               %unsigned 16 v_122i                    
///               %unsigned 16 v_123i                    
///               %unsigned 16 v_124i                    
///               %unsigned 16 v_125i                    
///               %unsigned 16 v_126i                    
///               %unsigned 16 v_127i                    
///               %unsigned 16 v_128i                    
///               %unsigned 16 v_129i                    
///               %unsigned 16 v_130i                    
///               %unsigned 16 v_131i                    
///               %unsigned 16 v_132i                    
///               %unsigned 16 v_133i                    
///               %unsigned 16 v_134i                    
///               %unsigned 16 v_135i                    
///               %unsigned 16 v_136i                    
///               %unsigned 16 v_137i                    
///               %unsigned 16 v_138i                    
///               %unsigned 16 v_139i                    
///               %unsigned 16 v_140i                    
///               %unsigned 16 v_141i                    
///               %unsigned 16 v_142i                    
///               %unsigned 16 v_143i                    
///               %unsigned 16 v_144i                    
///               %unsigned 16 v_145i                    
///               %unsigned 16 v_146i                    
///               %unsigned 16 v_147i                    
///               %unsigned 16 v_148i                    
///               %unsigned 16 v_149i                    
///               %unsigned 16 v_150i                    
///               %unsigned 16 v_151i                    
///               %unsigned 16 v_152i                    
///               %unsigned 16 v_153i                    
///               %unsigned 16 v_154i                    
///               %unsigned 16 v_155i                    
///               %unsigned 16 v_156i                    
///               %unsigned 16 v_157i                    
///               %unsigned 16 v_158i                    
///               %unsigned 16 v_159i                    
///               %unsigned 16 v_160i                    
///               %unsigned 16 v_161i                    
///               %unsigned 16 v_162i                    
///               %unsigned 16 v_163i                    
///               %unsigned 16 v_164i                    
///               %unsigned 16 v_165i                    
///               %unsigned 16 v_166i                    
///               %unsigned 16 v_167i                    
///               %unsigned 16 v_168i                    
///               %unsigned 16 v_169i                    
///               %unsigned 16 v_170i                    
///               %unsigned 16 v_171i                    
///               %unsigned 16 v_172i                    
///               %unsigned 16 v_173i                    
///               %unsigned 16 v_174i                    
///               %unsigned 16 v_175i                    
///               %unsigned 16 v_176i                    
///               %unsigned 16 v_177i                    
///               %unsigned 16 v_178i                    
///               %unsigned 16 v_179i                    
///               %unsigned 16 v_180i                    
///               %unsigned 16 v_181i                    
///               %unsigned 16 v_182i                    
///               %unsigned 16 v_183i                    
///               %unsigned 16 v_184i                    
///               %unsigned 16 v_185i                    
///               %unsigned 16 v_186i                    
///               %unsigned 16 v_187i                    
///               %unsigned 16 v_188i                    
///               %unsigned 16 v_189i                    
///               %unsigned 16 v_190i                    
///               %unsigned 16 v_191i                    
///               %unsigned 16 v_192i                    
///               %unsigned 16 v_193i                    
///               %unsigned 16 v_194i                    
///               %unsigned 16 v_195i                    
///               %unsigned 16 v_196i                    
///               %unsigned 16 v_197i                    
///               %unsigned 16 v_198i                    
///               %unsigned 16 v_199i                    
///               %unsigned 16 v_200i                    
///               %unsigned 16 v_201i                    
///               %unsigned 16 v_202i                    
///               %unsigned 16 v_203i                    
///               %unsigned 16 v_204i                    
///               %unsigned 16 v_205i                    
///               %unsigned 16 v_206i                    
///               %unsigned 16 v_207i                    
///               %unsigned 16 v_208i                    
///               %unsigned 16 v_209i                    
///               %unsigned 16 v_210i                    
///               %unsigned 16 v_211i                    
///               %unsigned 16 v_212i                    
///               %unsigned 16 v_213i                    
///               %unsigned 16 v_214i                    
///               %unsigned 16 v_215i                    
///               %unsigned 16 v_216i                    
///               %unsigned 16 v_217i                    
///               %unsigned 16 v_218i                    
///               %unsigned 16 v_219i                    
///               %unsigned 16 v_220i                    
///               %unsigned 16 v_221i                    
///               %unsigned 16 v_222i                    
///               %unsigned 16 v_223i                    
///               %unsigned 16 v_224i                    
///               %unsigned 16 v_225i                    
///               %unsigned 16 v_226i                    
///               %unsigned 16 v_227i                    
///               %unsigned 16 v_228i                    
///               %unsigned 16 v_229i                    
///               %unsigned 16 v_230i                    
///               %unsigned 16 v_231i                    
///               %unsigned 16 v_232i                    
///               %unsigned 16 v_233i                    
///               %unsigned 16 v_234i                    
///               %unsigned 16 v_235i                    
///               %unsigned 16 v_236i                    
///               %unsigned 16 v_237i                    
///               %unsigned 16 v_238i                    
///               %unsigned 16 v_239i                    
///               %unsigned 16 v_240i                    
///               %unsigned 16 v_241i                    
///               %unsigned 16 v_242i                    
///               %unsigned 16 v_243i                    
///               %unsigned 16 v_244i                    
///               %unsigned 16 v_245i                    
///               %unsigned 16 v_246i                    
///               %unsigned 16 v_247i                    
///               %unsigned 16 v_248i                    
///               %unsigned 16 v_249i                    
///               %unsigned 16 v_250i                    
///               %unsigned 16 v_251i                    
///               %unsigned 16 v_252i                    
///               %unsigned 16 v_253i                    
///               %unsigned 16 v_254i                    
///               %unsigned 16 v_255i                    
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     512B, bits:    4096b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_temp
#define h_temp (){}

    #define     BA_temp_v_0i                                   0x0000
    #define     B16temp_v_0i                                   0x0000
    #define   LSb32temp_v_0i                                      0
    #define   LSb16temp_v_0i                                      0
    #define       btemp_v_0i                                   16
    #define   MSK32temp_v_0i                                      0x0000FFFF

    #define     BA_temp_v_1i                                   0x0002
    #define     B16temp_v_1i                                   0x0002
    #define   LSb32temp_v_1i                                      16
    #define   LSb16temp_v_1i                                      0
    #define       btemp_v_1i                                   16
    #define   MSK32temp_v_1i                                      0xFFFF0000

    #define     BA_temp_v_2i                                   0x0004
    #define     B16temp_v_2i                                   0x0004
    #define   LSb32temp_v_2i                                      0
    #define   LSb16temp_v_2i                                      0
    #define       btemp_v_2i                                   16
    #define   MSK32temp_v_2i                                      0x0000FFFF

    #define     BA_temp_v_3i                                   0x0006
    #define     B16temp_v_3i                                   0x0006
    #define   LSb32temp_v_3i                                      16
    #define   LSb16temp_v_3i                                      0
    #define       btemp_v_3i                                   16
    #define   MSK32temp_v_3i                                      0xFFFF0000

    #define     BA_temp_v_4i                                   0x0008
    #define     B16temp_v_4i                                   0x0008
    #define   LSb32temp_v_4i                                      0
    #define   LSb16temp_v_4i                                      0
    #define       btemp_v_4i                                   16
    #define   MSK32temp_v_4i                                      0x0000FFFF

    #define     BA_temp_v_5i                                   0x000A
    #define     B16temp_v_5i                                   0x000A
    #define   LSb32temp_v_5i                                      16
    #define   LSb16temp_v_5i                                      0
    #define       btemp_v_5i                                   16
    #define   MSK32temp_v_5i                                      0xFFFF0000

    #define     BA_temp_v_6i                                   0x000C
    #define     B16temp_v_6i                                   0x000C
    #define   LSb32temp_v_6i                                      0
    #define   LSb16temp_v_6i                                      0
    #define       btemp_v_6i                                   16
    #define   MSK32temp_v_6i                                      0x0000FFFF

    #define     BA_temp_v_7i                                   0x000E
    #define     B16temp_v_7i                                   0x000E
    #define   LSb32temp_v_7i                                      16
    #define   LSb16temp_v_7i                                      0
    #define       btemp_v_7i                                   16
    #define   MSK32temp_v_7i                                      0xFFFF0000

    #define     BA_temp_v_8i                                   0x0010
    #define     B16temp_v_8i                                   0x0010
    #define   LSb32temp_v_8i                                      0
    #define   LSb16temp_v_8i                                      0
    #define       btemp_v_8i                                   16
    #define   MSK32temp_v_8i                                      0x0000FFFF

    #define     BA_temp_v_9i                                   0x0012
    #define     B16temp_v_9i                                   0x0012
    #define   LSb32temp_v_9i                                      16
    #define   LSb16temp_v_9i                                      0
    #define       btemp_v_9i                                   16
    #define   MSK32temp_v_9i                                      0xFFFF0000

    #define     BA_temp_v_10i                                  0x0014
    #define     B16temp_v_10i                                  0x0014
    #define   LSb32temp_v_10i                                     0
    #define   LSb16temp_v_10i                                     0
    #define       btemp_v_10i                                  16
    #define   MSK32temp_v_10i                                     0x0000FFFF

    #define     BA_temp_v_11i                                  0x0016
    #define     B16temp_v_11i                                  0x0016
    #define   LSb32temp_v_11i                                     16
    #define   LSb16temp_v_11i                                     0
    #define       btemp_v_11i                                  16
    #define   MSK32temp_v_11i                                     0xFFFF0000

    #define     BA_temp_v_12i                                  0x0018
    #define     B16temp_v_12i                                  0x0018
    #define   LSb32temp_v_12i                                     0
    #define   LSb16temp_v_12i                                     0
    #define       btemp_v_12i                                  16
    #define   MSK32temp_v_12i                                     0x0000FFFF

    #define     BA_temp_v_13i                                  0x001A
    #define     B16temp_v_13i                                  0x001A
    #define   LSb32temp_v_13i                                     16
    #define   LSb16temp_v_13i                                     0
    #define       btemp_v_13i                                  16
    #define   MSK32temp_v_13i                                     0xFFFF0000

    #define     BA_temp_v_14i                                  0x001C
    #define     B16temp_v_14i                                  0x001C
    #define   LSb32temp_v_14i                                     0
    #define   LSb16temp_v_14i                                     0
    #define       btemp_v_14i                                  16
    #define   MSK32temp_v_14i                                     0x0000FFFF

    #define     BA_temp_v_15i                                  0x001E
    #define     B16temp_v_15i                                  0x001E
    #define   LSb32temp_v_15i                                     16
    #define   LSb16temp_v_15i                                     0
    #define       btemp_v_15i                                  16
    #define   MSK32temp_v_15i                                     0xFFFF0000

    #define     BA_temp_v_16i                                  0x0020
    #define     B16temp_v_16i                                  0x0020
    #define   LSb32temp_v_16i                                     0
    #define   LSb16temp_v_16i                                     0
    #define       btemp_v_16i                                  16
    #define   MSK32temp_v_16i                                     0x0000FFFF

    #define     BA_temp_v_17i                                  0x0022
    #define     B16temp_v_17i                                  0x0022
    #define   LSb32temp_v_17i                                     16
    #define   LSb16temp_v_17i                                     0
    #define       btemp_v_17i                                  16
    #define   MSK32temp_v_17i                                     0xFFFF0000

    #define     BA_temp_v_18i                                  0x0024
    #define     B16temp_v_18i                                  0x0024
    #define   LSb32temp_v_18i                                     0
    #define   LSb16temp_v_18i                                     0
    #define       btemp_v_18i                                  16
    #define   MSK32temp_v_18i                                     0x0000FFFF

    #define     BA_temp_v_19i                                  0x0026
    #define     B16temp_v_19i                                  0x0026
    #define   LSb32temp_v_19i                                     16
    #define   LSb16temp_v_19i                                     0
    #define       btemp_v_19i                                  16
    #define   MSK32temp_v_19i                                     0xFFFF0000

    #define     BA_temp_v_20i                                  0x0028
    #define     B16temp_v_20i                                  0x0028
    #define   LSb32temp_v_20i                                     0
    #define   LSb16temp_v_20i                                     0
    #define       btemp_v_20i                                  16
    #define   MSK32temp_v_20i                                     0x0000FFFF

    #define     BA_temp_v_21i                                  0x002A
    #define     B16temp_v_21i                                  0x002A
    #define   LSb32temp_v_21i                                     16
    #define   LSb16temp_v_21i                                     0
    #define       btemp_v_21i                                  16
    #define   MSK32temp_v_21i                                     0xFFFF0000

    #define     BA_temp_v_22i                                  0x002C
    #define     B16temp_v_22i                                  0x002C
    #define   LSb32temp_v_22i                                     0
    #define   LSb16temp_v_22i                                     0
    #define       btemp_v_22i                                  16
    #define   MSK32temp_v_22i                                     0x0000FFFF

    #define     BA_temp_v_23i                                  0x002E
    #define     B16temp_v_23i                                  0x002E
    #define   LSb32temp_v_23i                                     16
    #define   LSb16temp_v_23i                                     0
    #define       btemp_v_23i                                  16
    #define   MSK32temp_v_23i                                     0xFFFF0000

    #define     BA_temp_v_24i                                  0x0030
    #define     B16temp_v_24i                                  0x0030
    #define   LSb32temp_v_24i                                     0
    #define   LSb16temp_v_24i                                     0
    #define       btemp_v_24i                                  16
    #define   MSK32temp_v_24i                                     0x0000FFFF

    #define     BA_temp_v_25i                                  0x0032
    #define     B16temp_v_25i                                  0x0032
    #define   LSb32temp_v_25i                                     16
    #define   LSb16temp_v_25i                                     0
    #define       btemp_v_25i                                  16
    #define   MSK32temp_v_25i                                     0xFFFF0000

    #define     BA_temp_v_26i                                  0x0034
    #define     B16temp_v_26i                                  0x0034
    #define   LSb32temp_v_26i                                     0
    #define   LSb16temp_v_26i                                     0
    #define       btemp_v_26i                                  16
    #define   MSK32temp_v_26i                                     0x0000FFFF

    #define     BA_temp_v_27i                                  0x0036
    #define     B16temp_v_27i                                  0x0036
    #define   LSb32temp_v_27i                                     16
    #define   LSb16temp_v_27i                                     0
    #define       btemp_v_27i                                  16
    #define   MSK32temp_v_27i                                     0xFFFF0000

    #define     BA_temp_v_28i                                  0x0038
    #define     B16temp_v_28i                                  0x0038
    #define   LSb32temp_v_28i                                     0
    #define   LSb16temp_v_28i                                     0
    #define       btemp_v_28i                                  16
    #define   MSK32temp_v_28i                                     0x0000FFFF

    #define     BA_temp_v_29i                                  0x003A
    #define     B16temp_v_29i                                  0x003A
    #define   LSb32temp_v_29i                                     16
    #define   LSb16temp_v_29i                                     0
    #define       btemp_v_29i                                  16
    #define   MSK32temp_v_29i                                     0xFFFF0000

    #define     BA_temp_v_30i                                  0x003C
    #define     B16temp_v_30i                                  0x003C
    #define   LSb32temp_v_30i                                     0
    #define   LSb16temp_v_30i                                     0
    #define       btemp_v_30i                                  16
    #define   MSK32temp_v_30i                                     0x0000FFFF

    #define     BA_temp_v_31i                                  0x003E
    #define     B16temp_v_31i                                  0x003E
    #define   LSb32temp_v_31i                                     16
    #define   LSb16temp_v_31i                                     0
    #define       btemp_v_31i                                  16
    #define   MSK32temp_v_31i                                     0xFFFF0000

    #define     BA_temp_v_32i                                  0x0040
    #define     B16temp_v_32i                                  0x0040
    #define   LSb32temp_v_32i                                     0
    #define   LSb16temp_v_32i                                     0
    #define       btemp_v_32i                                  16
    #define   MSK32temp_v_32i                                     0x0000FFFF

    #define     BA_temp_v_33i                                  0x0042
    #define     B16temp_v_33i                                  0x0042
    #define   LSb32temp_v_33i                                     16
    #define   LSb16temp_v_33i                                     0
    #define       btemp_v_33i                                  16
    #define   MSK32temp_v_33i                                     0xFFFF0000

    #define     BA_temp_v_34i                                  0x0044
    #define     B16temp_v_34i                                  0x0044
    #define   LSb32temp_v_34i                                     0
    #define   LSb16temp_v_34i                                     0
    #define       btemp_v_34i                                  16
    #define   MSK32temp_v_34i                                     0x0000FFFF

    #define     BA_temp_v_35i                                  0x0046
    #define     B16temp_v_35i                                  0x0046
    #define   LSb32temp_v_35i                                     16
    #define   LSb16temp_v_35i                                     0
    #define       btemp_v_35i                                  16
    #define   MSK32temp_v_35i                                     0xFFFF0000

    #define     BA_temp_v_36i                                  0x0048
    #define     B16temp_v_36i                                  0x0048
    #define   LSb32temp_v_36i                                     0
    #define   LSb16temp_v_36i                                     0
    #define       btemp_v_36i                                  16
    #define   MSK32temp_v_36i                                     0x0000FFFF

    #define     BA_temp_v_37i                                  0x004A
    #define     B16temp_v_37i                                  0x004A
    #define   LSb32temp_v_37i                                     16
    #define   LSb16temp_v_37i                                     0
    #define       btemp_v_37i                                  16
    #define   MSK32temp_v_37i                                     0xFFFF0000

    #define     BA_temp_v_38i                                  0x004C
    #define     B16temp_v_38i                                  0x004C
    #define   LSb32temp_v_38i                                     0
    #define   LSb16temp_v_38i                                     0
    #define       btemp_v_38i                                  16
    #define   MSK32temp_v_38i                                     0x0000FFFF

    #define     BA_temp_v_39i                                  0x004E
    #define     B16temp_v_39i                                  0x004E
    #define   LSb32temp_v_39i                                     16
    #define   LSb16temp_v_39i                                     0
    #define       btemp_v_39i                                  16
    #define   MSK32temp_v_39i                                     0xFFFF0000

    #define     BA_temp_v_40i                                  0x0050
    #define     B16temp_v_40i                                  0x0050
    #define   LSb32temp_v_40i                                     0
    #define   LSb16temp_v_40i                                     0
    #define       btemp_v_40i                                  16
    #define   MSK32temp_v_40i                                     0x0000FFFF

    #define     BA_temp_v_41i                                  0x0052
    #define     B16temp_v_41i                                  0x0052
    #define   LSb32temp_v_41i                                     16
    #define   LSb16temp_v_41i                                     0
    #define       btemp_v_41i                                  16
    #define   MSK32temp_v_41i                                     0xFFFF0000

    #define     BA_temp_v_42i                                  0x0054
    #define     B16temp_v_42i                                  0x0054
    #define   LSb32temp_v_42i                                     0
    #define   LSb16temp_v_42i                                     0
    #define       btemp_v_42i                                  16
    #define   MSK32temp_v_42i                                     0x0000FFFF

    #define     BA_temp_v_43i                                  0x0056
    #define     B16temp_v_43i                                  0x0056
    #define   LSb32temp_v_43i                                     16
    #define   LSb16temp_v_43i                                     0
    #define       btemp_v_43i                                  16
    #define   MSK32temp_v_43i                                     0xFFFF0000

    #define     BA_temp_v_44i                                  0x0058
    #define     B16temp_v_44i                                  0x0058
    #define   LSb32temp_v_44i                                     0
    #define   LSb16temp_v_44i                                     0
    #define       btemp_v_44i                                  16
    #define   MSK32temp_v_44i                                     0x0000FFFF

    #define     BA_temp_v_45i                                  0x005A
    #define     B16temp_v_45i                                  0x005A
    #define   LSb32temp_v_45i                                     16
    #define   LSb16temp_v_45i                                     0
    #define       btemp_v_45i                                  16
    #define   MSK32temp_v_45i                                     0xFFFF0000

    #define     BA_temp_v_46i                                  0x005C
    #define     B16temp_v_46i                                  0x005C
    #define   LSb32temp_v_46i                                     0
    #define   LSb16temp_v_46i                                     0
    #define       btemp_v_46i                                  16
    #define   MSK32temp_v_46i                                     0x0000FFFF

    #define     BA_temp_v_47i                                  0x005E
    #define     B16temp_v_47i                                  0x005E
    #define   LSb32temp_v_47i                                     16
    #define   LSb16temp_v_47i                                     0
    #define       btemp_v_47i                                  16
    #define   MSK32temp_v_47i                                     0xFFFF0000

    #define     BA_temp_v_48i                                  0x0060
    #define     B16temp_v_48i                                  0x0060
    #define   LSb32temp_v_48i                                     0
    #define   LSb16temp_v_48i                                     0
    #define       btemp_v_48i                                  16
    #define   MSK32temp_v_48i                                     0x0000FFFF

    #define     BA_temp_v_49i                                  0x0062
    #define     B16temp_v_49i                                  0x0062
    #define   LSb32temp_v_49i                                     16
    #define   LSb16temp_v_49i                                     0
    #define       btemp_v_49i                                  16
    #define   MSK32temp_v_49i                                     0xFFFF0000

    #define     BA_temp_v_50i                                  0x0064
    #define     B16temp_v_50i                                  0x0064
    #define   LSb32temp_v_50i                                     0
    #define   LSb16temp_v_50i                                     0
    #define       btemp_v_50i                                  16
    #define   MSK32temp_v_50i                                     0x0000FFFF

    #define     BA_temp_v_51i                                  0x0066
    #define     B16temp_v_51i                                  0x0066
    #define   LSb32temp_v_51i                                     16
    #define   LSb16temp_v_51i                                     0
    #define       btemp_v_51i                                  16
    #define   MSK32temp_v_51i                                     0xFFFF0000

    #define     BA_temp_v_52i                                  0x0068
    #define     B16temp_v_52i                                  0x0068
    #define   LSb32temp_v_52i                                     0
    #define   LSb16temp_v_52i                                     0
    #define       btemp_v_52i                                  16
    #define   MSK32temp_v_52i                                     0x0000FFFF

    #define     BA_temp_v_53i                                  0x006A
    #define     B16temp_v_53i                                  0x006A
    #define   LSb32temp_v_53i                                     16
    #define   LSb16temp_v_53i                                     0
    #define       btemp_v_53i                                  16
    #define   MSK32temp_v_53i                                     0xFFFF0000

    #define     BA_temp_v_54i                                  0x006C
    #define     B16temp_v_54i                                  0x006C
    #define   LSb32temp_v_54i                                     0
    #define   LSb16temp_v_54i                                     0
    #define       btemp_v_54i                                  16
    #define   MSK32temp_v_54i                                     0x0000FFFF

    #define     BA_temp_v_55i                                  0x006E
    #define     B16temp_v_55i                                  0x006E
    #define   LSb32temp_v_55i                                     16
    #define   LSb16temp_v_55i                                     0
    #define       btemp_v_55i                                  16
    #define   MSK32temp_v_55i                                     0xFFFF0000

    #define     BA_temp_v_56i                                  0x0070
    #define     B16temp_v_56i                                  0x0070
    #define   LSb32temp_v_56i                                     0
    #define   LSb16temp_v_56i                                     0
    #define       btemp_v_56i                                  16
    #define   MSK32temp_v_56i                                     0x0000FFFF

    #define     BA_temp_v_57i                                  0x0072
    #define     B16temp_v_57i                                  0x0072
    #define   LSb32temp_v_57i                                     16
    #define   LSb16temp_v_57i                                     0
    #define       btemp_v_57i                                  16
    #define   MSK32temp_v_57i                                     0xFFFF0000

    #define     BA_temp_v_58i                                  0x0074
    #define     B16temp_v_58i                                  0x0074
    #define   LSb32temp_v_58i                                     0
    #define   LSb16temp_v_58i                                     0
    #define       btemp_v_58i                                  16
    #define   MSK32temp_v_58i                                     0x0000FFFF

    #define     BA_temp_v_59i                                  0x0076
    #define     B16temp_v_59i                                  0x0076
    #define   LSb32temp_v_59i                                     16
    #define   LSb16temp_v_59i                                     0
    #define       btemp_v_59i                                  16
    #define   MSK32temp_v_59i                                     0xFFFF0000

    #define     BA_temp_v_60i                                  0x0078
    #define     B16temp_v_60i                                  0x0078
    #define   LSb32temp_v_60i                                     0
    #define   LSb16temp_v_60i                                     0
    #define       btemp_v_60i                                  16
    #define   MSK32temp_v_60i                                     0x0000FFFF

    #define     BA_temp_v_61i                                  0x007A
    #define     B16temp_v_61i                                  0x007A
    #define   LSb32temp_v_61i                                     16
    #define   LSb16temp_v_61i                                     0
    #define       btemp_v_61i                                  16
    #define   MSK32temp_v_61i                                     0xFFFF0000

    #define     BA_temp_v_62i                                  0x007C
    #define     B16temp_v_62i                                  0x007C
    #define   LSb32temp_v_62i                                     0
    #define   LSb16temp_v_62i                                     0
    #define       btemp_v_62i                                  16
    #define   MSK32temp_v_62i                                     0x0000FFFF

    #define     BA_temp_v_63i                                  0x007E
    #define     B16temp_v_63i                                  0x007E
    #define   LSb32temp_v_63i                                     16
    #define   LSb16temp_v_63i                                     0
    #define       btemp_v_63i                                  16
    #define   MSK32temp_v_63i                                     0xFFFF0000

    #define     BA_temp_v_64i                                  0x0080
    #define     B16temp_v_64i                                  0x0080
    #define   LSb32temp_v_64i                                     0
    #define   LSb16temp_v_64i                                     0
    #define       btemp_v_64i                                  16
    #define   MSK32temp_v_64i                                     0x0000FFFF

    #define     BA_temp_v_65i                                  0x0082
    #define     B16temp_v_65i                                  0x0082
    #define   LSb32temp_v_65i                                     16
    #define   LSb16temp_v_65i                                     0
    #define       btemp_v_65i                                  16
    #define   MSK32temp_v_65i                                     0xFFFF0000

    #define     BA_temp_v_66i                                  0x0084
    #define     B16temp_v_66i                                  0x0084
    #define   LSb32temp_v_66i                                     0
    #define   LSb16temp_v_66i                                     0
    #define       btemp_v_66i                                  16
    #define   MSK32temp_v_66i                                     0x0000FFFF

    #define     BA_temp_v_67i                                  0x0086
    #define     B16temp_v_67i                                  0x0086
    #define   LSb32temp_v_67i                                     16
    #define   LSb16temp_v_67i                                     0
    #define       btemp_v_67i                                  16
    #define   MSK32temp_v_67i                                     0xFFFF0000

    #define     BA_temp_v_68i                                  0x0088
    #define     B16temp_v_68i                                  0x0088
    #define   LSb32temp_v_68i                                     0
    #define   LSb16temp_v_68i                                     0
    #define       btemp_v_68i                                  16
    #define   MSK32temp_v_68i                                     0x0000FFFF

    #define     BA_temp_v_69i                                  0x008A
    #define     B16temp_v_69i                                  0x008A
    #define   LSb32temp_v_69i                                     16
    #define   LSb16temp_v_69i                                     0
    #define       btemp_v_69i                                  16
    #define   MSK32temp_v_69i                                     0xFFFF0000

    #define     BA_temp_v_70i                                  0x008C
    #define     B16temp_v_70i                                  0x008C
    #define   LSb32temp_v_70i                                     0
    #define   LSb16temp_v_70i                                     0
    #define       btemp_v_70i                                  16
    #define   MSK32temp_v_70i                                     0x0000FFFF

    #define     BA_temp_v_71i                                  0x008E
    #define     B16temp_v_71i                                  0x008E
    #define   LSb32temp_v_71i                                     16
    #define   LSb16temp_v_71i                                     0
    #define       btemp_v_71i                                  16
    #define   MSK32temp_v_71i                                     0xFFFF0000

    #define     BA_temp_v_72i                                  0x0090
    #define     B16temp_v_72i                                  0x0090
    #define   LSb32temp_v_72i                                     0
    #define   LSb16temp_v_72i                                     0
    #define       btemp_v_72i                                  16
    #define   MSK32temp_v_72i                                     0x0000FFFF

    #define     BA_temp_v_73i                                  0x0092
    #define     B16temp_v_73i                                  0x0092
    #define   LSb32temp_v_73i                                     16
    #define   LSb16temp_v_73i                                     0
    #define       btemp_v_73i                                  16
    #define   MSK32temp_v_73i                                     0xFFFF0000

    #define     BA_temp_v_74i                                  0x0094
    #define     B16temp_v_74i                                  0x0094
    #define   LSb32temp_v_74i                                     0
    #define   LSb16temp_v_74i                                     0
    #define       btemp_v_74i                                  16
    #define   MSK32temp_v_74i                                     0x0000FFFF

    #define     BA_temp_v_75i                                  0x0096
    #define     B16temp_v_75i                                  0x0096
    #define   LSb32temp_v_75i                                     16
    #define   LSb16temp_v_75i                                     0
    #define       btemp_v_75i                                  16
    #define   MSK32temp_v_75i                                     0xFFFF0000

    #define     BA_temp_v_76i                                  0x0098
    #define     B16temp_v_76i                                  0x0098
    #define   LSb32temp_v_76i                                     0
    #define   LSb16temp_v_76i                                     0
    #define       btemp_v_76i                                  16
    #define   MSK32temp_v_76i                                     0x0000FFFF

    #define     BA_temp_v_77i                                  0x009A
    #define     B16temp_v_77i                                  0x009A
    #define   LSb32temp_v_77i                                     16
    #define   LSb16temp_v_77i                                     0
    #define       btemp_v_77i                                  16
    #define   MSK32temp_v_77i                                     0xFFFF0000

    #define     BA_temp_v_78i                                  0x009C
    #define     B16temp_v_78i                                  0x009C
    #define   LSb32temp_v_78i                                     0
    #define   LSb16temp_v_78i                                     0
    #define       btemp_v_78i                                  16
    #define   MSK32temp_v_78i                                     0x0000FFFF

    #define     BA_temp_v_79i                                  0x009E
    #define     B16temp_v_79i                                  0x009E
    #define   LSb32temp_v_79i                                     16
    #define   LSb16temp_v_79i                                     0
    #define       btemp_v_79i                                  16
    #define   MSK32temp_v_79i                                     0xFFFF0000

    #define     BA_temp_v_80i                                  0x00A0
    #define     B16temp_v_80i                                  0x00A0
    #define   LSb32temp_v_80i                                     0
    #define   LSb16temp_v_80i                                     0
    #define       btemp_v_80i                                  16
    #define   MSK32temp_v_80i                                     0x0000FFFF

    #define     BA_temp_v_81i                                  0x00A2
    #define     B16temp_v_81i                                  0x00A2
    #define   LSb32temp_v_81i                                     16
    #define   LSb16temp_v_81i                                     0
    #define       btemp_v_81i                                  16
    #define   MSK32temp_v_81i                                     0xFFFF0000

    #define     BA_temp_v_82i                                  0x00A4
    #define     B16temp_v_82i                                  0x00A4
    #define   LSb32temp_v_82i                                     0
    #define   LSb16temp_v_82i                                     0
    #define       btemp_v_82i                                  16
    #define   MSK32temp_v_82i                                     0x0000FFFF

    #define     BA_temp_v_83i                                  0x00A6
    #define     B16temp_v_83i                                  0x00A6
    #define   LSb32temp_v_83i                                     16
    #define   LSb16temp_v_83i                                     0
    #define       btemp_v_83i                                  16
    #define   MSK32temp_v_83i                                     0xFFFF0000

    #define     BA_temp_v_84i                                  0x00A8
    #define     B16temp_v_84i                                  0x00A8
    #define   LSb32temp_v_84i                                     0
    #define   LSb16temp_v_84i                                     0
    #define       btemp_v_84i                                  16
    #define   MSK32temp_v_84i                                     0x0000FFFF

    #define     BA_temp_v_85i                                  0x00AA
    #define     B16temp_v_85i                                  0x00AA
    #define   LSb32temp_v_85i                                     16
    #define   LSb16temp_v_85i                                     0
    #define       btemp_v_85i                                  16
    #define   MSK32temp_v_85i                                     0xFFFF0000

    #define     BA_temp_v_86i                                  0x00AC
    #define     B16temp_v_86i                                  0x00AC
    #define   LSb32temp_v_86i                                     0
    #define   LSb16temp_v_86i                                     0
    #define       btemp_v_86i                                  16
    #define   MSK32temp_v_86i                                     0x0000FFFF

    #define     BA_temp_v_87i                                  0x00AE
    #define     B16temp_v_87i                                  0x00AE
    #define   LSb32temp_v_87i                                     16
    #define   LSb16temp_v_87i                                     0
    #define       btemp_v_87i                                  16
    #define   MSK32temp_v_87i                                     0xFFFF0000

    #define     BA_temp_v_88i                                  0x00B0
    #define     B16temp_v_88i                                  0x00B0
    #define   LSb32temp_v_88i                                     0
    #define   LSb16temp_v_88i                                     0
    #define       btemp_v_88i                                  16
    #define   MSK32temp_v_88i                                     0x0000FFFF

    #define     BA_temp_v_89i                                  0x00B2
    #define     B16temp_v_89i                                  0x00B2
    #define   LSb32temp_v_89i                                     16
    #define   LSb16temp_v_89i                                     0
    #define       btemp_v_89i                                  16
    #define   MSK32temp_v_89i                                     0xFFFF0000

    #define     BA_temp_v_90i                                  0x00B4
    #define     B16temp_v_90i                                  0x00B4
    #define   LSb32temp_v_90i                                     0
    #define   LSb16temp_v_90i                                     0
    #define       btemp_v_90i                                  16
    #define   MSK32temp_v_90i                                     0x0000FFFF

    #define     BA_temp_v_91i                                  0x00B6
    #define     B16temp_v_91i                                  0x00B6
    #define   LSb32temp_v_91i                                     16
    #define   LSb16temp_v_91i                                     0
    #define       btemp_v_91i                                  16
    #define   MSK32temp_v_91i                                     0xFFFF0000

    #define     BA_temp_v_92i                                  0x00B8
    #define     B16temp_v_92i                                  0x00B8
    #define   LSb32temp_v_92i                                     0
    #define   LSb16temp_v_92i                                     0
    #define       btemp_v_92i                                  16
    #define   MSK32temp_v_92i                                     0x0000FFFF

    #define     BA_temp_v_93i                                  0x00BA
    #define     B16temp_v_93i                                  0x00BA
    #define   LSb32temp_v_93i                                     16
    #define   LSb16temp_v_93i                                     0
    #define       btemp_v_93i                                  16
    #define   MSK32temp_v_93i                                     0xFFFF0000

    #define     BA_temp_v_94i                                  0x00BC
    #define     B16temp_v_94i                                  0x00BC
    #define   LSb32temp_v_94i                                     0
    #define   LSb16temp_v_94i                                     0
    #define       btemp_v_94i                                  16
    #define   MSK32temp_v_94i                                     0x0000FFFF

    #define     BA_temp_v_95i                                  0x00BE
    #define     B16temp_v_95i                                  0x00BE
    #define   LSb32temp_v_95i                                     16
    #define   LSb16temp_v_95i                                     0
    #define       btemp_v_95i                                  16
    #define   MSK32temp_v_95i                                     0xFFFF0000

    #define     BA_temp_v_96i                                  0x00C0
    #define     B16temp_v_96i                                  0x00C0
    #define   LSb32temp_v_96i                                     0
    #define   LSb16temp_v_96i                                     0
    #define       btemp_v_96i                                  16
    #define   MSK32temp_v_96i                                     0x0000FFFF

    #define     BA_temp_v_97i                                  0x00C2
    #define     B16temp_v_97i                                  0x00C2
    #define   LSb32temp_v_97i                                     16
    #define   LSb16temp_v_97i                                     0
    #define       btemp_v_97i                                  16
    #define   MSK32temp_v_97i                                     0xFFFF0000

    #define     BA_temp_v_98i                                  0x00C4
    #define     B16temp_v_98i                                  0x00C4
    #define   LSb32temp_v_98i                                     0
    #define   LSb16temp_v_98i                                     0
    #define       btemp_v_98i                                  16
    #define   MSK32temp_v_98i                                     0x0000FFFF

    #define     BA_temp_v_99i                                  0x00C6
    #define     B16temp_v_99i                                  0x00C6
    #define   LSb32temp_v_99i                                     16
    #define   LSb16temp_v_99i                                     0
    #define       btemp_v_99i                                  16
    #define   MSK32temp_v_99i                                     0xFFFF0000

    #define     BA_temp_v_100i                                 0x00C8
    #define     B16temp_v_100i                                 0x00C8
    #define   LSb32temp_v_100i                                    0
    #define   LSb16temp_v_100i                                    0
    #define       btemp_v_100i                                 16
    #define   MSK32temp_v_100i                                    0x0000FFFF

    #define     BA_temp_v_101i                                 0x00CA
    #define     B16temp_v_101i                                 0x00CA
    #define   LSb32temp_v_101i                                    16
    #define   LSb16temp_v_101i                                    0
    #define       btemp_v_101i                                 16
    #define   MSK32temp_v_101i                                    0xFFFF0000

    #define     BA_temp_v_102i                                 0x00CC
    #define     B16temp_v_102i                                 0x00CC
    #define   LSb32temp_v_102i                                    0
    #define   LSb16temp_v_102i                                    0
    #define       btemp_v_102i                                 16
    #define   MSK32temp_v_102i                                    0x0000FFFF

    #define     BA_temp_v_103i                                 0x00CE
    #define     B16temp_v_103i                                 0x00CE
    #define   LSb32temp_v_103i                                    16
    #define   LSb16temp_v_103i                                    0
    #define       btemp_v_103i                                 16
    #define   MSK32temp_v_103i                                    0xFFFF0000

    #define     BA_temp_v_104i                                 0x00D0
    #define     B16temp_v_104i                                 0x00D0
    #define   LSb32temp_v_104i                                    0
    #define   LSb16temp_v_104i                                    0
    #define       btemp_v_104i                                 16
    #define   MSK32temp_v_104i                                    0x0000FFFF

    #define     BA_temp_v_105i                                 0x00D2
    #define     B16temp_v_105i                                 0x00D2
    #define   LSb32temp_v_105i                                    16
    #define   LSb16temp_v_105i                                    0
    #define       btemp_v_105i                                 16
    #define   MSK32temp_v_105i                                    0xFFFF0000

    #define     BA_temp_v_106i                                 0x00D4
    #define     B16temp_v_106i                                 0x00D4
    #define   LSb32temp_v_106i                                    0
    #define   LSb16temp_v_106i                                    0
    #define       btemp_v_106i                                 16
    #define   MSK32temp_v_106i                                    0x0000FFFF

    #define     BA_temp_v_107i                                 0x00D6
    #define     B16temp_v_107i                                 0x00D6
    #define   LSb32temp_v_107i                                    16
    #define   LSb16temp_v_107i                                    0
    #define       btemp_v_107i                                 16
    #define   MSK32temp_v_107i                                    0xFFFF0000

    #define     BA_temp_v_108i                                 0x00D8
    #define     B16temp_v_108i                                 0x00D8
    #define   LSb32temp_v_108i                                    0
    #define   LSb16temp_v_108i                                    0
    #define       btemp_v_108i                                 16
    #define   MSK32temp_v_108i                                    0x0000FFFF

    #define     BA_temp_v_109i                                 0x00DA
    #define     B16temp_v_109i                                 0x00DA
    #define   LSb32temp_v_109i                                    16
    #define   LSb16temp_v_109i                                    0
    #define       btemp_v_109i                                 16
    #define   MSK32temp_v_109i                                    0xFFFF0000

    #define     BA_temp_v_110i                                 0x00DC
    #define     B16temp_v_110i                                 0x00DC
    #define   LSb32temp_v_110i                                    0
    #define   LSb16temp_v_110i                                    0
    #define       btemp_v_110i                                 16
    #define   MSK32temp_v_110i                                    0x0000FFFF

    #define     BA_temp_v_111i                                 0x00DE
    #define     B16temp_v_111i                                 0x00DE
    #define   LSb32temp_v_111i                                    16
    #define   LSb16temp_v_111i                                    0
    #define       btemp_v_111i                                 16
    #define   MSK32temp_v_111i                                    0xFFFF0000

    #define     BA_temp_v_112i                                 0x00E0
    #define     B16temp_v_112i                                 0x00E0
    #define   LSb32temp_v_112i                                    0
    #define   LSb16temp_v_112i                                    0
    #define       btemp_v_112i                                 16
    #define   MSK32temp_v_112i                                    0x0000FFFF

    #define     BA_temp_v_113i                                 0x00E2
    #define     B16temp_v_113i                                 0x00E2
    #define   LSb32temp_v_113i                                    16
    #define   LSb16temp_v_113i                                    0
    #define       btemp_v_113i                                 16
    #define   MSK32temp_v_113i                                    0xFFFF0000

    #define     BA_temp_v_114i                                 0x00E4
    #define     B16temp_v_114i                                 0x00E4
    #define   LSb32temp_v_114i                                    0
    #define   LSb16temp_v_114i                                    0
    #define       btemp_v_114i                                 16
    #define   MSK32temp_v_114i                                    0x0000FFFF

    #define     BA_temp_v_115i                                 0x00E6
    #define     B16temp_v_115i                                 0x00E6
    #define   LSb32temp_v_115i                                    16
    #define   LSb16temp_v_115i                                    0
    #define       btemp_v_115i                                 16
    #define   MSK32temp_v_115i                                    0xFFFF0000

    #define     BA_temp_v_116i                                 0x00E8
    #define     B16temp_v_116i                                 0x00E8
    #define   LSb32temp_v_116i                                    0
    #define   LSb16temp_v_116i                                    0
    #define       btemp_v_116i                                 16
    #define   MSK32temp_v_116i                                    0x0000FFFF

    #define     BA_temp_v_117i                                 0x00EA
    #define     B16temp_v_117i                                 0x00EA
    #define   LSb32temp_v_117i                                    16
    #define   LSb16temp_v_117i                                    0
    #define       btemp_v_117i                                 16
    #define   MSK32temp_v_117i                                    0xFFFF0000

    #define     BA_temp_v_118i                                 0x00EC
    #define     B16temp_v_118i                                 0x00EC
    #define   LSb32temp_v_118i                                    0
    #define   LSb16temp_v_118i                                    0
    #define       btemp_v_118i                                 16
    #define   MSK32temp_v_118i                                    0x0000FFFF

    #define     BA_temp_v_119i                                 0x00EE
    #define     B16temp_v_119i                                 0x00EE
    #define   LSb32temp_v_119i                                    16
    #define   LSb16temp_v_119i                                    0
    #define       btemp_v_119i                                 16
    #define   MSK32temp_v_119i                                    0xFFFF0000

    #define     BA_temp_v_120i                                 0x00F0
    #define     B16temp_v_120i                                 0x00F0
    #define   LSb32temp_v_120i                                    0
    #define   LSb16temp_v_120i                                    0
    #define       btemp_v_120i                                 16
    #define   MSK32temp_v_120i                                    0x0000FFFF

    #define     BA_temp_v_121i                                 0x00F2
    #define     B16temp_v_121i                                 0x00F2
    #define   LSb32temp_v_121i                                    16
    #define   LSb16temp_v_121i                                    0
    #define       btemp_v_121i                                 16
    #define   MSK32temp_v_121i                                    0xFFFF0000

    #define     BA_temp_v_122i                                 0x00F4
    #define     B16temp_v_122i                                 0x00F4
    #define   LSb32temp_v_122i                                    0
    #define   LSb16temp_v_122i                                    0
    #define       btemp_v_122i                                 16
    #define   MSK32temp_v_122i                                    0x0000FFFF

    #define     BA_temp_v_123i                                 0x00F6
    #define     B16temp_v_123i                                 0x00F6
    #define   LSb32temp_v_123i                                    16
    #define   LSb16temp_v_123i                                    0
    #define       btemp_v_123i                                 16
    #define   MSK32temp_v_123i                                    0xFFFF0000

    #define     BA_temp_v_124i                                 0x00F8
    #define     B16temp_v_124i                                 0x00F8
    #define   LSb32temp_v_124i                                    0
    #define   LSb16temp_v_124i                                    0
    #define       btemp_v_124i                                 16
    #define   MSK32temp_v_124i                                    0x0000FFFF

    #define     BA_temp_v_125i                                 0x00FA
    #define     B16temp_v_125i                                 0x00FA
    #define   LSb32temp_v_125i                                    16
    #define   LSb16temp_v_125i                                    0
    #define       btemp_v_125i                                 16
    #define   MSK32temp_v_125i                                    0xFFFF0000

    #define     BA_temp_v_126i                                 0x00FC
    #define     B16temp_v_126i                                 0x00FC
    #define   LSb32temp_v_126i                                    0
    #define   LSb16temp_v_126i                                    0
    #define       btemp_v_126i                                 16
    #define   MSK32temp_v_126i                                    0x0000FFFF

    #define     BA_temp_v_127i                                 0x00FE
    #define     B16temp_v_127i                                 0x00FE
    #define   LSb32temp_v_127i                                    16
    #define   LSb16temp_v_127i                                    0
    #define       btemp_v_127i                                 16
    #define   MSK32temp_v_127i                                    0xFFFF0000

    #define     BA_temp_v_128i                                 0x0100
    #define     B16temp_v_128i                                 0x0100
    #define   LSb32temp_v_128i                                    0
    #define   LSb16temp_v_128i                                    0
    #define       btemp_v_128i                                 16
    #define   MSK32temp_v_128i                                    0x0000FFFF

    #define     BA_temp_v_129i                                 0x0102
    #define     B16temp_v_129i                                 0x0102
    #define   LSb32temp_v_129i                                    16
    #define   LSb16temp_v_129i                                    0
    #define       btemp_v_129i                                 16
    #define   MSK32temp_v_129i                                    0xFFFF0000

    #define     BA_temp_v_130i                                 0x0104
    #define     B16temp_v_130i                                 0x0104
    #define   LSb32temp_v_130i                                    0
    #define   LSb16temp_v_130i                                    0
    #define       btemp_v_130i                                 16
    #define   MSK32temp_v_130i                                    0x0000FFFF

    #define     BA_temp_v_131i                                 0x0106
    #define     B16temp_v_131i                                 0x0106
    #define   LSb32temp_v_131i                                    16
    #define   LSb16temp_v_131i                                    0
    #define       btemp_v_131i                                 16
    #define   MSK32temp_v_131i                                    0xFFFF0000

    #define     BA_temp_v_132i                                 0x0108
    #define     B16temp_v_132i                                 0x0108
    #define   LSb32temp_v_132i                                    0
    #define   LSb16temp_v_132i                                    0
    #define       btemp_v_132i                                 16
    #define   MSK32temp_v_132i                                    0x0000FFFF

    #define     BA_temp_v_133i                                 0x010A
    #define     B16temp_v_133i                                 0x010A
    #define   LSb32temp_v_133i                                    16
    #define   LSb16temp_v_133i                                    0
    #define       btemp_v_133i                                 16
    #define   MSK32temp_v_133i                                    0xFFFF0000

    #define     BA_temp_v_134i                                 0x010C
    #define     B16temp_v_134i                                 0x010C
    #define   LSb32temp_v_134i                                    0
    #define   LSb16temp_v_134i                                    0
    #define       btemp_v_134i                                 16
    #define   MSK32temp_v_134i                                    0x0000FFFF

    #define     BA_temp_v_135i                                 0x010E
    #define     B16temp_v_135i                                 0x010E
    #define   LSb32temp_v_135i                                    16
    #define   LSb16temp_v_135i                                    0
    #define       btemp_v_135i                                 16
    #define   MSK32temp_v_135i                                    0xFFFF0000

    #define     BA_temp_v_136i                                 0x0110
    #define     B16temp_v_136i                                 0x0110
    #define   LSb32temp_v_136i                                    0
    #define   LSb16temp_v_136i                                    0
    #define       btemp_v_136i                                 16
    #define   MSK32temp_v_136i                                    0x0000FFFF

    #define     BA_temp_v_137i                                 0x0112
    #define     B16temp_v_137i                                 0x0112
    #define   LSb32temp_v_137i                                    16
    #define   LSb16temp_v_137i                                    0
    #define       btemp_v_137i                                 16
    #define   MSK32temp_v_137i                                    0xFFFF0000

    #define     BA_temp_v_138i                                 0x0114
    #define     B16temp_v_138i                                 0x0114
    #define   LSb32temp_v_138i                                    0
    #define   LSb16temp_v_138i                                    0
    #define       btemp_v_138i                                 16
    #define   MSK32temp_v_138i                                    0x0000FFFF

    #define     BA_temp_v_139i                                 0x0116
    #define     B16temp_v_139i                                 0x0116
    #define   LSb32temp_v_139i                                    16
    #define   LSb16temp_v_139i                                    0
    #define       btemp_v_139i                                 16
    #define   MSK32temp_v_139i                                    0xFFFF0000

    #define     BA_temp_v_140i                                 0x0118
    #define     B16temp_v_140i                                 0x0118
    #define   LSb32temp_v_140i                                    0
    #define   LSb16temp_v_140i                                    0
    #define       btemp_v_140i                                 16
    #define   MSK32temp_v_140i                                    0x0000FFFF

    #define     BA_temp_v_141i                                 0x011A
    #define     B16temp_v_141i                                 0x011A
    #define   LSb32temp_v_141i                                    16
    #define   LSb16temp_v_141i                                    0
    #define       btemp_v_141i                                 16
    #define   MSK32temp_v_141i                                    0xFFFF0000

    #define     BA_temp_v_142i                                 0x011C
    #define     B16temp_v_142i                                 0x011C
    #define   LSb32temp_v_142i                                    0
    #define   LSb16temp_v_142i                                    0
    #define       btemp_v_142i                                 16
    #define   MSK32temp_v_142i                                    0x0000FFFF

    #define     BA_temp_v_143i                                 0x011E
    #define     B16temp_v_143i                                 0x011E
    #define   LSb32temp_v_143i                                    16
    #define   LSb16temp_v_143i                                    0
    #define       btemp_v_143i                                 16
    #define   MSK32temp_v_143i                                    0xFFFF0000

    #define     BA_temp_v_144i                                 0x0120
    #define     B16temp_v_144i                                 0x0120
    #define   LSb32temp_v_144i                                    0
    #define   LSb16temp_v_144i                                    0
    #define       btemp_v_144i                                 16
    #define   MSK32temp_v_144i                                    0x0000FFFF

    #define     BA_temp_v_145i                                 0x0122
    #define     B16temp_v_145i                                 0x0122
    #define   LSb32temp_v_145i                                    16
    #define   LSb16temp_v_145i                                    0
    #define       btemp_v_145i                                 16
    #define   MSK32temp_v_145i                                    0xFFFF0000

    #define     BA_temp_v_146i                                 0x0124
    #define     B16temp_v_146i                                 0x0124
    #define   LSb32temp_v_146i                                    0
    #define   LSb16temp_v_146i                                    0
    #define       btemp_v_146i                                 16
    #define   MSK32temp_v_146i                                    0x0000FFFF

    #define     BA_temp_v_147i                                 0x0126
    #define     B16temp_v_147i                                 0x0126
    #define   LSb32temp_v_147i                                    16
    #define   LSb16temp_v_147i                                    0
    #define       btemp_v_147i                                 16
    #define   MSK32temp_v_147i                                    0xFFFF0000

    #define     BA_temp_v_148i                                 0x0128
    #define     B16temp_v_148i                                 0x0128
    #define   LSb32temp_v_148i                                    0
    #define   LSb16temp_v_148i                                    0
    #define       btemp_v_148i                                 16
    #define   MSK32temp_v_148i                                    0x0000FFFF

    #define     BA_temp_v_149i                                 0x012A
    #define     B16temp_v_149i                                 0x012A
    #define   LSb32temp_v_149i                                    16
    #define   LSb16temp_v_149i                                    0
    #define       btemp_v_149i                                 16
    #define   MSK32temp_v_149i                                    0xFFFF0000

    #define     BA_temp_v_150i                                 0x012C
    #define     B16temp_v_150i                                 0x012C
    #define   LSb32temp_v_150i                                    0
    #define   LSb16temp_v_150i                                    0
    #define       btemp_v_150i                                 16
    #define   MSK32temp_v_150i                                    0x0000FFFF

    #define     BA_temp_v_151i                                 0x012E
    #define     B16temp_v_151i                                 0x012E
    #define   LSb32temp_v_151i                                    16
    #define   LSb16temp_v_151i                                    0
    #define       btemp_v_151i                                 16
    #define   MSK32temp_v_151i                                    0xFFFF0000

    #define     BA_temp_v_152i                                 0x0130
    #define     B16temp_v_152i                                 0x0130
    #define   LSb32temp_v_152i                                    0
    #define   LSb16temp_v_152i                                    0
    #define       btemp_v_152i                                 16
    #define   MSK32temp_v_152i                                    0x0000FFFF

    #define     BA_temp_v_153i                                 0x0132
    #define     B16temp_v_153i                                 0x0132
    #define   LSb32temp_v_153i                                    16
    #define   LSb16temp_v_153i                                    0
    #define       btemp_v_153i                                 16
    #define   MSK32temp_v_153i                                    0xFFFF0000

    #define     BA_temp_v_154i                                 0x0134
    #define     B16temp_v_154i                                 0x0134
    #define   LSb32temp_v_154i                                    0
    #define   LSb16temp_v_154i                                    0
    #define       btemp_v_154i                                 16
    #define   MSK32temp_v_154i                                    0x0000FFFF

    #define     BA_temp_v_155i                                 0x0136
    #define     B16temp_v_155i                                 0x0136
    #define   LSb32temp_v_155i                                    16
    #define   LSb16temp_v_155i                                    0
    #define       btemp_v_155i                                 16
    #define   MSK32temp_v_155i                                    0xFFFF0000

    #define     BA_temp_v_156i                                 0x0138
    #define     B16temp_v_156i                                 0x0138
    #define   LSb32temp_v_156i                                    0
    #define   LSb16temp_v_156i                                    0
    #define       btemp_v_156i                                 16
    #define   MSK32temp_v_156i                                    0x0000FFFF

    #define     BA_temp_v_157i                                 0x013A
    #define     B16temp_v_157i                                 0x013A
    #define   LSb32temp_v_157i                                    16
    #define   LSb16temp_v_157i                                    0
    #define       btemp_v_157i                                 16
    #define   MSK32temp_v_157i                                    0xFFFF0000

    #define     BA_temp_v_158i                                 0x013C
    #define     B16temp_v_158i                                 0x013C
    #define   LSb32temp_v_158i                                    0
    #define   LSb16temp_v_158i                                    0
    #define       btemp_v_158i                                 16
    #define   MSK32temp_v_158i                                    0x0000FFFF

    #define     BA_temp_v_159i                                 0x013E
    #define     B16temp_v_159i                                 0x013E
    #define   LSb32temp_v_159i                                    16
    #define   LSb16temp_v_159i                                    0
    #define       btemp_v_159i                                 16
    #define   MSK32temp_v_159i                                    0xFFFF0000

    #define     BA_temp_v_160i                                 0x0140
    #define     B16temp_v_160i                                 0x0140
    #define   LSb32temp_v_160i                                    0
    #define   LSb16temp_v_160i                                    0
    #define       btemp_v_160i                                 16
    #define   MSK32temp_v_160i                                    0x0000FFFF

    #define     BA_temp_v_161i                                 0x0142
    #define     B16temp_v_161i                                 0x0142
    #define   LSb32temp_v_161i                                    16
    #define   LSb16temp_v_161i                                    0
    #define       btemp_v_161i                                 16
    #define   MSK32temp_v_161i                                    0xFFFF0000

    #define     BA_temp_v_162i                                 0x0144
    #define     B16temp_v_162i                                 0x0144
    #define   LSb32temp_v_162i                                    0
    #define   LSb16temp_v_162i                                    0
    #define       btemp_v_162i                                 16
    #define   MSK32temp_v_162i                                    0x0000FFFF

    #define     BA_temp_v_163i                                 0x0146
    #define     B16temp_v_163i                                 0x0146
    #define   LSb32temp_v_163i                                    16
    #define   LSb16temp_v_163i                                    0
    #define       btemp_v_163i                                 16
    #define   MSK32temp_v_163i                                    0xFFFF0000

    #define     BA_temp_v_164i                                 0x0148
    #define     B16temp_v_164i                                 0x0148
    #define   LSb32temp_v_164i                                    0
    #define   LSb16temp_v_164i                                    0
    #define       btemp_v_164i                                 16
    #define   MSK32temp_v_164i                                    0x0000FFFF

    #define     BA_temp_v_165i                                 0x014A
    #define     B16temp_v_165i                                 0x014A
    #define   LSb32temp_v_165i                                    16
    #define   LSb16temp_v_165i                                    0
    #define       btemp_v_165i                                 16
    #define   MSK32temp_v_165i                                    0xFFFF0000

    #define     BA_temp_v_166i                                 0x014C
    #define     B16temp_v_166i                                 0x014C
    #define   LSb32temp_v_166i                                    0
    #define   LSb16temp_v_166i                                    0
    #define       btemp_v_166i                                 16
    #define   MSK32temp_v_166i                                    0x0000FFFF

    #define     BA_temp_v_167i                                 0x014E
    #define     B16temp_v_167i                                 0x014E
    #define   LSb32temp_v_167i                                    16
    #define   LSb16temp_v_167i                                    0
    #define       btemp_v_167i                                 16
    #define   MSK32temp_v_167i                                    0xFFFF0000

    #define     BA_temp_v_168i                                 0x0150
    #define     B16temp_v_168i                                 0x0150
    #define   LSb32temp_v_168i                                    0
    #define   LSb16temp_v_168i                                    0
    #define       btemp_v_168i                                 16
    #define   MSK32temp_v_168i                                    0x0000FFFF

    #define     BA_temp_v_169i                                 0x0152
    #define     B16temp_v_169i                                 0x0152
    #define   LSb32temp_v_169i                                    16
    #define   LSb16temp_v_169i                                    0
    #define       btemp_v_169i                                 16
    #define   MSK32temp_v_169i                                    0xFFFF0000

    #define     BA_temp_v_170i                                 0x0154
    #define     B16temp_v_170i                                 0x0154
    #define   LSb32temp_v_170i                                    0
    #define   LSb16temp_v_170i                                    0
    #define       btemp_v_170i                                 16
    #define   MSK32temp_v_170i                                    0x0000FFFF

    #define     BA_temp_v_171i                                 0x0156
    #define     B16temp_v_171i                                 0x0156
    #define   LSb32temp_v_171i                                    16
    #define   LSb16temp_v_171i                                    0
    #define       btemp_v_171i                                 16
    #define   MSK32temp_v_171i                                    0xFFFF0000

    #define     BA_temp_v_172i                                 0x0158
    #define     B16temp_v_172i                                 0x0158
    #define   LSb32temp_v_172i                                    0
    #define   LSb16temp_v_172i                                    0
    #define       btemp_v_172i                                 16
    #define   MSK32temp_v_172i                                    0x0000FFFF

    #define     BA_temp_v_173i                                 0x015A
    #define     B16temp_v_173i                                 0x015A
    #define   LSb32temp_v_173i                                    16
    #define   LSb16temp_v_173i                                    0
    #define       btemp_v_173i                                 16
    #define   MSK32temp_v_173i                                    0xFFFF0000

    #define     BA_temp_v_174i                                 0x015C
    #define     B16temp_v_174i                                 0x015C
    #define   LSb32temp_v_174i                                    0
    #define   LSb16temp_v_174i                                    0
    #define       btemp_v_174i                                 16
    #define   MSK32temp_v_174i                                    0x0000FFFF

    #define     BA_temp_v_175i                                 0x015E
    #define     B16temp_v_175i                                 0x015E
    #define   LSb32temp_v_175i                                    16
    #define   LSb16temp_v_175i                                    0
    #define       btemp_v_175i                                 16
    #define   MSK32temp_v_175i                                    0xFFFF0000

    #define     BA_temp_v_176i                                 0x0160
    #define     B16temp_v_176i                                 0x0160
    #define   LSb32temp_v_176i                                    0
    #define   LSb16temp_v_176i                                    0
    #define       btemp_v_176i                                 16
    #define   MSK32temp_v_176i                                    0x0000FFFF

    #define     BA_temp_v_177i                                 0x0162
    #define     B16temp_v_177i                                 0x0162
    #define   LSb32temp_v_177i                                    16
    #define   LSb16temp_v_177i                                    0
    #define       btemp_v_177i                                 16
    #define   MSK32temp_v_177i                                    0xFFFF0000

    #define     BA_temp_v_178i                                 0x0164
    #define     B16temp_v_178i                                 0x0164
    #define   LSb32temp_v_178i                                    0
    #define   LSb16temp_v_178i                                    0
    #define       btemp_v_178i                                 16
    #define   MSK32temp_v_178i                                    0x0000FFFF

    #define     BA_temp_v_179i                                 0x0166
    #define     B16temp_v_179i                                 0x0166
    #define   LSb32temp_v_179i                                    16
    #define   LSb16temp_v_179i                                    0
    #define       btemp_v_179i                                 16
    #define   MSK32temp_v_179i                                    0xFFFF0000

    #define     BA_temp_v_180i                                 0x0168
    #define     B16temp_v_180i                                 0x0168
    #define   LSb32temp_v_180i                                    0
    #define   LSb16temp_v_180i                                    0
    #define       btemp_v_180i                                 16
    #define   MSK32temp_v_180i                                    0x0000FFFF

    #define     BA_temp_v_181i                                 0x016A
    #define     B16temp_v_181i                                 0x016A
    #define   LSb32temp_v_181i                                    16
    #define   LSb16temp_v_181i                                    0
    #define       btemp_v_181i                                 16
    #define   MSK32temp_v_181i                                    0xFFFF0000

    #define     BA_temp_v_182i                                 0x016C
    #define     B16temp_v_182i                                 0x016C
    #define   LSb32temp_v_182i                                    0
    #define   LSb16temp_v_182i                                    0
    #define       btemp_v_182i                                 16
    #define   MSK32temp_v_182i                                    0x0000FFFF

    #define     BA_temp_v_183i                                 0x016E
    #define     B16temp_v_183i                                 0x016E
    #define   LSb32temp_v_183i                                    16
    #define   LSb16temp_v_183i                                    0
    #define       btemp_v_183i                                 16
    #define   MSK32temp_v_183i                                    0xFFFF0000

    #define     BA_temp_v_184i                                 0x0170
    #define     B16temp_v_184i                                 0x0170
    #define   LSb32temp_v_184i                                    0
    #define   LSb16temp_v_184i                                    0
    #define       btemp_v_184i                                 16
    #define   MSK32temp_v_184i                                    0x0000FFFF

    #define     BA_temp_v_185i                                 0x0172
    #define     B16temp_v_185i                                 0x0172
    #define   LSb32temp_v_185i                                    16
    #define   LSb16temp_v_185i                                    0
    #define       btemp_v_185i                                 16
    #define   MSK32temp_v_185i                                    0xFFFF0000

    #define     BA_temp_v_186i                                 0x0174
    #define     B16temp_v_186i                                 0x0174
    #define   LSb32temp_v_186i                                    0
    #define   LSb16temp_v_186i                                    0
    #define       btemp_v_186i                                 16
    #define   MSK32temp_v_186i                                    0x0000FFFF

    #define     BA_temp_v_187i                                 0x0176
    #define     B16temp_v_187i                                 0x0176
    #define   LSb32temp_v_187i                                    16
    #define   LSb16temp_v_187i                                    0
    #define       btemp_v_187i                                 16
    #define   MSK32temp_v_187i                                    0xFFFF0000

    #define     BA_temp_v_188i                                 0x0178
    #define     B16temp_v_188i                                 0x0178
    #define   LSb32temp_v_188i                                    0
    #define   LSb16temp_v_188i                                    0
    #define       btemp_v_188i                                 16
    #define   MSK32temp_v_188i                                    0x0000FFFF

    #define     BA_temp_v_189i                                 0x017A
    #define     B16temp_v_189i                                 0x017A
    #define   LSb32temp_v_189i                                    16
    #define   LSb16temp_v_189i                                    0
    #define       btemp_v_189i                                 16
    #define   MSK32temp_v_189i                                    0xFFFF0000

    #define     BA_temp_v_190i                                 0x017C
    #define     B16temp_v_190i                                 0x017C
    #define   LSb32temp_v_190i                                    0
    #define   LSb16temp_v_190i                                    0
    #define       btemp_v_190i                                 16
    #define   MSK32temp_v_190i                                    0x0000FFFF

    #define     BA_temp_v_191i                                 0x017E
    #define     B16temp_v_191i                                 0x017E
    #define   LSb32temp_v_191i                                    16
    #define   LSb16temp_v_191i                                    0
    #define       btemp_v_191i                                 16
    #define   MSK32temp_v_191i                                    0xFFFF0000

    #define     BA_temp_v_192i                                 0x0180
    #define     B16temp_v_192i                                 0x0180
    #define   LSb32temp_v_192i                                    0
    #define   LSb16temp_v_192i                                    0
    #define       btemp_v_192i                                 16
    #define   MSK32temp_v_192i                                    0x0000FFFF

    #define     BA_temp_v_193i                                 0x0182
    #define     B16temp_v_193i                                 0x0182
    #define   LSb32temp_v_193i                                    16
    #define   LSb16temp_v_193i                                    0
    #define       btemp_v_193i                                 16
    #define   MSK32temp_v_193i                                    0xFFFF0000

    #define     BA_temp_v_194i                                 0x0184
    #define     B16temp_v_194i                                 0x0184
    #define   LSb32temp_v_194i                                    0
    #define   LSb16temp_v_194i                                    0
    #define       btemp_v_194i                                 16
    #define   MSK32temp_v_194i                                    0x0000FFFF

    #define     BA_temp_v_195i                                 0x0186
    #define     B16temp_v_195i                                 0x0186
    #define   LSb32temp_v_195i                                    16
    #define   LSb16temp_v_195i                                    0
    #define       btemp_v_195i                                 16
    #define   MSK32temp_v_195i                                    0xFFFF0000

    #define     BA_temp_v_196i                                 0x0188
    #define     B16temp_v_196i                                 0x0188
    #define   LSb32temp_v_196i                                    0
    #define   LSb16temp_v_196i                                    0
    #define       btemp_v_196i                                 16
    #define   MSK32temp_v_196i                                    0x0000FFFF

    #define     BA_temp_v_197i                                 0x018A
    #define     B16temp_v_197i                                 0x018A
    #define   LSb32temp_v_197i                                    16
    #define   LSb16temp_v_197i                                    0
    #define       btemp_v_197i                                 16
    #define   MSK32temp_v_197i                                    0xFFFF0000

    #define     BA_temp_v_198i                                 0x018C
    #define     B16temp_v_198i                                 0x018C
    #define   LSb32temp_v_198i                                    0
    #define   LSb16temp_v_198i                                    0
    #define       btemp_v_198i                                 16
    #define   MSK32temp_v_198i                                    0x0000FFFF

    #define     BA_temp_v_199i                                 0x018E
    #define     B16temp_v_199i                                 0x018E
    #define   LSb32temp_v_199i                                    16
    #define   LSb16temp_v_199i                                    0
    #define       btemp_v_199i                                 16
    #define   MSK32temp_v_199i                                    0xFFFF0000

    #define     BA_temp_v_200i                                 0x0190
    #define     B16temp_v_200i                                 0x0190
    #define   LSb32temp_v_200i                                    0
    #define   LSb16temp_v_200i                                    0
    #define       btemp_v_200i                                 16
    #define   MSK32temp_v_200i                                    0x0000FFFF

    #define     BA_temp_v_201i                                 0x0192
    #define     B16temp_v_201i                                 0x0192
    #define   LSb32temp_v_201i                                    16
    #define   LSb16temp_v_201i                                    0
    #define       btemp_v_201i                                 16
    #define   MSK32temp_v_201i                                    0xFFFF0000

    #define     BA_temp_v_202i                                 0x0194
    #define     B16temp_v_202i                                 0x0194
    #define   LSb32temp_v_202i                                    0
    #define   LSb16temp_v_202i                                    0
    #define       btemp_v_202i                                 16
    #define   MSK32temp_v_202i                                    0x0000FFFF

    #define     BA_temp_v_203i                                 0x0196
    #define     B16temp_v_203i                                 0x0196
    #define   LSb32temp_v_203i                                    16
    #define   LSb16temp_v_203i                                    0
    #define       btemp_v_203i                                 16
    #define   MSK32temp_v_203i                                    0xFFFF0000

    #define     BA_temp_v_204i                                 0x0198
    #define     B16temp_v_204i                                 0x0198
    #define   LSb32temp_v_204i                                    0
    #define   LSb16temp_v_204i                                    0
    #define       btemp_v_204i                                 16
    #define   MSK32temp_v_204i                                    0x0000FFFF

    #define     BA_temp_v_205i                                 0x019A
    #define     B16temp_v_205i                                 0x019A
    #define   LSb32temp_v_205i                                    16
    #define   LSb16temp_v_205i                                    0
    #define       btemp_v_205i                                 16
    #define   MSK32temp_v_205i                                    0xFFFF0000

    #define     BA_temp_v_206i                                 0x019C
    #define     B16temp_v_206i                                 0x019C
    #define   LSb32temp_v_206i                                    0
    #define   LSb16temp_v_206i                                    0
    #define       btemp_v_206i                                 16
    #define   MSK32temp_v_206i                                    0x0000FFFF

    #define     BA_temp_v_207i                                 0x019E
    #define     B16temp_v_207i                                 0x019E
    #define   LSb32temp_v_207i                                    16
    #define   LSb16temp_v_207i                                    0
    #define       btemp_v_207i                                 16
    #define   MSK32temp_v_207i                                    0xFFFF0000

    #define     BA_temp_v_208i                                 0x01A0
    #define     B16temp_v_208i                                 0x01A0
    #define   LSb32temp_v_208i                                    0
    #define   LSb16temp_v_208i                                    0
    #define       btemp_v_208i                                 16
    #define   MSK32temp_v_208i                                    0x0000FFFF

    #define     BA_temp_v_209i                                 0x01A2
    #define     B16temp_v_209i                                 0x01A2
    #define   LSb32temp_v_209i                                    16
    #define   LSb16temp_v_209i                                    0
    #define       btemp_v_209i                                 16
    #define   MSK32temp_v_209i                                    0xFFFF0000

    #define     BA_temp_v_210i                                 0x01A4
    #define     B16temp_v_210i                                 0x01A4
    #define   LSb32temp_v_210i                                    0
    #define   LSb16temp_v_210i                                    0
    #define       btemp_v_210i                                 16
    #define   MSK32temp_v_210i                                    0x0000FFFF

    #define     BA_temp_v_211i                                 0x01A6
    #define     B16temp_v_211i                                 0x01A6
    #define   LSb32temp_v_211i                                    16
    #define   LSb16temp_v_211i                                    0
    #define       btemp_v_211i                                 16
    #define   MSK32temp_v_211i                                    0xFFFF0000

    #define     BA_temp_v_212i                                 0x01A8
    #define     B16temp_v_212i                                 0x01A8
    #define   LSb32temp_v_212i                                    0
    #define   LSb16temp_v_212i                                    0
    #define       btemp_v_212i                                 16
    #define   MSK32temp_v_212i                                    0x0000FFFF

    #define     BA_temp_v_213i                                 0x01AA
    #define     B16temp_v_213i                                 0x01AA
    #define   LSb32temp_v_213i                                    16
    #define   LSb16temp_v_213i                                    0
    #define       btemp_v_213i                                 16
    #define   MSK32temp_v_213i                                    0xFFFF0000

    #define     BA_temp_v_214i                                 0x01AC
    #define     B16temp_v_214i                                 0x01AC
    #define   LSb32temp_v_214i                                    0
    #define   LSb16temp_v_214i                                    0
    #define       btemp_v_214i                                 16
    #define   MSK32temp_v_214i                                    0x0000FFFF

    #define     BA_temp_v_215i                                 0x01AE
    #define     B16temp_v_215i                                 0x01AE
    #define   LSb32temp_v_215i                                    16
    #define   LSb16temp_v_215i                                    0
    #define       btemp_v_215i                                 16
    #define   MSK32temp_v_215i                                    0xFFFF0000

    #define     BA_temp_v_216i                                 0x01B0
    #define     B16temp_v_216i                                 0x01B0
    #define   LSb32temp_v_216i                                    0
    #define   LSb16temp_v_216i                                    0
    #define       btemp_v_216i                                 16
    #define   MSK32temp_v_216i                                    0x0000FFFF

    #define     BA_temp_v_217i                                 0x01B2
    #define     B16temp_v_217i                                 0x01B2
    #define   LSb32temp_v_217i                                    16
    #define   LSb16temp_v_217i                                    0
    #define       btemp_v_217i                                 16
    #define   MSK32temp_v_217i                                    0xFFFF0000

    #define     BA_temp_v_218i                                 0x01B4
    #define     B16temp_v_218i                                 0x01B4
    #define   LSb32temp_v_218i                                    0
    #define   LSb16temp_v_218i                                    0
    #define       btemp_v_218i                                 16
    #define   MSK32temp_v_218i                                    0x0000FFFF

    #define     BA_temp_v_219i                                 0x01B6
    #define     B16temp_v_219i                                 0x01B6
    #define   LSb32temp_v_219i                                    16
    #define   LSb16temp_v_219i                                    0
    #define       btemp_v_219i                                 16
    #define   MSK32temp_v_219i                                    0xFFFF0000

    #define     BA_temp_v_220i                                 0x01B8
    #define     B16temp_v_220i                                 0x01B8
    #define   LSb32temp_v_220i                                    0
    #define   LSb16temp_v_220i                                    0
    #define       btemp_v_220i                                 16
    #define   MSK32temp_v_220i                                    0x0000FFFF

    #define     BA_temp_v_221i                                 0x01BA
    #define     B16temp_v_221i                                 0x01BA
    #define   LSb32temp_v_221i                                    16
    #define   LSb16temp_v_221i                                    0
    #define       btemp_v_221i                                 16
    #define   MSK32temp_v_221i                                    0xFFFF0000

    #define     BA_temp_v_222i                                 0x01BC
    #define     B16temp_v_222i                                 0x01BC
    #define   LSb32temp_v_222i                                    0
    #define   LSb16temp_v_222i                                    0
    #define       btemp_v_222i                                 16
    #define   MSK32temp_v_222i                                    0x0000FFFF

    #define     BA_temp_v_223i                                 0x01BE
    #define     B16temp_v_223i                                 0x01BE
    #define   LSb32temp_v_223i                                    16
    #define   LSb16temp_v_223i                                    0
    #define       btemp_v_223i                                 16
    #define   MSK32temp_v_223i                                    0xFFFF0000

    #define     BA_temp_v_224i                                 0x01C0
    #define     B16temp_v_224i                                 0x01C0
    #define   LSb32temp_v_224i                                    0
    #define   LSb16temp_v_224i                                    0
    #define       btemp_v_224i                                 16
    #define   MSK32temp_v_224i                                    0x0000FFFF

    #define     BA_temp_v_225i                                 0x01C2
    #define     B16temp_v_225i                                 0x01C2
    #define   LSb32temp_v_225i                                    16
    #define   LSb16temp_v_225i                                    0
    #define       btemp_v_225i                                 16
    #define   MSK32temp_v_225i                                    0xFFFF0000

    #define     BA_temp_v_226i                                 0x01C4
    #define     B16temp_v_226i                                 0x01C4
    #define   LSb32temp_v_226i                                    0
    #define   LSb16temp_v_226i                                    0
    #define       btemp_v_226i                                 16
    #define   MSK32temp_v_226i                                    0x0000FFFF

    #define     BA_temp_v_227i                                 0x01C6
    #define     B16temp_v_227i                                 0x01C6
    #define   LSb32temp_v_227i                                    16
    #define   LSb16temp_v_227i                                    0
    #define       btemp_v_227i                                 16
    #define   MSK32temp_v_227i                                    0xFFFF0000

    #define     BA_temp_v_228i                                 0x01C8
    #define     B16temp_v_228i                                 0x01C8
    #define   LSb32temp_v_228i                                    0
    #define   LSb16temp_v_228i                                    0
    #define       btemp_v_228i                                 16
    #define   MSK32temp_v_228i                                    0x0000FFFF

    #define     BA_temp_v_229i                                 0x01CA
    #define     B16temp_v_229i                                 0x01CA
    #define   LSb32temp_v_229i                                    16
    #define   LSb16temp_v_229i                                    0
    #define       btemp_v_229i                                 16
    #define   MSK32temp_v_229i                                    0xFFFF0000

    #define     BA_temp_v_230i                                 0x01CC
    #define     B16temp_v_230i                                 0x01CC
    #define   LSb32temp_v_230i                                    0
    #define   LSb16temp_v_230i                                    0
    #define       btemp_v_230i                                 16
    #define   MSK32temp_v_230i                                    0x0000FFFF

    #define     BA_temp_v_231i                                 0x01CE
    #define     B16temp_v_231i                                 0x01CE
    #define   LSb32temp_v_231i                                    16
    #define   LSb16temp_v_231i                                    0
    #define       btemp_v_231i                                 16
    #define   MSK32temp_v_231i                                    0xFFFF0000

    #define     BA_temp_v_232i                                 0x01D0
    #define     B16temp_v_232i                                 0x01D0
    #define   LSb32temp_v_232i                                    0
    #define   LSb16temp_v_232i                                    0
    #define       btemp_v_232i                                 16
    #define   MSK32temp_v_232i                                    0x0000FFFF

    #define     BA_temp_v_233i                                 0x01D2
    #define     B16temp_v_233i                                 0x01D2
    #define   LSb32temp_v_233i                                    16
    #define   LSb16temp_v_233i                                    0
    #define       btemp_v_233i                                 16
    #define   MSK32temp_v_233i                                    0xFFFF0000

    #define     BA_temp_v_234i                                 0x01D4
    #define     B16temp_v_234i                                 0x01D4
    #define   LSb32temp_v_234i                                    0
    #define   LSb16temp_v_234i                                    0
    #define       btemp_v_234i                                 16
    #define   MSK32temp_v_234i                                    0x0000FFFF

    #define     BA_temp_v_235i                                 0x01D6
    #define     B16temp_v_235i                                 0x01D6
    #define   LSb32temp_v_235i                                    16
    #define   LSb16temp_v_235i                                    0
    #define       btemp_v_235i                                 16
    #define   MSK32temp_v_235i                                    0xFFFF0000

    #define     BA_temp_v_236i                                 0x01D8
    #define     B16temp_v_236i                                 0x01D8
    #define   LSb32temp_v_236i                                    0
    #define   LSb16temp_v_236i                                    0
    #define       btemp_v_236i                                 16
    #define   MSK32temp_v_236i                                    0x0000FFFF

    #define     BA_temp_v_237i                                 0x01DA
    #define     B16temp_v_237i                                 0x01DA
    #define   LSb32temp_v_237i                                    16
    #define   LSb16temp_v_237i                                    0
    #define       btemp_v_237i                                 16
    #define   MSK32temp_v_237i                                    0xFFFF0000

    #define     BA_temp_v_238i                                 0x01DC
    #define     B16temp_v_238i                                 0x01DC
    #define   LSb32temp_v_238i                                    0
    #define   LSb16temp_v_238i                                    0
    #define       btemp_v_238i                                 16
    #define   MSK32temp_v_238i                                    0x0000FFFF

    #define     BA_temp_v_239i                                 0x01DE
    #define     B16temp_v_239i                                 0x01DE
    #define   LSb32temp_v_239i                                    16
    #define   LSb16temp_v_239i                                    0
    #define       btemp_v_239i                                 16
    #define   MSK32temp_v_239i                                    0xFFFF0000

    #define     BA_temp_v_240i                                 0x01E0
    #define     B16temp_v_240i                                 0x01E0
    #define   LSb32temp_v_240i                                    0
    #define   LSb16temp_v_240i                                    0
    #define       btemp_v_240i                                 16
    #define   MSK32temp_v_240i                                    0x0000FFFF

    #define     BA_temp_v_241i                                 0x01E2
    #define     B16temp_v_241i                                 0x01E2
    #define   LSb32temp_v_241i                                    16
    #define   LSb16temp_v_241i                                    0
    #define       btemp_v_241i                                 16
    #define   MSK32temp_v_241i                                    0xFFFF0000

    #define     BA_temp_v_242i                                 0x01E4
    #define     B16temp_v_242i                                 0x01E4
    #define   LSb32temp_v_242i                                    0
    #define   LSb16temp_v_242i                                    0
    #define       btemp_v_242i                                 16
    #define   MSK32temp_v_242i                                    0x0000FFFF

    #define     BA_temp_v_243i                                 0x01E6
    #define     B16temp_v_243i                                 0x01E6
    #define   LSb32temp_v_243i                                    16
    #define   LSb16temp_v_243i                                    0
    #define       btemp_v_243i                                 16
    #define   MSK32temp_v_243i                                    0xFFFF0000

    #define     BA_temp_v_244i                                 0x01E8
    #define     B16temp_v_244i                                 0x01E8
    #define   LSb32temp_v_244i                                    0
    #define   LSb16temp_v_244i                                    0
    #define       btemp_v_244i                                 16
    #define   MSK32temp_v_244i                                    0x0000FFFF

    #define     BA_temp_v_245i                                 0x01EA
    #define     B16temp_v_245i                                 0x01EA
    #define   LSb32temp_v_245i                                    16
    #define   LSb16temp_v_245i                                    0
    #define       btemp_v_245i                                 16
    #define   MSK32temp_v_245i                                    0xFFFF0000

    #define     BA_temp_v_246i                                 0x01EC
    #define     B16temp_v_246i                                 0x01EC
    #define   LSb32temp_v_246i                                    0
    #define   LSb16temp_v_246i                                    0
    #define       btemp_v_246i                                 16
    #define   MSK32temp_v_246i                                    0x0000FFFF

    #define     BA_temp_v_247i                                 0x01EE
    #define     B16temp_v_247i                                 0x01EE
    #define   LSb32temp_v_247i                                    16
    #define   LSb16temp_v_247i                                    0
    #define       btemp_v_247i                                 16
    #define   MSK32temp_v_247i                                    0xFFFF0000

    #define     BA_temp_v_248i                                 0x01F0
    #define     B16temp_v_248i                                 0x01F0
    #define   LSb32temp_v_248i                                    0
    #define   LSb16temp_v_248i                                    0
    #define       btemp_v_248i                                 16
    #define   MSK32temp_v_248i                                    0x0000FFFF

    #define     BA_temp_v_249i                                 0x01F2
    #define     B16temp_v_249i                                 0x01F2
    #define   LSb32temp_v_249i                                    16
    #define   LSb16temp_v_249i                                    0
    #define       btemp_v_249i                                 16
    #define   MSK32temp_v_249i                                    0xFFFF0000

    #define     BA_temp_v_250i                                 0x01F4
    #define     B16temp_v_250i                                 0x01F4
    #define   LSb32temp_v_250i                                    0
    #define   LSb16temp_v_250i                                    0
    #define       btemp_v_250i                                 16
    #define   MSK32temp_v_250i                                    0x0000FFFF

    #define     BA_temp_v_251i                                 0x01F6
    #define     B16temp_v_251i                                 0x01F6
    #define   LSb32temp_v_251i                                    16
    #define   LSb16temp_v_251i                                    0
    #define       btemp_v_251i                                 16
    #define   MSK32temp_v_251i                                    0xFFFF0000

    #define     BA_temp_v_252i                                 0x01F8
    #define     B16temp_v_252i                                 0x01F8
    #define   LSb32temp_v_252i                                    0
    #define   LSb16temp_v_252i                                    0
    #define       btemp_v_252i                                 16
    #define   MSK32temp_v_252i                                    0x0000FFFF

    #define     BA_temp_v_253i                                 0x01FA
    #define     B16temp_v_253i                                 0x01FA
    #define   LSb32temp_v_253i                                    16
    #define   LSb16temp_v_253i                                    0
    #define       btemp_v_253i                                 16
    #define   MSK32temp_v_253i                                    0xFFFF0000

    #define     BA_temp_v_254i                                 0x01FC
    #define     B16temp_v_254i                                 0x01FC
    #define   LSb32temp_v_254i                                    0
    #define   LSb16temp_v_254i                                    0
    #define       btemp_v_254i                                 16
    #define   MSK32temp_v_254i                                    0x0000FFFF

    #define     BA_temp_v_255i                                 0x01FE
    #define     B16temp_v_255i                                 0x01FE
    #define   LSb32temp_v_255i                                    16
    #define   LSb16temp_v_255i                                    0
    #define       btemp_v_255i                                 16
    #define   MSK32temp_v_255i                                    0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_temp {
    ///////////////////////////////////////////////////////////
    #define   GET32temp_v_0i(r32)                              _BFGET_(r32,15, 0)
    #define   SET32temp_v_0i(r32,v)                            _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_0i(r16)                              _BFGET_(r16,15, 0)
    #define   SET16temp_v_0i(r16,v)                            _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_1i(r32)                              _BFGET_(r32,31,16)
    #define   SET32temp_v_1i(r32,v)                            _BFSET_(r32,31,16,v)
    #define   GET16temp_v_1i(r16)                              _BFGET_(r16,15, 0)
    #define   SET16temp_v_1i(r16,v)                            _BFSET_(r16,15, 0,v)

            UNSG32 u_v_0i                                      : 16;
            UNSG32 u_v_1i                                      : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_2i(r32)                              _BFGET_(r32,15, 0)
    #define   SET32temp_v_2i(r32,v)                            _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_2i(r16)                              _BFGET_(r16,15, 0)
    #define   SET16temp_v_2i(r16,v)                            _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_3i(r32)                              _BFGET_(r32,31,16)
    #define   SET32temp_v_3i(r32,v)                            _BFSET_(r32,31,16,v)
    #define   GET16temp_v_3i(r16)                              _BFGET_(r16,15, 0)
    #define   SET16temp_v_3i(r16,v)                            _BFSET_(r16,15, 0,v)

            UNSG32 u_v_2i                                      : 16;
            UNSG32 u_v_3i                                      : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_4i(r32)                              _BFGET_(r32,15, 0)
    #define   SET32temp_v_4i(r32,v)                            _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_4i(r16)                              _BFGET_(r16,15, 0)
    #define   SET16temp_v_4i(r16,v)                            _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_5i(r32)                              _BFGET_(r32,31,16)
    #define   SET32temp_v_5i(r32,v)                            _BFSET_(r32,31,16,v)
    #define   GET16temp_v_5i(r16)                              _BFGET_(r16,15, 0)
    #define   SET16temp_v_5i(r16,v)                            _BFSET_(r16,15, 0,v)

            UNSG32 u_v_4i                                      : 16;
            UNSG32 u_v_5i                                      : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_6i(r32)                              _BFGET_(r32,15, 0)
    #define   SET32temp_v_6i(r32,v)                            _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_6i(r16)                              _BFGET_(r16,15, 0)
    #define   SET16temp_v_6i(r16,v)                            _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_7i(r32)                              _BFGET_(r32,31,16)
    #define   SET32temp_v_7i(r32,v)                            _BFSET_(r32,31,16,v)
    #define   GET16temp_v_7i(r16)                              _BFGET_(r16,15, 0)
    #define   SET16temp_v_7i(r16,v)                            _BFSET_(r16,15, 0,v)

            UNSG32 u_v_6i                                      : 16;
            UNSG32 u_v_7i                                      : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_8i(r32)                              _BFGET_(r32,15, 0)
    #define   SET32temp_v_8i(r32,v)                            _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_8i(r16)                              _BFGET_(r16,15, 0)
    #define   SET16temp_v_8i(r16,v)                            _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_9i(r32)                              _BFGET_(r32,31,16)
    #define   SET32temp_v_9i(r32,v)                            _BFSET_(r32,31,16,v)
    #define   GET16temp_v_9i(r16)                              _BFGET_(r16,15, 0)
    #define   SET16temp_v_9i(r16,v)                            _BFSET_(r16,15, 0,v)

            UNSG32 u_v_8i                                      : 16;
            UNSG32 u_v_9i                                      : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_10i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_10i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_10i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_10i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_11i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_11i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_11i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_11i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_10i                                     : 16;
            UNSG32 u_v_11i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_12i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_12i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_12i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_12i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_13i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_13i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_13i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_13i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_12i                                     : 16;
            UNSG32 u_v_13i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_14i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_14i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_14i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_14i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_15i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_15i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_15i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_15i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_14i                                     : 16;
            UNSG32 u_v_15i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_16i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_16i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_16i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_16i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_17i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_17i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_17i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_17i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_16i                                     : 16;
            UNSG32 u_v_17i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_18i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_18i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_18i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_18i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_19i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_19i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_19i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_19i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_18i                                     : 16;
            UNSG32 u_v_19i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_20i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_20i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_20i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_20i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_21i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_21i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_21i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_21i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_20i                                     : 16;
            UNSG32 u_v_21i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_22i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_22i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_22i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_22i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_23i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_23i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_23i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_23i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_22i                                     : 16;
            UNSG32 u_v_23i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_24i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_24i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_24i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_24i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_25i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_25i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_25i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_25i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_24i                                     : 16;
            UNSG32 u_v_25i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_26i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_26i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_26i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_26i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_27i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_27i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_27i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_27i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_26i                                     : 16;
            UNSG32 u_v_27i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_28i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_28i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_28i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_28i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_29i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_29i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_29i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_29i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_28i                                     : 16;
            UNSG32 u_v_29i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_30i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_30i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_30i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_30i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_31i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_31i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_31i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_31i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_30i                                     : 16;
            UNSG32 u_v_31i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_32i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_32i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_32i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_32i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_33i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_33i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_33i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_33i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_32i                                     : 16;
            UNSG32 u_v_33i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_34i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_34i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_34i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_34i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_35i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_35i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_35i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_35i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_34i                                     : 16;
            UNSG32 u_v_35i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_36i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_36i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_36i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_36i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_37i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_37i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_37i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_37i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_36i                                     : 16;
            UNSG32 u_v_37i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_38i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_38i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_38i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_38i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_39i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_39i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_39i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_39i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_38i                                     : 16;
            UNSG32 u_v_39i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_40i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_40i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_40i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_40i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_41i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_41i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_41i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_41i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_40i                                     : 16;
            UNSG32 u_v_41i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_42i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_42i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_42i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_42i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_43i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_43i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_43i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_43i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_42i                                     : 16;
            UNSG32 u_v_43i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_44i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_44i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_44i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_44i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_45i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_45i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_45i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_45i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_44i                                     : 16;
            UNSG32 u_v_45i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_46i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_46i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_46i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_46i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_47i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_47i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_47i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_47i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_46i                                     : 16;
            UNSG32 u_v_47i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_48i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_48i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_48i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_48i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_49i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_49i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_49i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_49i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_48i                                     : 16;
            UNSG32 u_v_49i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_50i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_50i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_50i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_50i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_51i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_51i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_51i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_51i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_50i                                     : 16;
            UNSG32 u_v_51i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_52i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_52i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_52i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_52i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_53i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_53i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_53i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_53i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_52i                                     : 16;
            UNSG32 u_v_53i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_54i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_54i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_54i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_54i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_55i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_55i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_55i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_55i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_54i                                     : 16;
            UNSG32 u_v_55i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_56i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_56i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_56i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_56i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_57i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_57i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_57i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_57i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_56i                                     : 16;
            UNSG32 u_v_57i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_58i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_58i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_58i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_58i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_59i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_59i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_59i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_59i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_58i                                     : 16;
            UNSG32 u_v_59i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_60i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_60i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_60i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_60i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_61i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_61i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_61i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_61i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_60i                                     : 16;
            UNSG32 u_v_61i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_62i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_62i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_62i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_62i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_63i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_63i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_63i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_63i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_62i                                     : 16;
            UNSG32 u_v_63i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_64i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_64i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_64i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_64i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_65i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_65i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_65i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_65i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_64i                                     : 16;
            UNSG32 u_v_65i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_66i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_66i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_66i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_66i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_67i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_67i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_67i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_67i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_66i                                     : 16;
            UNSG32 u_v_67i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_68i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_68i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_68i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_68i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_69i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_69i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_69i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_69i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_68i                                     : 16;
            UNSG32 u_v_69i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_70i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_70i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_70i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_70i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_71i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_71i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_71i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_71i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_70i                                     : 16;
            UNSG32 u_v_71i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_72i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_72i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_72i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_72i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_73i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_73i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_73i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_73i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_72i                                     : 16;
            UNSG32 u_v_73i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_74i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_74i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_74i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_74i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_75i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_75i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_75i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_75i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_74i                                     : 16;
            UNSG32 u_v_75i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_76i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_76i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_76i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_76i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_77i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_77i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_77i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_77i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_76i                                     : 16;
            UNSG32 u_v_77i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_78i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_78i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_78i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_78i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_79i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_79i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_79i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_79i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_78i                                     : 16;
            UNSG32 u_v_79i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_80i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_80i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_80i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_80i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_81i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_81i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_81i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_81i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_80i                                     : 16;
            UNSG32 u_v_81i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_82i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_82i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_82i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_82i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_83i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_83i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_83i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_83i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_82i                                     : 16;
            UNSG32 u_v_83i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_84i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_84i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_84i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_84i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_85i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_85i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_85i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_85i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_84i                                     : 16;
            UNSG32 u_v_85i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_86i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_86i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_86i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_86i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_87i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_87i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_87i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_87i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_86i                                     : 16;
            UNSG32 u_v_87i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_88i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_88i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_88i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_88i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_89i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_89i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_89i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_89i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_88i                                     : 16;
            UNSG32 u_v_89i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_90i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_90i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_90i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_90i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_91i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_91i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_91i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_91i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_90i                                     : 16;
            UNSG32 u_v_91i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_92i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_92i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_92i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_92i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_93i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_93i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_93i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_93i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_92i                                     : 16;
            UNSG32 u_v_93i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_94i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_94i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_94i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_94i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_95i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_95i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_95i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_95i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_94i                                     : 16;
            UNSG32 u_v_95i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_96i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_96i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_96i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_96i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_97i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_97i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_97i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_97i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_96i                                     : 16;
            UNSG32 u_v_97i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_98i(r32)                             _BFGET_(r32,15, 0)
    #define   SET32temp_v_98i(r32,v)                           _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_98i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_98i(r16,v)                           _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_99i(r32)                             _BFGET_(r32,31,16)
    #define   SET32temp_v_99i(r32,v)                           _BFSET_(r32,31,16,v)
    #define   GET16temp_v_99i(r16)                             _BFGET_(r16,15, 0)
    #define   SET16temp_v_99i(r16,v)                           _BFSET_(r16,15, 0,v)

            UNSG32 u_v_98i                                     : 16;
            UNSG32 u_v_99i                                     : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_100i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_100i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_100i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_100i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_101i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_101i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_101i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_101i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_100i                                    : 16;
            UNSG32 u_v_101i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_102i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_102i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_102i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_102i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_103i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_103i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_103i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_103i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_102i                                    : 16;
            UNSG32 u_v_103i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_104i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_104i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_104i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_104i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_105i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_105i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_105i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_105i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_104i                                    : 16;
            UNSG32 u_v_105i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_106i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_106i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_106i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_106i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_107i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_107i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_107i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_107i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_106i                                    : 16;
            UNSG32 u_v_107i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_108i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_108i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_108i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_108i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_109i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_109i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_109i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_109i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_108i                                    : 16;
            UNSG32 u_v_109i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_110i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_110i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_110i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_110i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_111i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_111i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_111i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_111i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_110i                                    : 16;
            UNSG32 u_v_111i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_112i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_112i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_112i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_112i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_113i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_113i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_113i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_113i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_112i                                    : 16;
            UNSG32 u_v_113i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_114i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_114i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_114i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_114i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_115i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_115i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_115i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_115i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_114i                                    : 16;
            UNSG32 u_v_115i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_116i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_116i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_116i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_116i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_117i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_117i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_117i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_117i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_116i                                    : 16;
            UNSG32 u_v_117i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_118i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_118i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_118i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_118i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_119i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_119i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_119i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_119i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_118i                                    : 16;
            UNSG32 u_v_119i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_120i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_120i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_120i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_120i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_121i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_121i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_121i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_121i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_120i                                    : 16;
            UNSG32 u_v_121i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_122i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_122i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_122i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_122i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_123i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_123i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_123i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_123i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_122i                                    : 16;
            UNSG32 u_v_123i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_124i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_124i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_124i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_124i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_125i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_125i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_125i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_125i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_124i                                    : 16;
            UNSG32 u_v_125i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_126i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_126i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_126i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_126i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_127i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_127i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_127i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_127i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_126i                                    : 16;
            UNSG32 u_v_127i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_128i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_128i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_128i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_128i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_129i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_129i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_129i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_129i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_128i                                    : 16;
            UNSG32 u_v_129i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_130i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_130i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_130i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_130i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_131i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_131i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_131i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_131i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_130i                                    : 16;
            UNSG32 u_v_131i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_132i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_132i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_132i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_132i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_133i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_133i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_133i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_133i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_132i                                    : 16;
            UNSG32 u_v_133i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_134i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_134i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_134i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_134i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_135i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_135i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_135i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_135i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_134i                                    : 16;
            UNSG32 u_v_135i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_136i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_136i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_136i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_136i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_137i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_137i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_137i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_137i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_136i                                    : 16;
            UNSG32 u_v_137i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_138i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_138i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_138i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_138i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_139i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_139i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_139i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_139i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_138i                                    : 16;
            UNSG32 u_v_139i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_140i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_140i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_140i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_140i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_141i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_141i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_141i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_141i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_140i                                    : 16;
            UNSG32 u_v_141i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_142i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_142i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_142i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_142i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_143i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_143i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_143i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_143i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_142i                                    : 16;
            UNSG32 u_v_143i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_144i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_144i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_144i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_144i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_145i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_145i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_145i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_145i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_144i                                    : 16;
            UNSG32 u_v_145i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_146i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_146i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_146i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_146i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_147i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_147i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_147i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_147i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_146i                                    : 16;
            UNSG32 u_v_147i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_148i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_148i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_148i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_148i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_149i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_149i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_149i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_149i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_148i                                    : 16;
            UNSG32 u_v_149i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_150i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_150i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_150i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_150i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_151i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_151i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_151i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_151i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_150i                                    : 16;
            UNSG32 u_v_151i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_152i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_152i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_152i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_152i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_153i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_153i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_153i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_153i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_152i                                    : 16;
            UNSG32 u_v_153i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_154i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_154i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_154i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_154i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_155i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_155i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_155i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_155i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_154i                                    : 16;
            UNSG32 u_v_155i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_156i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_156i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_156i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_156i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_157i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_157i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_157i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_157i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_156i                                    : 16;
            UNSG32 u_v_157i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_158i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_158i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_158i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_158i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_159i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_159i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_159i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_159i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_158i                                    : 16;
            UNSG32 u_v_159i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_160i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_160i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_160i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_160i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_161i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_161i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_161i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_161i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_160i                                    : 16;
            UNSG32 u_v_161i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_162i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_162i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_162i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_162i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_163i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_163i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_163i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_163i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_162i                                    : 16;
            UNSG32 u_v_163i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_164i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_164i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_164i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_164i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_165i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_165i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_165i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_165i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_164i                                    : 16;
            UNSG32 u_v_165i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_166i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_166i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_166i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_166i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_167i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_167i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_167i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_167i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_166i                                    : 16;
            UNSG32 u_v_167i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_168i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_168i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_168i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_168i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_169i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_169i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_169i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_169i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_168i                                    : 16;
            UNSG32 u_v_169i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_170i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_170i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_170i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_170i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_171i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_171i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_171i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_171i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_170i                                    : 16;
            UNSG32 u_v_171i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_172i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_172i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_172i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_172i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_173i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_173i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_173i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_173i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_172i                                    : 16;
            UNSG32 u_v_173i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_174i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_174i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_174i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_174i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_175i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_175i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_175i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_175i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_174i                                    : 16;
            UNSG32 u_v_175i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_176i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_176i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_176i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_176i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_177i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_177i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_177i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_177i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_176i                                    : 16;
            UNSG32 u_v_177i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_178i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_178i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_178i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_178i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_179i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_179i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_179i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_179i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_178i                                    : 16;
            UNSG32 u_v_179i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_180i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_180i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_180i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_180i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_181i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_181i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_181i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_181i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_180i                                    : 16;
            UNSG32 u_v_181i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_182i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_182i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_182i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_182i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_183i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_183i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_183i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_183i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_182i                                    : 16;
            UNSG32 u_v_183i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_184i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_184i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_184i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_184i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_185i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_185i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_185i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_185i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_184i                                    : 16;
            UNSG32 u_v_185i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_186i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_186i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_186i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_186i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_187i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_187i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_187i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_187i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_186i                                    : 16;
            UNSG32 u_v_187i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_188i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_188i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_188i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_188i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_189i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_189i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_189i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_189i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_188i                                    : 16;
            UNSG32 u_v_189i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_190i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_190i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_190i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_190i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_191i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_191i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_191i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_191i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_190i                                    : 16;
            UNSG32 u_v_191i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_192i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_192i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_192i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_192i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_193i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_193i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_193i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_193i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_192i                                    : 16;
            UNSG32 u_v_193i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_194i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_194i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_194i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_194i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_195i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_195i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_195i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_195i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_194i                                    : 16;
            UNSG32 u_v_195i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_196i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_196i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_196i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_196i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_197i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_197i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_197i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_197i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_196i                                    : 16;
            UNSG32 u_v_197i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_198i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_198i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_198i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_198i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_199i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_199i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_199i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_199i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_198i                                    : 16;
            UNSG32 u_v_199i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_200i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_200i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_200i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_200i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_201i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_201i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_201i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_201i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_200i                                    : 16;
            UNSG32 u_v_201i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_202i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_202i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_202i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_202i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_203i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_203i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_203i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_203i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_202i                                    : 16;
            UNSG32 u_v_203i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_204i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_204i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_204i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_204i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_205i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_205i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_205i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_205i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_204i                                    : 16;
            UNSG32 u_v_205i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_206i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_206i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_206i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_206i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_207i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_207i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_207i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_207i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_206i                                    : 16;
            UNSG32 u_v_207i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_208i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_208i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_208i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_208i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_209i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_209i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_209i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_209i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_208i                                    : 16;
            UNSG32 u_v_209i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_210i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_210i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_210i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_210i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_211i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_211i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_211i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_211i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_210i                                    : 16;
            UNSG32 u_v_211i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_212i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_212i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_212i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_212i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_213i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_213i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_213i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_213i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_212i                                    : 16;
            UNSG32 u_v_213i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_214i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_214i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_214i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_214i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_215i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_215i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_215i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_215i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_214i                                    : 16;
            UNSG32 u_v_215i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_216i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_216i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_216i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_216i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_217i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_217i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_217i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_217i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_216i                                    : 16;
            UNSG32 u_v_217i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_218i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_218i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_218i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_218i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_219i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_219i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_219i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_219i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_218i                                    : 16;
            UNSG32 u_v_219i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_220i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_220i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_220i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_220i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_221i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_221i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_221i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_221i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_220i                                    : 16;
            UNSG32 u_v_221i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_222i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_222i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_222i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_222i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_223i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_223i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_223i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_223i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_222i                                    : 16;
            UNSG32 u_v_223i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_224i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_224i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_224i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_224i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_225i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_225i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_225i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_225i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_224i                                    : 16;
            UNSG32 u_v_225i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_226i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_226i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_226i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_226i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_227i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_227i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_227i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_227i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_226i                                    : 16;
            UNSG32 u_v_227i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_228i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_228i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_228i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_228i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_229i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_229i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_229i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_229i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_228i                                    : 16;
            UNSG32 u_v_229i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_230i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_230i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_230i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_230i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_231i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_231i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_231i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_231i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_230i                                    : 16;
            UNSG32 u_v_231i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_232i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_232i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_232i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_232i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_233i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_233i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_233i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_233i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_232i                                    : 16;
            UNSG32 u_v_233i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_234i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_234i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_234i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_234i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_235i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_235i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_235i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_235i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_234i                                    : 16;
            UNSG32 u_v_235i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_236i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_236i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_236i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_236i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_237i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_237i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_237i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_237i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_236i                                    : 16;
            UNSG32 u_v_237i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_238i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_238i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_238i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_238i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_239i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_239i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_239i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_239i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_238i                                    : 16;
            UNSG32 u_v_239i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_240i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_240i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_240i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_240i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_241i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_241i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_241i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_241i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_240i                                    : 16;
            UNSG32 u_v_241i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_242i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_242i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_242i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_242i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_243i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_243i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_243i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_243i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_242i                                    : 16;
            UNSG32 u_v_243i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_244i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_244i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_244i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_244i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_245i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_245i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_245i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_245i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_244i                                    : 16;
            UNSG32 u_v_245i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_246i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_246i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_246i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_246i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_247i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_247i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_247i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_247i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_246i                                    : 16;
            UNSG32 u_v_247i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_248i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_248i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_248i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_248i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_249i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_249i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_249i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_249i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_248i                                    : 16;
            UNSG32 u_v_249i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_250i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_250i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_250i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_250i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_251i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_251i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_251i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_251i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_250i                                    : 16;
            UNSG32 u_v_251i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_252i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_252i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_252i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_252i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_253i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_253i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_253i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_253i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_252i                                    : 16;
            UNSG32 u_v_253i                                    : 16;
    ///////////////////////////////////////////////////////////

    #define   GET32temp_v_254i(r32)                            _BFGET_(r32,15, 0)
    #define   SET32temp_v_254i(r32,v)                          _BFSET_(r32,15, 0,v)
    #define   GET16temp_v_254i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_254i(r16,v)                          _BFSET_(r16,15, 0,v)

    #define   GET32temp_v_255i(r32)                            _BFGET_(r32,31,16)
    #define   SET32temp_v_255i(r32,v)                          _BFSET_(r32,31,16,v)
    #define   GET16temp_v_255i(r16)                            _BFGET_(r16,15, 0)
    #define   SET16temp_v_255i(r16,v)                          _BFSET_(r16,15, 0,v)

            UNSG32 u_v_254i                                    : 16;
            UNSG32 u_v_255i                                    : 16;
    ///////////////////////////////////////////////////////////
    } SIE_temp;

    ///////////////////////////////////////////////////////////
     SIGN32 temp_drvrd(SIE_temp *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 temp_drvwr(SIE_temp *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void temp_reset(SIE_temp *p);
     SIGN32 temp_cmp  (SIE_temp *p, SIE_temp *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define temp_check(p,pie,pfx,hLOG) temp_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define temp_print(p,    pfx,hLOG) temp_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: temp
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE vp8HalData                               (4,4)
///     # # ----------------------------------------------------------
///               : stackPSER          0x2000
///               : stackSYNP          0x3000
///     @ 0x00000                      (P)
///     # 0x00000 mbCtxQ               
///               $MBCTXQ              mbCtxQ            REG          
///                                    ###
///                                    * 8 bank MB context buffer
///                                    * Including history context in & out
///                                    ###
///     @ 0x00A10                      (P)
///     # 0x00A10 mbpropQ              
///               $MBPROP              mbpropQ           REG       [8]
///                                    ###
///                                    * MB properties to syntax processor
///                                    * Also know as P3MsgQ:
///                                    * HBO FIFO (m2h):
///                                    * Message queue to vpro.hbo to vCache
///                                    ###
///     @ 0x00C10                      (P)
///     # 0x00C10 ctxPSER              
///               $CtxPSER             ctxPSER           REG          
///                                    ###
///                                    * Context of stream parser
///                                    ###
///     @ 0x00C34                      (W-)
///     #         # Stuffing bytes...
///               %% 32
///     @ 0x00C38                      (P)
///     # 0x00C38 ctxSYNP              
///               $CtxSYNP             ctxSYNP           REG          
///                                    ###
///                                    * Context of syntax processor
///                                    ###
///     @ 0x00C68                      (P)
///     # 0x00C68 tagDS                
///               $LUT64b              tagDS             REG          
///                                    ###
///                                    * Receiving latest retired tag from data streamer
///                                    ###
///     @ 0x00C70                      (P)
///     # 0x00C70 DSMsgQ               
///               $LUT64b              DSMsgQ            REG      [16]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to data streamer
///                                    ###
///     @ 0x00CF0                      (P)
///     # 0x00CF0 mvUpdateProbs        
///               $LUT64b              mvUpdateProbs     REG       [5]
///     @ 0x00D18                      (P)
///     # 0x00D18 NlocCmd              
///               $LUT64b              NlocCmd           REG       [3]
///     @ 0x00D30                      (P)
///     # 0x00D30 InvScan              
///               $LUT64b              InvScan           REG       [2]
///     @ 0x00D40                      (P)
///     # 0x00D40 defaultCoefProb1     
///               $LUT64b              defaultCoefProb1  REG      [66]
///     @ 0x00F50                      (P)
///     # 0x00F50 localPSER            
///               $LUT64b              localPSER         REG      [16]
///     @ 0x00FD0                      (W-)
///     #         # Stuffing bytes...
///               %% 384
///     @ 0x01000                      (P)
///     # 0x01000 P3TCQ                
///               $LUT64b              P3TCQ             REG     [128]
///     @ 0x01400                      (P)
///     # 0x01400 vldBuf               
///               $LUT64b              vldBuf            REG     [128]
///     @ 0x01800                      (P)
///     # 0x01800 coefUpdateProbs      
///               $LUT64b              coefUpdateProbs   REG     [132]
///     @ 0x01C20                      (P)
///     # 0x01C20 defaultCoefProb0     
///               $LUT64b              defaultCoefProb0  REG      [66]
///     @ 0x01E30                      (P)
///     # 0x01E30 MVProb               
///               $LUT64b              MVProb            REG       [5]
///     @ 0x01E58                      (P)
///     # 0x01E58 PIntraModeProb       
///               $LUT64b              PIntraModeProb    REG          
///     @ 0x01E60                      (W-)
///     #         # Stuffing bytes...
///               %% 3328
///     @ 0x02000                      (P)
///     # 0x02000 VCMsgQ               
///               $LUT64b              VCMsgQ            REG     [128]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to vpro.hbo to PCube
///                                    ###
///     @ 0x02400                      (P)
///     # 0x02400 P3FopQ               
///               $LUT64b              P3FopQ            REG      [64]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * FOP queue to vpro.hbo to PCube
///                                    ###
///     @ 0x02600                      (P)
///     # 0x02600 fopMbmodeTbl         
///               $LUT64b              fopMbmodeTbl      REG       [3]
///     @ 0x02618                      (P)
///     # 0x02618 fopCmdTbl            
///               $LUT64b              fopCmdTbl         REG      [48]
///     @ 0x02798                      (P)
///     # 0x02798 NeighbFindCmdTbl     
///               $LUT64b              NeighbFindCmdTbl  REG       [2]
///     @ 0x027A8                      (P)
///     # 0x027A8 QPTable              
///               $LUT64b              QPTable           REG     [192]
///     @ 0x02DA8                      (P)
///     # 0x02DA8 localSYNP            
///               $LUT64b              localSYNP         REG      [24]
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:   11880B, bits:   91270b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_vp8HalData
#define h_vp8HalData (){}

    #define        vp8HalData_stackPSER                        0x2000
    #define        vp8HalData_stackSYNP                        0x3000
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_mbCtxQ                           0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_mbpropQ                          0x0A10
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_ctxPSER                          0x0C10
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_ctxSYNP                          0x0C38
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_tagDS                            0x0C68
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_DSMsgQ                           0x0C70
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_mvUpdateProbs                    0x0CF0
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_NlocCmd                          0x0D18
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_InvScan                          0x0D30
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_defaultCoefProb1                 0x0D40
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_localPSER                        0x0F50
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_P3TCQ                            0x1000
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_vldBuf                           0x1400
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_coefUpdateProbs                  0x1800
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_defaultCoefProb0                 0x1C20
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_MVProb                           0x1E30
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_PIntraModeProb                   0x1E58
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_VCMsgQ                           0x2000
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_P3FopQ                           0x2400
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_fopMbmodeTbl                     0x2600
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_fopCmdTbl                        0x2618
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_NeighbFindCmdTbl                 0x2798
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_QPTable                          0x27A8
    ///////////////////////////////////////////////////////////
    #define     RA_vp8HalData_localSYNP                        0x2DA8
    ///////////////////////////////////////////////////////////

    typedef struct SIE_vp8HalData {
    ///////////////////////////////////////////////////////////
              SIE_MBCTXQ                                       ie_mbCtxQ;
    ///////////////////////////////////////////////////////////
              SIE_MBPROP                                       ie_mbpropQ[8];
    ///////////////////////////////////////////////////////////
              SIE_CtxPSER                                      ie_ctxPSER;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC34                                    [4];
    ///////////////////////////////////////////////////////////
              SIE_CtxSYNP                                      ie_ctxSYNP;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_tagDS;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DSMsgQ[16];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_mvUpdateProbs[5];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_NlocCmd[3];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_InvScan[2];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_defaultCoefProb1[66];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_localPSER[16];
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxFD0                                    [48];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_P3TCQ[128];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_vldBuf[128];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_coefUpdateProbs[132];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_defaultCoefProb0[66];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_MVProb[5];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_PIntraModeProb;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx1E60                                   [416];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_VCMsgQ[128];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_P3FopQ[64];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_fopMbmodeTbl[3];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_fopCmdTbl[48];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_NeighbFindCmdTbl[2];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_QPTable[192];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_localSYNP[24];
    ///////////////////////////////////////////////////////////
    } SIE_vp8HalData;

    ///////////////////////////////////////////////////////////
     SIGN32 vp8HalData_drvrd(SIE_vp8HalData *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 vp8HalData_drvwr(SIE_vp8HalData *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void vp8HalData_reset(SIE_vp8HalData *p);
     SIGN32 vp8HalData_cmp  (SIE_vp8HalData *p, SIE_vp8HalData *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define vp8HalData_check(p,pie,pfx,hLOG) vp8HalData_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define vp8HalData_print(p,    pfx,hLOG) vp8HalData_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: vp8HalData
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE dvHalData                                (4,4)
///     # # ----------------------------------------------------------
///               : stackPSER          0x2000
///               : stackSYNP          0x3000
///     @ 0x00000                      (P)
///     # 0x00000 localTCQ0            
///               $LUT64b              localTCQ0         REG     [192]
///                                    ###
///                                    * Coeff buffer for syntax processor.
///                                    * Receiving coeff from data streamer.
///                                    * Pingpong buffer, each for one MB.
///                                    ###
///     @ 0x00600                      (W-)
///     #         # Stuffing bytes...
///               %% 8320
///     @ 0x00A10                      (P)
///     # 0x00A10 mbpropQ              
///               $MBPROP              mbpropQ           REG       [8]
///                                    ###
///                                    * MB properties to syntax processor
///                                    * Also know as P3MsgQ:
///                                    * HBO FIFO (m2h):
///                                    * Message queue to vpro.hbo to vCache
///                                    ###
///     @ 0x00C10                      (P)
///     # 0x00C10 ctxPSER              
///               $CtxPSER             ctxPSER           REG          
///                                    ###
///                                    * Context of stream parser
///                                    ###
///     @ 0x00C34                      (W-)
///     #         # Stuffing bytes...
///               %% 96
///     @ 0x00C40                      (P)
///     # 0x00C40 ctxSYNP              
///               $CtxSYNP             ctxSYNP           REG          
///                                    ###
///                                    * Context of syntax processor
///                                    ###
///     @ 0x00C70                      (W-)
///     #         # Stuffing bytes...
///               %% 64
///     @ 0x00C78                      (P)
///     # 0x00C78 tagDS                
///               $LUT64b              tagDS             REG          
///                                    ###
///                                    * Receiving latest retired tag from data streamer
///                                    ###
///     @ 0x00C80                      (P)
///     # 0x00C80 DSMsgQ               
///               $LUT64b              DSMsgQ            REG      [16]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * Message queue to data streamer
///                                    ###
///     @ 0x00D00                      (P)
///     # 0x00D00 InvScan              
///               $LUT64b              InvScan           REG      [64]
///                                    ###
///                                    * Inverse scan tables.
///                                    ###
///     @ 0x00F00                      (P)
///     # 0x00F00 Res00                
///               $LUT64b              Res00             REG          
///                                    ###
///                                    * Reserved.
///                                    ###
///     @ 0x00F08                      (W-)
///     #         # Stuffing bytes...
///               %% 1984
///     @ 0x01000                      (P)
///     # 0x01000 P3TCQ                
///               $LUT64b              P3TCQ             REG     [128]
///                                    ###
///                                    * HBO FIFO (m2h):
///                                    * TC queue to vpro.hbo to PCube
///                                    ###
///     @ 0x01400                      (W-)
///     #         # Stuffing bytes...
///               %% 8192
///     @ 0x01800                      (P)
///     # 0x01800 localTCQ1            
///               $LUT64b              localTCQ1         REG     [192]
///                                    ###
///                                    * Coeff buffer for syntax processor.
///                                    * Receiving coeff from data streamer.
///                                    * Pingpong buffer, each for one MB.
///                                    ###
///     @ 0x01E00                      (P)
///     # 0x01E00 dsmsg                
///               $DSmsg               dsmsg             REG          
///                                    ###
///                                    * Dsmsg for synpro
///                                    ###
///     @ 0x01E08                      (P)
///     # 0x01E08 Res02                
///               $LUT64b              Res02             REG          
///                                    ###
///                                    * Reserved.
///                                    ###
///     @ 0x01E10                      (P)
///     # 0x01E10 localPSER            
///               $VSLocal             localPSER         REG          
///                                    ###
///                                    * Local data area of stream parser
///                                    ###
///     @ 0x01E90                      (W-)
///     #         # Stuffing bytes...
///               %% 2944
///     @ 0x02000                      (P)
///     # 0x02000 QMatrix              
///               $LUT64b              QMatrix           REG     [416]
///                                    ###
///                                    * Dequant matrix tables.
///                                    ###
///     @ 0x02D00                      (P)
///     # 0x02D00 QmIdxTab             
///               $LUT64b              QmIdxTab          REG      [16]
///                                    ###
///                                    * Index table for dequant matrix tables.
///                                    ###
///     @ 0x02D80                      (P)
///     # 0x02D80 WeightTab            
///               $LUT64b              WeightTab         REG      [32]
///                                    ###
///                                    * Deweight tables.
///                                    ###
///     @ 0x02E80                      (P)
///     # 0x02E80 localSYNP            
///               $VSLocal             localSYNP         REG          
///                                    ###
///                                    * Local data area of syntax processor
///                                    * End of dvHalData
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:   12032B, bits:   74630b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_dvHalData
#define h_dvHalData (){}

    #define        dvHalData_stackPSER                         0x2000
    #define        dvHalData_stackSYNP                         0x3000
    ///////////////////////////////////////////////////////////
    #define     RA_dvHalData_localTCQ0                         0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_dvHalData_mbpropQ                           0x0A10
    ///////////////////////////////////////////////////////////
    #define     RA_dvHalData_ctxPSER                           0x0C10
    ///////////////////////////////////////////////////////////
    #define     RA_dvHalData_ctxSYNP                           0x0C40
    ///////////////////////////////////////////////////////////
    #define     RA_dvHalData_tagDS                             0x0C78
    ///////////////////////////////////////////////////////////
    #define     RA_dvHalData_DSMsgQ                            0x0C80
    ///////////////////////////////////////////////////////////
    #define     RA_dvHalData_InvScan                           0x0D00
    ///////////////////////////////////////////////////////////
    #define     RA_dvHalData_Res00                             0x0F00
    ///////////////////////////////////////////////////////////
    #define     RA_dvHalData_P3TCQ                             0x1000
    ///////////////////////////////////////////////////////////
    #define     RA_dvHalData_localTCQ1                         0x1800
    ///////////////////////////////////////////////////////////
    #define     RA_dvHalData_dsmsg                             0x1E00
    ///////////////////////////////////////////////////////////
    #define     RA_dvHalData_Res02                             0x1E08
    ///////////////////////////////////////////////////////////
    #define     RA_dvHalData_localPSER                         0x1E10
    ///////////////////////////////////////////////////////////
    #define     RA_dvHalData_QMatrix                           0x2000
    ///////////////////////////////////////////////////////////
    #define     RA_dvHalData_QmIdxTab                          0x2D00
    ///////////////////////////////////////////////////////////
    #define     RA_dvHalData_WeightTab                         0x2D80
    ///////////////////////////////////////////////////////////
    #define     RA_dvHalData_localSYNP                         0x2E80
    ///////////////////////////////////////////////////////////

    typedef struct SIE_dvHalData {
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_localTCQ0[192];
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx600                                    [1040];
    ///////////////////////////////////////////////////////////
              SIE_MBPROP                                       ie_mbpropQ[8];
    ///////////////////////////////////////////////////////////
              SIE_CtxPSER                                      ie_ctxPSER;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC34                                    [12];
    ///////////////////////////////////////////////////////////
              SIE_CtxSYNP                                      ie_ctxSYNP;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxC70                                    [8];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_tagDS;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_DSMsgQ[16];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_InvScan[64];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_Res00;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDxF08                                    [248];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_P3TCQ[128];
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx1400                                   [1024];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_localTCQ1[192];
    ///////////////////////////////////////////////////////////
              SIE_DSmsg                                        ie_dsmsg;
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_Res02;
    ///////////////////////////////////////////////////////////
              SIE_VSLocal                                      ie_localPSER;
    ///////////////////////////////////////////////////////////
             UNSG8 RSVDx1E90                                   [368];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_QMatrix[416];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_QmIdxTab[16];
    ///////////////////////////////////////////////////////////
              SIE_LUT64b                                       ie_WeightTab[32];
    ///////////////////////////////////////////////////////////
              SIE_VSLocal                                      ie_localSYNP;
    ///////////////////////////////////////////////////////////
    } SIE_dvHalData;

    ///////////////////////////////////////////////////////////
     SIGN32 dvHalData_drvrd(SIE_dvHalData *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 dvHalData_drvwr(SIE_dvHalData *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void dvHalData_reset(SIE_dvHalData *p);
     SIGN32 dvHalData_cmp  (SIE_dvHalData *p, SIE_dvHalData *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define dvHalData_check(p,pie,pfx,hLOG) dvHalData_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define dvHalData_print(p,    pfx,hLOG) dvHalData_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: dvHalData
////////////////////////////////////////////////////////////



#ifdef __cplusplus
  }
#endif
#pragma  pack()

#endif
//////
/// ENDOFFILE: vscope_spec.h
////////////////////////////////////////////////////////////

