ref: 201facaf04f5148f15806fcebb71c55e671bbe22
parent: 33ee7d302c1458d5e36a7d6bde5e7666cb394769
author: Ori Bernstein <[email protected]>
date: Mon Jul 30 14:53:43 EDT 2012
Add extended registers to coreg table.
--- a/8/isel.c
+++ b/8/isel.c
@@ -72,24 +72,65 @@
static Loc *coreg(Reg r, Mode m)
{
Reg crtab[][Nmode + 1] = {
- [Ral] = {Rnone, Ral, Rax, Reax},
- [Rcl] = {Rnone, Rcl, Rcx, Recx},
- [Rdl] = {Rnone, Rdl, Rdx, Redx},
- [Rbl] = {Rnone, Rbl, Rbx, Rebx},
+ [Ral] = {Rnone, Ral, Rax, Reax, Rrax},
+ [Rcl] = {Rnone, Rcl, Rcx, Recx, Rrcx},
+ [Rdl] = {Rnone, Rdl, Rdx, Redx, Rrdx},
+ [Rbl] = {Rnone, Rbl, Rbx, Rebx, Rrbx},
+ [Rsil] = {Rnone, Rsil, Rsi, Resi, Rrsi},
+ [Rdil] = {Rnone, Rdil, Rdi, Redi, Rrdi},
+ [R8b] = {Rnone, R8b, R8w, R8d, R8},
+ [R9b] = {Rnone, R9b, R9w, R9d, R9},
+ [R10b] = {Rnone, R10b, R10w, R10d, R10},
+ [R11b] = {Rnone, R11b, R11w, R11d, R11},
+ [R12b] = {Rnone, R12b, R12w, R12d, R12},
+ [R13b] = {Rnone, R13b, R13w, R13d, R13},
+ [R14b] = {Rnone, R14b, R14w, R14d, R14},
+ [R15b] = {Rnone, R15b, R15w, R15d, R15},
- [Rax] = {Rnone, Ral, Rax, Reax},
- [Rcx] = {Rnone, Rcl, Rcx, Recx},
- [Rdx] = {Rnone, Rdl, Rdx, Redx},
- [Rbx] = {Rnone, Rbl, Rbx, Rebx},
- [Rsi] = {Rnone, Rnone, Rsi, Resi},
- [Rdi] = {Rnone, Rnone, Rdi, Redi},
+ [Rax] = {Rnone, Ral, Rax, Reax},
+ [Rcx] = {Rnone, Rcl, Rcx, Recx},
+ [Rdx] = {Rnone, Rdl, Rdx, Redx},
+ [Rbx] = {Rnone, Rbl, Rbx, Rebx},
+ [Rsi] = {Rnone, Rsil, Rsi, Resi},
+ [Rdi] = {Rnone, Rsil, Rdi, Redi},
+ [R8w] = {Rnone, R8b, R8w, R8d, R8},
+ [R9w] = {Rnone, R9b, R9w, R9d, R9},
+ [R10w] = {Rnone, R10b, R10w, R10d, R10},
+ [R11w] = {Rnone, R11b, R11w, R11d, R11},
+ [R12w] = {Rnone, R12b, R12w, R12d, R12},
+ [R13w] = {Rnone, R13b, R13w, R13d, R13},
+ [R14w] = {Rnone, R14b, R14w, R14d, R14},
+ [R15w] = {Rnone, R15b, R15w, R15d, R15},
[Reax] = {Rnone, Ral, Rax, Reax},
[Recx] = {Rnone, Rcl, Rcx, Recx},
[Redx] = {Rnone, Rdl, Rdx, Redx},
[Rebx] = {Rnone, Rbl, Rbx, Rebx},
- [Resi] = {Rnone, Rnone, Rsi, Resi},
- [Redi] = {Rnone, Rnone, Rdi, Redi},
+ [Resi] = {Rnone, Rsil, Rsi, Resi},
+ [Redi] = {Rnone, Rsil, Rdi, Redi},
+ [R8d] = {Rnone, R8b, R8w, R8d, R8},
+ [R9d] = {Rnone, R9b, R9w, R9d, R9},
+ [R10d] = {Rnone, R10b, R10w, R10d, R10},
+ [R11d] = {Rnone, R11b, R11w, R11d, R11},
+ [R12d] = {Rnone, R12b, R12w, R12d, R12},
+ [R13d] = {Rnone, R13b, R13w, R13d, R13},
+ [R14d] = {Rnone, R14b, R14w, R14d, R14},
+ [R15d] = {Rnone, R15b, R15w, R15d, R15},
+
+ [Rrax] = {Rnone, Ral, Rax, Reax},
+ [Rrcx] = {Rnone, Rcl, Rcx, Recx},
+ [Rrdx] = {Rnone, Rdl, Rdx, Redx},
+ [Rrbx] = {Rnone, Rbl, Rbx, Rebx},
+ [Rrsi] = {Rnone, Rsil, Rsi, Resi},
+ [Rrdi] = {Rnone, Rsil, Rdi, Redi},
+ [R8] = {Rnone, R8b, R8w, R8d, R8},
+ [R9] = {Rnone, R9b, R9w, R9d, R9},
+ [R10] = {Rnone, R10b, R10w, R10d, R10},
+ [R11] = {Rnone, R11b, R11w, R11d, R11},
+ [R12] = {Rnone, R12b, R12w, R12d, R12},
+ [R13] = {Rnone, R13b, R13w, R13d, R13},
+ [R14] = {Rnone, R14b, R14w, R14d, R14},
+ [R15] = {Rnone, R15b, R15w, R15d, R15},
};
assert(crtab[r][m] != Rnone);