ref: 082f10a8b41f7768c2941950872526fcf45b0ccd
parent: f238030498f6b30f6d11e000b053e6f5154e4702
author: Ori Bernstein <ori@markovcorp.com>
date: Wed Feb 27 12:34:03 EST 2019
Remove unused lines from the regmap. These were placeholders for %rpb, %rsp -- but we never use %rsp and %rbp in the colormap, so they were just dead lines that caused confusion.
--- a/6/ra.c
+++ b/6/ra.c
@@ -45,10 +45,14 @@
#undef Use
};
-/* A map of which registers interfere */
-#define Northogonal 32
+/*
+ * A map of which registers interfere. A write to
+ * any entry in regmap[colormap[reg]] will clobber
+ * any of the other values in that row of regmap.
+ */
+#define Northogonal (32 - 2)
Reg regmap[Northogonal][Nmode] = {- /* None, ModeB, ModeW, ModeL, ModeQ, ModeF, ModeD */
+ /* None, ModeB, ModeW, ModeL, ModeQ, ModeF, ModeD */
[0] = {Rnone, Ral, Rax, Reax, Rrax, Rnone, Rnone}, [1] = {Rnone, Rcl, Rcx, Recx, Rrcx, Rnone, Rnone}, [2] = {Rnone, Rdl, Rdx, Redx, Rrdx, Rnone, Rnone},@@ -63,24 +67,22 @@
[11] = {Rnone, Rr13b, Rr13w, Rr13d, Rr13, Rnone, Rnone}, [12] = {Rnone, Rr14b, Rr14w, Rr14d, Rr14, Rnone, Rnone}, [13] = {Rnone, Rr15b, Rr15w, Rr15d, Rr15, Rnone, Rnone},- [14] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rnone, Rnone},- [15] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rnone, Rnone},- [16] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm0f, Rxmm0d},- [17] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm1f, Rxmm1d},- [18] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm2f, Rxmm2d},- [19] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm3f, Rxmm3d},- [20] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm4f, Rxmm4d},- [21] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm5f, Rxmm5d},- [22] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm6f, Rxmm6d},- [23] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm7f, Rxmm7d},- [24] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm8f, Rxmm8d},- [25] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm9f, Rxmm9d},- [26] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm10f, Rxmm10d},- [27] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm11f, Rxmm11d},- [28] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm12f, Rxmm12d},- [29] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm13f, Rxmm13d},- [30] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm14f, Rxmm14d},- [31] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm15f, Rxmm15d},+ [14] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm0f, Rxmm0d},+ [15] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm1f, Rxmm1d},+ [16] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm2f, Rxmm2d},+ [17] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm3f, Rxmm3d},+ [18] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm4f, Rxmm4d},+ [19] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm5f, Rxmm5d},+ [20] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm6f, Rxmm6d},+ [21] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm7f, Rxmm7d},+ [22] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm8f, Rxmm8d},+ [23] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm9f, Rxmm9d},+ [24] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm10f, Rxmm10d},+ [25] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm11f, Rxmm11d},+ [26] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm12f, Rxmm12d},+ [27] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm13f, Rxmm13d},+ [28] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm14f, Rxmm14d},+ [29] = {Rnone, Rnone, Rnone, Rnone, Rnone, Rxmm15f, Rxmm15d},};
/* Which regmap entry a register maps to */
@@ -100,24 +102,25 @@
[Rr13b] = 11, [Rr13w] = 11, [Rr13d] = 11, [Rr13] = 11,
[Rr14b] = 12, [Rr14w] = 12, [Rr14d] = 12, [Rr14] = 12,
[Rr15b] = 13, [Rr15w] = 13, [Rr15d] = 13, [Rr15] = 13,
+ [Rrsp] = 14, [Rrbp] = 15,
/* float */
- [Rxmm0f] = 16, [Rxmm0d] = 16,
- [Rxmm1f] = 17, [Rxmm1d] = 17,
- [Rxmm2f] = 18, [Rxmm2d] = 18,
- [Rxmm3f] = 19, [Rxmm3d] = 19,
- [Rxmm4f] = 20, [Rxmm4d] = 20,
- [Rxmm5f] = 21, [Rxmm5d] = 21,
- [Rxmm6f] = 22, [Rxmm6d] = 22,
- [Rxmm7f] = 23, [Rxmm7d] = 23,
- [Rxmm8f] = 24, [Rxmm8d] = 24,
- [Rxmm9f] = 25, [Rxmm9d] = 25,
- [Rxmm10f] = 26, [Rxmm10d] = 26,
- [Rxmm11f] = 27, [Rxmm11d] = 27,
- [Rxmm12f] = 28, [Rxmm12d] = 28,
- [Rxmm13f] = 29, [Rxmm13d] = 29,
- [Rxmm14f] = 30, [Rxmm14d] = 30,
- [Rxmm15f] = 31, [Rxmm15d] = 31,
+ [Rxmm0f] = 14, [Rxmm0d] = 14,
+ [Rxmm1f] = 15, [Rxmm1d] = 15,
+ [Rxmm2f] = 16, [Rxmm2d] = 16,
+ [Rxmm3f] = 17, [Rxmm3d] = 17,
+ [Rxmm4f] = 18, [Rxmm4d] = 18,
+ [Rxmm5f] = 19, [Rxmm5d] = 19,
+ [Rxmm6f] = 20, [Rxmm6d] = 20,
+ [Rxmm7f] = 21, [Rxmm7d] = 21,
+ [Rxmm8f] = 22, [Rxmm8d] = 22,
+ [Rxmm9f] = 23, [Rxmm9d] = 23,
+ [Rxmm10f] = 24, [Rxmm10d] = 24,
+ [Rxmm11f] = 25, [Rxmm11d] = 25,
+ [Rxmm12f] = 26, [Rxmm12d] = 26,
+ [Rxmm13f] = 27, [Rxmm13d] = 27,
+ [Rxmm14f] = 28, [Rxmm14d] = 28,
+ [Rxmm15f] = 29, [Rxmm15d] = 29,
};
size_t modesize[Nmode] = {--
⑨