#define REGISTER_TYPE unsigned int
#define FP_REGISTER_TYPE double
#define VP_REGISTER_TYPE float
#define GP0_REGNUM 0
#define FP0_REGNUM 32
#define VP0_REGNUM 64
#define VSCR_REGNUM 96
#define PC_REGNUM 97
#define PS_REGNUM 98
#define CR_REGNUM 99
#define LR_REGNUM 100
#define CTR_REGNUM 101
#define XER_REGNUM 102
#define MQ_REGNUM 103
#define FPSCR_REGNUM 104
#define VRSAVE_REGNUM 105
#define FP_REGNUM 1
#define SP_REGNUM 1
#define TOC_REGNUM 2
#define RV_REGNUM 3
#define SRA_REGNUM RV_REGNUM
#define FPRV_REGNUM FP0_REGNUM
#define FIRST_GP_REGNUM 0
#define LAST_GP_REGNUM 31
#define NUM_GP_REGS (LAST_GP_REGNUM - FIRST_GP_REGNUM + 1)
#define SIZE_GP_REGS (NUM_GP_REGS * 4)
#define FIRST_FP_REGNUM 32
#define LAST_FP_REGNUM 63
#define NUM_FP_REGS (LAST_FP_REGNUM - FIRST_FP_REGNUM + 1)
#define SIZE_FP_REGS (NUM_FP_REGS * 8)
#define FIRST_VP_REGNUM 64
#define LAST_VP_REGNUM 96
#define NUM_VP_REGS (LAST_VP_REGNUM - FIRST_VP_REGNUM + 1)
#define SIZE_VP_REGS (NUM_VP_REGS * 16)
#define FIRST_GSP_REGNUM 97
#define LAST_GSP_REGNUM 103
#define NUM_GSP_REGS (LAST_GSP_REGNUM - FIRST_GSP_REGNUM + 1)
#define FIRST_FSP_REGNUM 104
#define LAST_FSP_REGNUM 104
#define NUM_FSP_REGS (LAST_FSP_REGNUM - FIRST_FSP_REGNUM + 1)
#define FIRST_VSP_REGNUM 105
#define LAST_VSP_REGNUM 105
#define NUM_VSP_REGS (LAST_VSP_REGNUM - FIRST_VSP_REGNUM + 1)
#define FIRST_SP_REGNUM FIRST_GSP_REGNUM
#define LAST_SP_REGNUM LAST_VSP_REGNUM
#define NUM_SP_REGS (LAST_SP_REGNUM - FIRST_SP_REGNUM + 1)
#define SIZE_SP_REGS (NUM_SP_REGS * 4)
#define NUM_REGS (NUM_GP_REGS + NUM_FP_REGS + NUM_VP_REGS + NUM_SP_REGS)
#define REGISTER_BYTES (SIZE_GP_REGS + SIZE_FP_REGS + SIZE_VP_REGS + SIZE_SP_REGS)