|
10 | 10 | (* *) |
11 | 11 | (* *********************************************************************) |
12 | 12 |
|
13 | | -From Coq Require Import String. |
| 13 | +From Coq Require Import String Ascii. |
14 | 14 | Require Import Coqlib Decidableplus Maps. |
15 | 15 | Require Import AST Op. |
16 | 16 |
|
@@ -119,13 +119,68 @@ Definition register_names := |
119 | 119 | :: ("D28", F28) :: ("D29", F29) :: ("D30", F30) :: ("D31", F31) |
120 | 120 | :: nil. |
121 | 121 |
|
| 122 | +Definition register_aliases := |
| 123 | + ("W0", R0) :: ("W1", R1) :: ("W2", R2) :: ("W3", R3) |
| 124 | + :: ("W4", R4) :: ("W5", R5) :: ("W6", R6) :: ("W7", R7) |
| 125 | + :: ("W8", R8) :: ("W9", R9) :: ("W10", R10) :: ("W11", R11) |
| 126 | + :: ("W12", R12) :: ("W13", R13) :: ("W14", R14) :: ("W15", R15) |
| 127 | + :: ("W17", R17) :: ("W19", R19) |
| 128 | + :: ("W20", R20) :: ("W21", R21) :: ("W22", R22) :: ("W23", R23) |
| 129 | + :: ("W24", R24) :: ("W25", R25) :: ("W26", R26) :: ("W27", R27) |
| 130 | + :: ("W28", R28) :: ("W29", R29) |
| 131 | + :: ("V0", F0) :: ("V1", F1) :: ("V2", F2) :: ("V3", F3) |
| 132 | + :: ("V4", F4) :: ("V5", F5) :: ("V6", F6) :: ("V7", F7) |
| 133 | + :: ("V8", F8) :: ("V9", F9) :: ("V10", F10) :: ("V11", F11) |
| 134 | + :: ("V12", F12) :: ("V13", F13) :: ("V14", F14) :: ("V15", F15) |
| 135 | + :: ("V16", F16) :: ("V17", F17) :: ("V18", F18) :: ("V19", F19) |
| 136 | + :: ("V20", F20) :: ("V21", F21) :: ("V22", F22) :: ("V23", F23) |
| 137 | + :: ("V24", F24) :: ("V25", F25) :: ("V26", F26) :: ("V27", F27) |
| 138 | + :: ("V28", F28) :: ("V29", F29) :: ("V30", F30) :: ("V31", F31) |
| 139 | + :: ("Q0", F0) :: ("Q1", F1) :: ("Q2", F2) :: ("Q3", F3) |
| 140 | + :: ("Q4", F4) :: ("Q5", F5) :: ("Q6", F6) :: ("Q7", F7) |
| 141 | + :: ("Q8", F8) :: ("Q9", F9) :: ("Q10", F10) :: ("Q11", F11) |
| 142 | + :: ("Q12", F12) :: ("Q13", F13) :: ("Q14", F14) :: ("Q15", F15) |
| 143 | + :: ("Q16", F16) :: ("Q17", F17) :: ("Q18", F18) :: ("Q19", F19) |
| 144 | + :: ("Q20", F20) :: ("Q21", F21) :: ("Q22", F22) :: ("Q23", F23) |
| 145 | + :: ("Q24", F24) :: ("Q25", F25) :: ("Q26", F26) :: ("Q27", F27) |
| 146 | + :: ("Q28", F28) :: ("Q29", F29) :: ("Q30", F30) :: ("Q31", F31) |
| 147 | + :: ("S0", F0) :: ("S1", F1) :: ("S2", F2) :: ("S3", F3) |
| 148 | + :: ("S4", F4) :: ("S5", F5) :: ("S6", F6) :: ("S7", F7) |
| 149 | + :: ("S8", F8) :: ("S9", F9) :: ("S10", F10) :: ("S11", F11) |
| 150 | + :: ("S12", F12) :: ("S13", F13) :: ("S14", F14) :: ("S15", F15) |
| 151 | + :: ("S16", F16) :: ("S17", F17) :: ("S18", F18) :: ("S19", F19) |
| 152 | + :: ("S20", F20) :: ("S21", F21) :: ("S22", F22) :: ("S23", F23) |
| 153 | + :: ("S24", F24) :: ("S25", F25) :: ("S26", F26) :: ("S27", F27) |
| 154 | + :: ("S28", F28) :: ("S29", F29) :: ("S30", F30) :: ("S31", F31) |
| 155 | + :: ("H0", F0) :: ("H1", F1) :: ("H2", F2) :: ("H3", F3) |
| 156 | + :: ("H4", F4) :: ("H5", F5) :: ("H6", F6) :: ("H7", F7) |
| 157 | + :: ("H8", F8) :: ("H9", F9) :: ("H10", F10) :: ("H11", F11) |
| 158 | + :: ("H12", F12) :: ("H13", F13) :: ("H14", F14) :: ("H15", F15) |
| 159 | + :: ("H16", F16) :: ("H17", F17) :: ("H18", F18) :: ("H19", F19) |
| 160 | + :: ("H20", F20) :: ("H21", F21) :: ("H22", F22) :: ("H23", F23) |
| 161 | + :: ("H24", F24) :: ("H25", F25) :: ("H26", F26) :: ("H27", F27) |
| 162 | + :: ("H28", F28) :: ("H29", F29) :: ("H30", F30) :: ("H31", F31) |
| 163 | + :: ("B0", F0) :: ("B1", F1) :: ("B2", F2) :: ("B3", F3) |
| 164 | + :: ("B4", F4) :: ("B5", F5) :: ("B6", F6) :: ("B7", F7) |
| 165 | + :: ("B8", F8) :: ("B9", F9) :: ("B10", F10) :: ("B11", F11) |
| 166 | + :: ("B12", F12) :: ("B13", F13) :: ("B14", F14) :: ("B15", F15) |
| 167 | + :: ("B16", F16) :: ("B17", F17) :: ("B18", F18) :: ("B19", F19) |
| 168 | + :: ("B20", F20) :: ("B21", F21) :: ("B22", F22) :: ("B23", F23) |
| 169 | + :: ("B24", F24) :: ("B25", F25) :: ("B26", F26) :: ("B27", F27) |
| 170 | + :: ("B28", F28) :: ("B29", F29) :: ("B30", F30) :: ("B31", F31) |
| 171 | + :: nil. |
| 172 | + |
122 | 173 | Definition register_by_name (s: string) : option mreg := |
123 | 174 | let fix assoc (l: list (string * mreg)) : option mreg := |
124 | 175 | match l with |
125 | 176 | | nil => None |
126 | 177 | | (s1, r1) :: l' => if string_dec s s1 then Some r1 else assoc l' |
127 | 178 | end |
128 | | - in assoc register_names. |
| 179 | + in |
| 180 | + match assoc register_names with |
| 181 | + | Some res => Some res |
| 182 | + | None => assoc register_aliases |
| 183 | + end. |
129 | 184 |
|
130 | 185 | (** ** Destroyed registers, preferred registers *) |
131 | 186 |
|
|
0 commit comments