Reg(Rnone, "%NOREG", "NOREG", ModeB)
/* byte regs */
Reg(Ral,   "%al",   "AL",  ModeB)
Reg(Rcl,   "%cl",   "CL",  ModeB)
Reg(Rdl,   "%dl",   "DL",  ModeB)
Reg(Rbl,   "%bl",   "BL",  ModeB)
Reg(Rsil,  "%sil",  "SIB", ModeB)
Reg(Rdil,  "%dil",  "DIB", ModeB)
Reg(Rspl,  "%spl",  "SPB", ModeB)
Reg(Rbpl,  "%bpl",  "BPB", ModeB)
Reg(Rr8b,  "%r8b",  "R8B", ModeB)
Reg(Rr9b,  "%r9b",  "R9B", ModeB)
Reg(Rr10b, "%r10b", "R10", ModeB)
Reg(Rr11b, "%r11b", "R11", ModeB)
Reg(Rr12b, "%r12b", "R12", ModeB)
Reg(Rr13b, "%r13b", "R13", ModeB)
Reg(Rr14b, "%r14b", "R14", ModeB)
Reg(Rr15b, "%r15b", "R15", ModeB)

/* high byte regs. We *NEVER* allocate these */
Reg(Rah,   "%ah", "AH", ModeB)
Reg(Rch,   "%ch", "CH", ModeB)
Reg(Rdh,   "%dh", "DH", ModeB)
Reg(Rbh,   "%bh", "BH", ModeB)

/* short regs */
Reg(Rax,   "%ax",   "AX",  ModeW)
Reg(Rcx,   "%cx",   "CX",  ModeW)
Reg(Rdx,   "%dx",   "DX",  ModeW)
Reg(Rbx,   "%bx",   "BX",  ModeW)
Reg(Rsi,   "%si",   "SI",  ModeW)
Reg(Rdi,   "%di",   "DI",  ModeW)
Reg(Rsp,   "%sp",   "SP",  ModeW)
Reg(Rbp,   "%bp",   "BP",  ModeW)
Reg(Rr8w,  "%r8w",  "R8",  ModeW)
Reg(Rr9w,  "%r9w",  "R9",  ModeW)
Reg(Rr10w, "%r10w", "R10", ModeW)
Reg(Rr11w, "%r11w", "R11", ModeW)
Reg(Rr12w, "%r12w", "R12", ModeW)
Reg(Rr13w, "%r13w", "R13", ModeW)
Reg(Rr14w, "%r14w", "R14", ModeW)
Reg(Rr15w, "%r15w", "R15", ModeW)


/* long regs */
Reg(Reax,  "%eax",  "AX",  ModeL)
Reg(Recx,  "%ecx",  "CX",  ModeL)
Reg(Redx,  "%edx",  "DX",  ModeL)
Reg(Rebx,  "%ebx",  "BX",  ModeL)
Reg(Resi,  "%esi",  "SI",  ModeL)
Reg(Redi,  "%edi",  "DI",  ModeL)
Reg(Resp,  "%esp",  "SP",  ModeL)
Reg(Rebp,  "%ebp",  "BP",  ModeL)
Reg(Rr8d,  "%r8d",  "R8",  ModeL)
Reg(Rr9d,  "%r9d",  "R9",  ModeL)
Reg(Rr10d, "%r10d", "R10", ModeL)
Reg(Rr11d, "%r11d", "R11", ModeL)
Reg(Rr12d, "%r12d", "R12", ModeL)
Reg(Rr13d, "%r13d", "R13", ModeL)
Reg(Rr14d, "%r14d", "R14", ModeL)
Reg(Rr15d, "%r15d", "R15", ModeL)

/* quad regs */
Reg(Rrax, "%rax", "AX",  ModeQ)
Reg(Rrcx, "%rcx", "CX",  ModeQ)
Reg(Rrdx, "%rdx", "DX",  ModeQ)
Reg(Rrbx, "%rbx", "BX",  ModeQ)
Reg(Rrsi, "%rsi", "SI",  ModeQ)
Reg(Rrdi, "%rdi", "DI",  ModeQ)
Reg(Rrsp, "%rsp", "SP",  ModeQ)
Reg(Rrbp, "%rbp", "BP",  ModeQ)
Reg(Rr8,  "%r8",  "R8",  ModeQ)
Reg(Rr9,  "%r9",  "R9",  ModeQ)
Reg(Rr10, "%r10", "R10", ModeQ)
Reg(Rr11, "%r11", "R11", ModeQ)
Reg(Rr12, "%r12", "R12", ModeQ)
Reg(Rr13, "%r13", "R13", ModeQ)
Reg(Rr14, "%r14", "R14", ModeQ)
Reg(Rr15, "%r15", "R15", ModeQ)

/* floating point registers */
Reg(Rxmm0f,  "%xmm0",  "X0",  ModeF)
Reg(Rxmm1f,  "%xmm1",  "X1",  ModeF)
Reg(Rxmm2f,  "%xmm2",  "X2",  ModeF)
Reg(Rxmm3f,  "%xmm3",  "X3",  ModeF)
Reg(Rxmm4f,  "%xmm4",  "X4",  ModeF)
Reg(Rxmm5f,  "%xmm5",  "X5",  ModeF)
Reg(Rxmm6f,  "%xmm6",  "X6",  ModeF)
Reg(Rxmm7f,  "%xmm7",  "X7",  ModeF)
Reg(Rxmm8f,  "%xmm8",  "X8",  ModeF)
Reg(Rxmm9f,  "%xmm9",  "X9",  ModeF)
Reg(Rxmm10f, "%xmm10", "X10", ModeF)
Reg(Rxmm11f, "%xmm11", "X11", ModeF)
Reg(Rxmm12f, "%xmm12", "X12", ModeF)
Reg(Rxmm13f, "%xmm13", "X13", ModeF)
Reg(Rxmm14f, "%xmm14", "X14", ModeF)
Reg(Rxmm15f, "%xmm15", "X15", ModeF)

/* double precision floating point registers */
Reg(Rxmm0d,  "%xmm0",  "X0",  ModeD)
Reg(Rxmm1d,  "%xmm1",  "X1",  ModeD)
Reg(Rxmm2d,  "%xmm2",  "X2",  ModeD)
Reg(Rxmm3d,  "%xmm3",  "X3",  ModeD)
Reg(Rxmm4d,  "%xmm4",  "X4",  ModeD)
Reg(Rxmm5d,  "%xmm5",  "X5",  ModeD)
Reg(Rxmm6d,  "%xmm6",  "X6",  ModeD)
Reg(Rxmm7d,  "%xmm7",  "X7",  ModeD)
Reg(Rxmm8d,  "%xmm8",  "X8",  ModeD)
Reg(Rxmm9d,  "%xmm9",  "X9",  ModeD)
Reg(Rxmm10d, "%xmm10", "X10", ModeD)
Reg(Rxmm11d, "%xmm11", "X11", ModeD)
Reg(Rxmm12d, "%xmm12", "X12", ModeD)
Reg(Rxmm13d, "%xmm13", "X13", ModeD)
Reg(Rxmm14d, "%xmm14", "X14", ModeD)
Reg(Rxmm15d, "%xmm15", "X15", ModeD)

Reg(Rrip, "%rip", "IP", ModeQ)
