ref: 201facaf04f5148f15806fcebb71c55e671bbe22
parent: 33ee7d302c1458d5e36a7d6bde5e7666cb394769
author: Ori Bernstein <orib@google.com>
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);
--
⑨