OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 if (failure) { \ | 91 if (failure) { \ |
92 V8_Fatal(__FILE__, __LINE__, "MIPS Disassembler tests failed.\n"); \ | 92 V8_Fatal(__FILE__, __LINE__, "MIPS Disassembler tests failed.\n"); \ |
93 } | 93 } |
94 | 94 |
95 | 95 |
96 TEST(Type0) { | 96 TEST(Type0) { |
97 SET_UP(); | 97 SET_UP(); |
98 | 98 |
99 COMPARE(addu(a0, a1, a2), | 99 COMPARE(addu(a0, a1, a2), |
100 "00a62021 addu a0, a1, a2"); | 100 "00a62021 addu a0, a1, a2"); |
101 COMPARE(addu(t2, t3, t4), | 101 COMPARE(daddu(a0, a1, a2), |
102 "016c5021 addu t2, t3, t4"); | 102 "00a6202d daddu a0, a1, a2"); |
| 103 COMPARE(addu(a6, a7, t0), |
| 104 "016c5021 addu a6, a7, t0"); |
| 105 COMPARE(daddu(a6, a7, t0), |
| 106 "016c502d daddu a6, a7, t0"); |
103 COMPARE(addu(v0, v1, s0), | 107 COMPARE(addu(v0, v1, s0), |
104 "00701021 addu v0, v1, s0"); | 108 "00701021 addu v0, v1, s0"); |
| 109 COMPARE(daddu(v0, v1, s0), |
| 110 "0070102d daddu v0, v1, s0"); |
105 | 111 |
106 COMPARE(subu(a0, a1, a2), | 112 COMPARE(subu(a0, a1, a2), |
107 "00a62023 subu a0, a1, a2"); | 113 "00a62023 subu a0, a1, a2"); |
108 COMPARE(subu(t2, t3, t4), | 114 COMPARE(dsubu(a0, a1, a2), |
109 "016c5023 subu t2, t3, t4"); | 115 "00a6202f dsubu a0, a1, a2"); |
| 116 COMPARE(subu(a6, a7, t0), |
| 117 "016c5023 subu a6, a7, t0"); |
| 118 COMPARE(dsubu(a6, a7, t0), |
| 119 "016c502f dsubu a6, a7, t0"); |
110 COMPARE(subu(v0, v1, s0), | 120 COMPARE(subu(v0, v1, s0), |
111 "00701023 subu v0, v1, s0"); | 121 "00701023 subu v0, v1, s0"); |
| 122 COMPARE(dsubu(v0, v1, s0), |
| 123 "0070102f dsubu v0, v1, s0"); |
112 | 124 |
113 COMPARE(mult(a0, a1), | 125 COMPARE(mult(a0, a1), |
114 "00850018 mult a0, a1"); | 126 "00850018 mult a0, a1"); |
115 COMPARE(mult(t2, t3), | 127 COMPARE(dmult(a0, a1), |
116 "014b0018 mult t2, t3"); | 128 "0085001c dmult a0, a1"); |
| 129 COMPARE(mult(a6, a7), |
| 130 "014b0018 mult a6, a7"); |
| 131 COMPARE(dmult(a6, a7), |
| 132 "014b001c dmult a6, a7"); |
117 COMPARE(mult(v0, v1), | 133 COMPARE(mult(v0, v1), |
118 "00430018 mult v0, v1"); | 134 "00430018 mult v0, v1"); |
| 135 COMPARE(dmult(v0, v1), |
| 136 "0043001c dmult v0, v1"); |
119 | 137 |
120 COMPARE(multu(a0, a1), | 138 COMPARE(multu(a0, a1), |
121 "00850019 multu a0, a1"); | 139 "00850019 multu a0, a1"); |
122 COMPARE(multu(t2, t3), | 140 COMPARE(dmultu(a0, a1), |
123 "014b0019 multu t2, t3"); | 141 "0085001d dmultu a0, a1"); |
| 142 COMPARE(multu(a6, a7), |
| 143 "014b0019 multu a6, a7"); |
| 144 COMPARE(dmultu(a6, a7), |
| 145 "014b001d dmultu a6, a7"); |
124 COMPARE(multu(v0, v1), | 146 COMPARE(multu(v0, v1), |
125 "00430019 multu v0, v1"); | 147 "00430019 multu v0, v1"); |
| 148 COMPARE(dmultu(v0, v1), |
| 149 "0043001d dmultu v0, v1"); |
126 | 150 |
127 COMPARE(div(a0, a1), | 151 COMPARE(div(a0, a1), |
128 "0085001a div a0, a1"); | 152 "0085001a div a0, a1"); |
129 COMPARE(div(t2, t3), | 153 COMPARE(div(a6, a7), |
130 "014b001a div t2, t3"); | 154 "014b001a div a6, a7"); |
131 COMPARE(div(v0, v1), | 155 COMPARE(div(v0, v1), |
132 "0043001a div v0, v1"); | 156 "0043001a div v0, v1"); |
| 157 COMPARE(ddiv(a0, a1), |
| 158 "0085001e ddiv a0, a1"); |
| 159 COMPARE(ddiv(a6, a7), |
| 160 "014b001e ddiv a6, a7"); |
| 161 COMPARE(ddiv(v0, v1), |
| 162 "0043001e ddiv v0, v1"); |
133 | 163 |
134 COMPARE(divu(a0, a1), | 164 COMPARE(divu(a0, a1), |
135 "0085001b divu a0, a1"); | 165 "0085001b divu a0, a1"); |
136 COMPARE(divu(t2, t3), | 166 COMPARE(divu(a6, a7), |
137 "014b001b divu t2, t3"); | 167 "014b001b divu a6, a7"); |
138 COMPARE(divu(v0, v1), | 168 COMPARE(divu(v0, v1), |
139 "0043001b divu v0, v1"); | 169 "0043001b divu v0, v1"); |
| 170 COMPARE(ddivu(a0, a1), |
| 171 "0085001f ddivu a0, a1"); |
| 172 COMPARE(ddivu(a6, a7), |
| 173 "014b001f ddivu a6, a7"); |
| 174 COMPARE(ddivu(v0, v1), |
| 175 "0043001f ddivu v0, v1"); |
140 | 176 |
141 if (kArchVariant != kLoongson) { | 177 if (kArchVariant != kLoongson) { |
142 COMPARE(mul(a0, a1, a2), | 178 COMPARE(mul(a0, a1, a2), |
143 "70a62002 mul a0, a1, a2"); | 179 "70a62002 mul a0, a1, a2"); |
144 COMPARE(mul(t2, t3, t4), | 180 COMPARE(mul(a6, a7, t0), |
145 "716c5002 mul t2, t3, t4"); | 181 "716c5002 mul a6, a7, t0"); |
146 COMPARE(mul(v0, v1, s0), | 182 COMPARE(mul(v0, v1, s0), |
147 "70701002 mul v0, v1, s0"); | 183 "70701002 mul v0, v1, s0"); |
148 } | 184 } |
149 | 185 |
150 COMPARE(addiu(a0, a1, 0x0), | 186 COMPARE(addiu(a0, a1, 0x0), |
151 "24a40000 addiu a0, a1, 0"); | 187 "24a40000 addiu a0, a1, 0"); |
152 COMPARE(addiu(s0, s1, 32767), | 188 COMPARE(addiu(s0, s1, 32767), |
153 "26307fff addiu s0, s1, 32767"); | 189 "26307fff addiu s0, s1, 32767"); |
154 COMPARE(addiu(t2, t3, -32768), | 190 COMPARE(addiu(a6, a7, -32768), |
155 "256a8000 addiu t2, t3, -32768"); | 191 "256a8000 addiu a6, a7, -32768"); |
156 COMPARE(addiu(v0, v1, -1), | 192 COMPARE(addiu(v0, v1, -1), |
157 "2462ffff addiu v0, v1, -1"); | 193 "2462ffff addiu v0, v1, -1"); |
| 194 COMPARE(daddiu(a0, a1, 0x0), |
| 195 "64a40000 daddiu a0, a1, 0"); |
| 196 COMPARE(daddiu(s0, s1, 32767), |
| 197 "66307fff daddiu s0, s1, 32767"); |
| 198 COMPARE(daddiu(a6, a7, -32768), |
| 199 "656a8000 daddiu a6, a7, -32768"); |
| 200 COMPARE(daddiu(v0, v1, -1), |
| 201 "6462ffff daddiu v0, v1, -1"); |
158 | 202 |
159 COMPARE(and_(a0, a1, a2), | 203 COMPARE(and_(a0, a1, a2), |
160 "00a62024 and a0, a1, a2"); | 204 "00a62024 and a0, a1, a2"); |
161 COMPARE(and_(s0, s1, s2), | 205 COMPARE(and_(s0, s1, s2), |
162 "02328024 and s0, s1, s2"); | 206 "02328024 and s0, s1, s2"); |
163 COMPARE(and_(t2, t3, t4), | 207 COMPARE(and_(a6, a7, t0), |
164 "016c5024 and t2, t3, t4"); | 208 "016c5024 and a6, a7, t0"); |
165 COMPARE(and_(v0, v1, a2), | 209 COMPARE(and_(v0, v1, a2), |
166 "00661024 and v0, v1, a2"); | 210 "00661024 and v0, v1, a2"); |
167 | 211 |
168 COMPARE(or_(a0, a1, a2), | 212 COMPARE(or_(a0, a1, a2), |
169 "00a62025 or a0, a1, a2"); | 213 "00a62025 or a0, a1, a2"); |
170 COMPARE(or_(s0, s1, s2), | 214 COMPARE(or_(s0, s1, s2), |
171 "02328025 or s0, s1, s2"); | 215 "02328025 or s0, s1, s2"); |
172 COMPARE(or_(t2, t3, t4), | 216 COMPARE(or_(a6, a7, t0), |
173 "016c5025 or t2, t3, t4"); | 217 "016c5025 or a6, a7, t0"); |
174 COMPARE(or_(v0, v1, a2), | 218 COMPARE(or_(v0, v1, a2), |
175 "00661025 or v0, v1, a2"); | 219 "00661025 or v0, v1, a2"); |
176 | 220 |
177 COMPARE(xor_(a0, a1, a2), | 221 COMPARE(xor_(a0, a1, a2), |
178 "00a62026 xor a0, a1, a2"); | 222 "00a62026 xor a0, a1, a2"); |
179 COMPARE(xor_(s0, s1, s2), | 223 COMPARE(xor_(s0, s1, s2), |
180 "02328026 xor s0, s1, s2"); | 224 "02328026 xor s0, s1, s2"); |
181 COMPARE(xor_(t2, t3, t4), | 225 COMPARE(xor_(a6, a7, t0), |
182 "016c5026 xor t2, t3, t4"); | 226 "016c5026 xor a6, a7, t0"); |
183 COMPARE(xor_(v0, v1, a2), | 227 COMPARE(xor_(v0, v1, a2), |
184 "00661026 xor v0, v1, a2"); | 228 "00661026 xor v0, v1, a2"); |
185 | 229 |
186 COMPARE(nor(a0, a1, a2), | 230 COMPARE(nor(a0, a1, a2), |
187 "00a62027 nor a0, a1, a2"); | 231 "00a62027 nor a0, a1, a2"); |
188 COMPARE(nor(s0, s1, s2), | 232 COMPARE(nor(s0, s1, s2), |
189 "02328027 nor s0, s1, s2"); | 233 "02328027 nor s0, s1, s2"); |
190 COMPARE(nor(t2, t3, t4), | 234 COMPARE(nor(a6, a7, t0), |
191 "016c5027 nor t2, t3, t4"); | 235 "016c5027 nor a6, a7, t0"); |
192 COMPARE(nor(v0, v1, a2), | 236 COMPARE(nor(v0, v1, a2), |
193 "00661027 nor v0, v1, a2"); | 237 "00661027 nor v0, v1, a2"); |
194 | 238 |
195 COMPARE(andi(a0, a1, 0x1), | 239 COMPARE(andi(a0, a1, 0x1), |
196 "30a40001 andi a0, a1, 0x1"); | 240 "30a40001 andi a0, a1, 0x1"); |
197 COMPARE(andi(v0, v1, 0xffff), | 241 COMPARE(andi(v0, v1, 0xffff), |
198 "3062ffff andi v0, v1, 0xffff"); | 242 "3062ffff andi v0, v1, 0xffff"); |
199 | 243 |
200 COMPARE(ori(a0, a1, 0x1), | 244 COMPARE(ori(a0, a1, 0x1), |
201 "34a40001 ori a0, a1, 0x1"); | 245 "34a40001 ori a0, a1, 0x1"); |
202 COMPARE(ori(v0, v1, 0xffff), | 246 COMPARE(ori(v0, v1, 0xffff), |
203 "3462ffff ori v0, v1, 0xffff"); | 247 "3462ffff ori v0, v1, 0xffff"); |
204 | 248 |
205 COMPARE(xori(a0, a1, 0x1), | 249 COMPARE(xori(a0, a1, 0x1), |
206 "38a40001 xori a0, a1, 0x1"); | 250 "38a40001 xori a0, a1, 0x1"); |
207 COMPARE(xori(v0, v1, 0xffff), | 251 COMPARE(xori(v0, v1, 0xffff), |
208 "3862ffff xori v0, v1, 0xffff"); | 252 "3862ffff xori v0, v1, 0xffff"); |
209 | 253 |
210 COMPARE(lui(a0, 0x1), | 254 COMPARE(lui(a0, 0x1), |
211 "3c040001 lui a0, 0x1"); | 255 "3c040001 lui a0, 0x1"); |
212 COMPARE(lui(v0, 0xffff), | 256 COMPARE(lui(v0, 0xffff), |
213 "3c02ffff lui v0, 0xffff"); | 257 "3c02ffff lui v0, 0xffff"); |
214 | 258 |
215 COMPARE(sll(a0, a1, 0), | 259 COMPARE(sll(a0, a1, 0), |
216 "00052000 sll a0, a1, 0"); | 260 "00052000 sll a0, a1, 0"); |
217 COMPARE(sll(s0, s1, 8), | 261 COMPARE(sll(s0, s1, 8), |
218 "00118200 sll s0, s1, 8"); | 262 "00118200 sll s0, s1, 8"); |
219 COMPARE(sll(t2, t3, 24), | 263 COMPARE(sll(a6, a7, 24), |
220 "000b5600 sll t2, t3, 24"); | 264 "000b5600 sll a6, a7, 24"); |
221 COMPARE(sll(v0, v1, 31), | 265 COMPARE(sll(v0, v1, 31), |
222 "000317c0 sll v0, v1, 31"); | 266 "000317c0 sll v0, v1, 31"); |
| 267 COMPARE(dsll(a0, a1, 0), |
| 268 "00052038 dsll a0, a1, 0"); |
| 269 COMPARE(dsll(s0, s1, 8), |
| 270 "00118238 dsll s0, s1, 8"); |
| 271 COMPARE(dsll(a6, a7, 24), |
| 272 "000b5638 dsll a6, a7, 24"); |
| 273 COMPARE(dsll(v0, v1, 31), |
| 274 "000317f8 dsll v0, v1, 31"); |
223 | 275 |
224 COMPARE(sllv(a0, a1, a2), | 276 COMPARE(sllv(a0, a1, a2), |
225 "00c52004 sllv a0, a1, a2"); | 277 "00c52004 sllv a0, a1, a2"); |
226 COMPARE(sllv(s0, s1, s2), | 278 COMPARE(sllv(s0, s1, s2), |
227 "02518004 sllv s0, s1, s2"); | 279 "02518004 sllv s0, s1, s2"); |
228 COMPARE(sllv(t2, t3, t4), | 280 COMPARE(sllv(a6, a7, t0), |
229 "018b5004 sllv t2, t3, t4"); | 281 "018b5004 sllv a6, a7, t0"); |
230 COMPARE(sllv(v0, v1, fp), | 282 COMPARE(sllv(v0, v1, fp), |
231 "03c31004 sllv v0, v1, fp"); | 283 "03c31004 sllv v0, v1, fp"); |
| 284 COMPARE(dsllv(a0, a1, a2), |
| 285 "00c52014 dsllv a0, a1, a2"); |
| 286 COMPARE(dsllv(s0, s1, s2), |
| 287 "02518014 dsllv s0, s1, s2"); |
| 288 COMPARE(dsllv(a6, a7, t0), |
| 289 "018b5014 dsllv a6, a7, t0"); |
| 290 COMPARE(dsllv(v0, v1, fp), |
| 291 "03c31014 dsllv v0, v1, fp"); |
232 | 292 |
233 COMPARE(srl(a0, a1, 0), | 293 COMPARE(srl(a0, a1, 0), |
234 "00052002 srl a0, a1, 0"); | 294 "00052002 srl a0, a1, 0"); |
235 COMPARE(srl(s0, s1, 8), | 295 COMPARE(srl(s0, s1, 8), |
236 "00118202 srl s0, s1, 8"); | 296 "00118202 srl s0, s1, 8"); |
237 COMPARE(srl(t2, t3, 24), | 297 COMPARE(srl(a6, a7, 24), |
238 "000b5602 srl t2, t3, 24"); | 298 "000b5602 srl a6, a7, 24"); |
239 COMPARE(srl(v0, v1, 31), | 299 COMPARE(srl(v0, v1, 31), |
240 "000317c2 srl v0, v1, 31"); | 300 "000317c2 srl v0, v1, 31"); |
| 301 COMPARE(dsrl(a0, a1, 0), |
| 302 "0005203a dsrl a0, a1, 0"); |
| 303 COMPARE(dsrl(s0, s1, 8), |
| 304 "0011823a dsrl s0, s1, 8"); |
| 305 COMPARE(dsrl(a6, a7, 24), |
| 306 "000b563a dsrl a6, a7, 24"); |
| 307 COMPARE(dsrl(v0, v1, 31), |
| 308 "000317fa dsrl v0, v1, 31"); |
241 | 309 |
242 COMPARE(srlv(a0, a1, a2), | 310 COMPARE(srlv(a0, a1, a2), |
243 "00c52006 srlv a0, a1, a2"); | 311 "00c52006 srlv a0, a1, a2"); |
244 COMPARE(srlv(s0, s1, s2), | 312 COMPARE(srlv(s0, s1, s2), |
245 "02518006 srlv s0, s1, s2"); | 313 "02518006 srlv s0, s1, s2"); |
246 COMPARE(srlv(t2, t3, t4), | 314 COMPARE(srlv(a6, a7, t0), |
247 "018b5006 srlv t2, t3, t4"); | 315 "018b5006 srlv a6, a7, t0"); |
248 COMPARE(srlv(v0, v1, fp), | 316 COMPARE(srlv(v0, v1, fp), |
249 "03c31006 srlv v0, v1, fp"); | 317 "03c31006 srlv v0, v1, fp"); |
| 318 COMPARE(dsrlv(a0, a1, a2), |
| 319 "00c52016 dsrlv a0, a1, a2"); |
| 320 COMPARE(dsrlv(s0, s1, s2), |
| 321 "02518016 dsrlv s0, s1, s2"); |
| 322 COMPARE(dsrlv(a6, a7, t0), |
| 323 "018b5016 dsrlv a6, a7, t0"); |
| 324 COMPARE(dsrlv(v0, v1, fp), |
| 325 "03c31016 dsrlv v0, v1, fp"); |
250 | 326 |
251 COMPARE(sra(a0, a1, 0), | 327 COMPARE(sra(a0, a1, 0), |
252 "00052003 sra a0, a1, 0"); | 328 "00052003 sra a0, a1, 0"); |
253 COMPARE(sra(s0, s1, 8), | 329 COMPARE(sra(s0, s1, 8), |
254 "00118203 sra s0, s1, 8"); | 330 "00118203 sra s0, s1, 8"); |
255 COMPARE(sra(t2, t3, 24), | 331 COMPARE(sra(a6, a7, 24), |
256 "000b5603 sra t2, t3, 24"); | 332 "000b5603 sra a6, a7, 24"); |
257 COMPARE(sra(v0, v1, 31), | 333 COMPARE(sra(v0, v1, 31), |
258 "000317c3 sra v0, v1, 31"); | 334 "000317c3 sra v0, v1, 31"); |
| 335 COMPARE(dsra(a0, a1, 0), |
| 336 "0005203b dsra a0, a1, 0"); |
| 337 COMPARE(dsra(s0, s1, 8), |
| 338 "0011823b dsra s0, s1, 8"); |
| 339 COMPARE(dsra(a6, a7, 24), |
| 340 "000b563b dsra a6, a7, 24"); |
| 341 COMPARE(dsra(v0, v1, 31), |
| 342 "000317fb dsra v0, v1, 31"); |
259 | 343 |
260 COMPARE(srav(a0, a1, a2), | 344 COMPARE(srav(a0, a1, a2), |
261 "00c52007 srav a0, a1, a2"); | 345 "00c52007 srav a0, a1, a2"); |
262 COMPARE(srav(s0, s1, s2), | 346 COMPARE(srav(s0, s1, s2), |
263 "02518007 srav s0, s1, s2"); | 347 "02518007 srav s0, s1, s2"); |
264 COMPARE(srav(t2, t3, t4), | 348 COMPARE(srav(a6, a7, t0), |
265 "018b5007 srav t2, t3, t4"); | 349 "018b5007 srav a6, a7, t0"); |
266 COMPARE(srav(v0, v1, fp), | 350 COMPARE(srav(v0, v1, fp), |
267 "03c31007 srav v0, v1, fp"); | 351 "03c31007 srav v0, v1, fp"); |
| 352 COMPARE(dsrav(a0, a1, a2), |
| 353 "00c52017 dsrav a0, a1, a2"); |
| 354 COMPARE(dsrav(s0, s1, s2), |
| 355 "02518017 dsrav s0, s1, s2"); |
| 356 COMPARE(dsrav(a6, a7, t0), |
| 357 "018b5017 dsrav a6, a7, t0"); |
| 358 COMPARE(dsrav(v0, v1, fp), |
| 359 "03c31017 dsrav v0, v1, fp"); |
268 | 360 |
269 if (kArchVariant == kMips32r2) { | 361 if (kArchVariant == kMips64r2) { |
270 COMPARE(rotr(a0, a1, 0), | 362 COMPARE(rotr(a0, a1, 0), |
271 "00252002 rotr a0, a1, 0"); | 363 "00252002 rotr a0, a1, 0"); |
272 COMPARE(rotr(s0, s1, 8), | 364 COMPARE(rotr(s0, s1, 8), |
273 "00318202 rotr s0, s1, 8"); | 365 "00318202 rotr s0, s1, 8"); |
274 COMPARE(rotr(t2, t3, 24), | 366 COMPARE(rotr(a6, a7, 24), |
275 "002b5602 rotr t2, t3, 24"); | 367 "002b5602 rotr a6, a7, 24"); |
276 COMPARE(rotr(v0, v1, 31), | 368 COMPARE(rotr(v0, v1, 31), |
277 "002317c2 rotr v0, v1, 31"); | 369 "002317c2 rotr v0, v1, 31"); |
| 370 COMPARE(drotr(a0, a1, 0), |
| 371 "0025203a drotr a0, a1, 0"); |
| 372 COMPARE(drotr(s0, s1, 8), |
| 373 "0031823a drotr s0, s1, 8"); |
| 374 COMPARE(drotr(a6, a7, 24), |
| 375 "002b563a drotr a6, a7, 24"); |
| 376 COMPARE(drotr(v0, v1, 31), |
| 377 "002317fa drotr v0, v1, 31"); |
278 | 378 |
279 COMPARE(rotrv(a0, a1, a2), | 379 COMPARE(rotrv(a0, a1, a2), |
280 "00c52046 rotrv a0, a1, a2"); | 380 "00c52046 rotrv a0, a1, a2"); |
281 COMPARE(rotrv(s0, s1, s2), | 381 COMPARE(rotrv(s0, s1, s2), |
282 "02518046 rotrv s0, s1, s2"); | 382 "02518046 rotrv s0, s1, s2"); |
283 COMPARE(rotrv(t2, t3, t4), | 383 COMPARE(rotrv(a6, a7, t0), |
284 "018b5046 rotrv t2, t3, t4"); | 384 "018b5046 rotrv a6, a7, t0"); |
285 COMPARE(rotrv(v0, v1, fp), | 385 COMPARE(rotrv(v0, v1, fp), |
286 "03c31046 rotrv v0, v1, fp"); | 386 "03c31046 rotrv v0, v1, fp"); |
| 387 COMPARE(drotrv(a0, a1, a2), |
| 388 "00c52056 drotrv a0, a1, a2"); |
| 389 COMPARE(drotrv(s0, s1, s2), |
| 390 "02518056 drotrv s0, s1, s2"); |
| 391 COMPARE(drotrv(a6, a7, t0), |
| 392 "018b5056 drotrv a6, a7, t0"); |
| 393 COMPARE(drotrv(v0, v1, fp), |
| 394 "03c31056 drotrv v0, v1, fp"); |
287 } | 395 } |
288 | 396 |
289 COMPARE(break_(0), | 397 COMPARE(break_(0), |
290 "0000000d break, code: 0x00000 (0)"); | 398 "0000000d break, code: 0x00000 (0)"); |
291 COMPARE(break_(261120), | 399 COMPARE(break_(261120), |
292 "00ff000d break, code: 0x3fc00 (261120)"); | 400 "00ff000d break, code: 0x3fc00 (261120)"); |
293 COMPARE(break_(1047552), | 401 COMPARE(break_(1047552), |
294 "03ff000d break, code: 0xffc00 (1047552)"); | 402 "03ff000d break, code: 0xffc00 (1047552)"); |
295 | 403 |
296 COMPARE(tge(a0, a1, 0), | 404 COMPARE(tge(a0, a1, 0), |
(...skipping 18 matching lines...) Expand all Loading... |
315 "0211fff4 teq s0, s1, code: 0x3ff"); | 423 "0211fff4 teq s0, s1, code: 0x3ff"); |
316 COMPARE(tne(a0, a1, 0), | 424 COMPARE(tne(a0, a1, 0), |
317 "00850036 tne a0, a1, code: 0x000"); | 425 "00850036 tne a0, a1, code: 0x000"); |
318 COMPARE(tne(s0, s1, 1023), | 426 COMPARE(tne(s0, s1, 1023), |
319 "0211fff6 tne s0, s1, code: 0x3ff"); | 427 "0211fff6 tne s0, s1, code: 0x3ff"); |
320 | 428 |
321 COMPARE(mfhi(a0), | 429 COMPARE(mfhi(a0), |
322 "00002010 mfhi a0"); | 430 "00002010 mfhi a0"); |
323 COMPARE(mfhi(s2), | 431 COMPARE(mfhi(s2), |
324 "00009010 mfhi s2"); | 432 "00009010 mfhi s2"); |
325 COMPARE(mfhi(t4), | 433 COMPARE(mfhi(t0), |
326 "00006010 mfhi t4"); | 434 "00006010 mfhi t0"); |
327 COMPARE(mfhi(v1), | 435 COMPARE(mfhi(v1), |
328 "00001810 mfhi v1"); | 436 "00001810 mfhi v1"); |
329 COMPARE(mflo(a0), | 437 COMPARE(mflo(a0), |
330 "00002012 mflo a0"); | 438 "00002012 mflo a0"); |
331 COMPARE(mflo(s2), | 439 COMPARE(mflo(s2), |
332 "00009012 mflo s2"); | 440 "00009012 mflo s2"); |
333 COMPARE(mflo(t4), | 441 COMPARE(mflo(t0), |
334 "00006012 mflo t4"); | 442 "00006012 mflo t0"); |
335 COMPARE(mflo(v1), | 443 COMPARE(mflo(v1), |
336 "00001812 mflo v1"); | 444 "00001812 mflo v1"); |
337 | 445 |
338 COMPARE(slt(a0, a1, a2), | 446 COMPARE(slt(a0, a1, a2), |
339 "00a6202a slt a0, a1, a2"); | 447 "00a6202a slt a0, a1, a2"); |
340 COMPARE(slt(s0, s1, s2), | 448 COMPARE(slt(s0, s1, s2), |
341 "0232802a slt s0, s1, s2"); | 449 "0232802a slt s0, s1, s2"); |
342 COMPARE(slt(t2, t3, t4), | 450 COMPARE(slt(a6, a7, t0), |
343 "016c502a slt t2, t3, t4"); | 451 "016c502a slt a6, a7, t0"); |
344 COMPARE(slt(v0, v1, a2), | 452 COMPARE(slt(v0, v1, a2), |
345 "0066102a slt v0, v1, a2"); | 453 "0066102a slt v0, v1, a2"); |
346 COMPARE(sltu(a0, a1, a2), | 454 COMPARE(sltu(a0, a1, a2), |
347 "00a6202b sltu a0, a1, a2"); | 455 "00a6202b sltu a0, a1, a2"); |
348 COMPARE(sltu(s0, s1, s2), | 456 COMPARE(sltu(s0, s1, s2), |
349 "0232802b sltu s0, s1, s2"); | 457 "0232802b sltu s0, s1, s2"); |
350 COMPARE(sltu(t2, t3, t4), | 458 COMPARE(sltu(a6, a7, t0), |
351 "016c502b sltu t2, t3, t4"); | 459 "016c502b sltu a6, a7, t0"); |
352 COMPARE(sltu(v0, v1, a2), | 460 COMPARE(sltu(v0, v1, a2), |
353 "0066102b sltu v0, v1, a2"); | 461 "0066102b sltu v0, v1, a2"); |
354 | 462 |
355 COMPARE(slti(a0, a1, 0), | 463 COMPARE(slti(a0, a1, 0), |
356 "28a40000 slti a0, a1, 0"); | 464 "28a40000 slti a0, a1, 0"); |
357 COMPARE(slti(s0, s1, 32767), | 465 COMPARE(slti(s0, s1, 32767), |
358 "2a307fff slti s0, s1, 32767"); | 466 "2a307fff slti s0, s1, 32767"); |
359 COMPARE(slti(t2, t3, -32768), | 467 COMPARE(slti(a6, a7, -32768), |
360 "296a8000 slti t2, t3, -32768"); | 468 "296a8000 slti a6, a7, -32768"); |
361 COMPARE(slti(v0, v1, -1), | 469 COMPARE(slti(v0, v1, -1), |
362 "2862ffff slti v0, v1, -1"); | 470 "2862ffff slti v0, v1, -1"); |
363 COMPARE(sltiu(a0, a1, 0), | 471 COMPARE(sltiu(a0, a1, 0), |
364 "2ca40000 sltiu a0, a1, 0"); | 472 "2ca40000 sltiu a0, a1, 0"); |
365 COMPARE(sltiu(s0, s1, 32767), | 473 COMPARE(sltiu(s0, s1, 32767), |
366 "2e307fff sltiu s0, s1, 32767"); | 474 "2e307fff sltiu s0, s1, 32767"); |
367 COMPARE(sltiu(t2, t3, -32768), | 475 COMPARE(sltiu(a6, a7, -32768), |
368 "2d6a8000 sltiu t2, t3, -32768"); | 476 "2d6a8000 sltiu a6, a7, -32768"); |
369 COMPARE(sltiu(v0, v1, -1), | 477 COMPARE(sltiu(v0, v1, -1), |
370 "2c62ffff sltiu v0, v1, -1"); | 478 "2c62ffff sltiu v0, v1, -1"); |
371 | 479 |
372 if (kArchVariant != kLoongson) { | 480 if (kArchVariant != kLoongson) { |
373 COMPARE(movz(a0, a1, a2), | 481 COMPARE(movz(a0, a1, a2), |
374 "00a6200a movz a0, a1, a2"); | 482 "00a6200a movz a0, a1, a2"); |
375 COMPARE(movz(s0, s1, s2), | 483 COMPARE(movz(s0, s1, s2), |
376 "0232800a movz s0, s1, s2"); | 484 "0232800a movz s0, s1, s2"); |
377 COMPARE(movz(t2, t3, t4), | 485 COMPARE(movz(a6, a7, t0), |
378 "016c500a movz t2, t3, t4"); | 486 "016c500a movz a6, a7, t0"); |
379 COMPARE(movz(v0, v1, a2), | 487 COMPARE(movz(v0, v1, a2), |
380 "0066100a movz v0, v1, a2"); | 488 "0066100a movz v0, v1, a2"); |
381 COMPARE(movn(a0, a1, a2), | 489 COMPARE(movn(a0, a1, a2), |
382 "00a6200b movn a0, a1, a2"); | 490 "00a6200b movn a0, a1, a2"); |
383 COMPARE(movn(s0, s1, s2), | 491 COMPARE(movn(s0, s1, s2), |
384 "0232800b movn s0, s1, s2"); | 492 "0232800b movn s0, s1, s2"); |
385 COMPARE(movn(t2, t3, t4), | 493 COMPARE(movn(a6, a7, t0), |
386 "016c500b movn t2, t3, t4"); | 494 "016c500b movn a6, a7, t0"); |
387 COMPARE(movn(v0, v1, a2), | 495 COMPARE(movn(v0, v1, a2), |
388 "0066100b movn v0, v1, a2"); | 496 "0066100b movn v0, v1, a2"); |
389 | 497 |
390 COMPARE(movt(a0, a1, 1), | 498 COMPARE(movt(a0, a1, 1), |
391 "00a52001 movt a0, a1, 1"); | 499 "00a52001 movt a0, a1, 1"); |
392 COMPARE(movt(s0, s1, 2), | 500 COMPARE(movt(s0, s1, 2), |
393 "02298001 movt s0, s1, 2"); | 501 "02298001 movt s0, s1, 2"); |
394 COMPARE(movt(t2, t3, 3), | 502 COMPARE(movt(a6, a7, 3), |
395 "016d5001 movt t2, t3, 3"); | 503 "016d5001 movt a6, a7, 3"); |
396 COMPARE(movt(v0, v1, 7), | 504 COMPARE(movt(v0, v1, 7), |
397 "007d1001 movt v0, v1, 7"); | 505 "007d1001 movt v0, v1, 7"); |
398 COMPARE(movf(a0, a1, 0), | 506 COMPARE(movf(a0, a1, 0), |
399 "00a02001 movf a0, a1, 0"); | 507 "00a02001 movf a0, a1, 0"); |
400 COMPARE(movf(s0, s1, 4), | 508 COMPARE(movf(s0, s1, 4), |
401 "02308001 movf s0, s1, 4"); | 509 "02308001 movf s0, s1, 4"); |
402 COMPARE(movf(t2, t3, 5), | 510 COMPARE(movf(a6, a7, 5), |
403 "01745001 movf t2, t3, 5"); | 511 "01745001 movf a6, a7, 5"); |
404 COMPARE(movf(v0, v1, 6), | 512 COMPARE(movf(v0, v1, 6), |
405 "00781001 movf v0, v1, 6"); | 513 "00781001 movf v0, v1, 6"); |
406 | 514 |
407 COMPARE(clz(a0, a1), | 515 COMPARE(clz(a0, a1), |
408 "70a42020 clz a0, a1"); | 516 "70a42020 clz a0, a1"); |
409 COMPARE(clz(s6, s7), | 517 COMPARE(clz(s6, s7), |
410 "72f6b020 clz s6, s7"); | 518 "72f6b020 clz s6, s7"); |
411 COMPARE(clz(v0, v1), | 519 COMPARE(clz(v0, v1), |
412 "70621020 clz v0, v1"); | 520 "70621020 clz v0, v1"); |
413 } | 521 } |
414 | 522 |
415 if (kArchVariant == kMips32r2) { | 523 if (kArchVariant == kMips64r2) { |
416 COMPARE(ins_(a0, a1, 31, 1), | 524 COMPARE(ins_(a0, a1, 31, 1), |
417 "7ca4ffc4 ins a0, a1, 31, 1"); | 525 "7ca4ffc4 ins a0, a1, 31, 1"); |
418 COMPARE(ins_(s6, s7, 30, 2), | 526 COMPARE(ins_(s6, s7, 30, 2), |
419 "7ef6ff84 ins s6, s7, 30, 2"); | 527 "7ef6ff84 ins s6, s7, 30, 2"); |
420 COMPARE(ins_(v0, v1, 0, 32), | 528 COMPARE(ins_(v0, v1, 0, 32), |
421 "7c62f804 ins v0, v1, 0, 32"); | 529 "7c62f804 ins v0, v1, 0, 32"); |
422 COMPARE(ext_(a0, a1, 31, 1), | 530 COMPARE(ext_(a0, a1, 31, 1), |
423 "7ca407c0 ext a0, a1, 31, 1"); | 531 "7ca407c0 ext a0, a1, 31, 1"); |
424 COMPARE(ext_(s6, s7, 30, 2), | 532 COMPARE(ext_(s6, s7, 30, 2), |
425 "7ef60f80 ext s6, s7, 30, 2"); | 533 "7ef60f80 ext s6, s7, 30, 2"); |
426 COMPARE(ext_(v0, v1, 0, 32), | 534 COMPARE(ext_(v0, v1, 0, 32), |
427 "7c62f800 ext v0, v1, 0, 32"); | 535 "7c62f800 ext v0, v1, 0, 32"); |
428 } | 536 } |
429 | 537 |
430 VERIFY_RUN(); | 538 VERIFY_RUN(); |
431 } | 539 } |
OLD | NEW |