shithub: mc

Download patch

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);