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 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
103 COMPARE(addu(v0, v1, s0), | 103 COMPARE(addu(v0, v1, s0), |
104 "00701021 addu v0, v1, s0"); | 104 "00701021 addu v0, v1, s0"); |
105 | 105 |
106 COMPARE(subu(a0, a1, a2), | 106 COMPARE(subu(a0, a1, a2), |
107 "00a62023 subu a0, a1, a2"); | 107 "00a62023 subu a0, a1, a2"); |
108 COMPARE(subu(t2, t3, t4), | 108 COMPARE(subu(t2, t3, t4), |
109 "016c5023 subu t2, t3, t4"); | 109 "016c5023 subu t2, t3, t4"); |
110 COMPARE(subu(v0, v1, s0), | 110 COMPARE(subu(v0, v1, s0), |
111 "00701023 subu v0, v1, s0"); | 111 "00701023 subu v0, v1, s0"); |
112 | 112 |
113 if (!IsMipsArchVariant(kMips32r6)) { | 113 COMPARE(mult(a0, a1), |
114 COMPARE(mult(a0, a1), | 114 "00850018 mult a0, a1"); |
115 "00850018 mult a0, a1"); | 115 COMPARE(mult(t2, t3), |
116 COMPARE(mult(t2, t3), | 116 "014b0018 mult t2, t3"); |
117 "014b0018 mult t2, t3"); | 117 COMPARE(mult(v0, v1), |
118 COMPARE(mult(v0, v1), | 118 "00430018 mult v0, v1"); |
119 "00430018 mult v0, v1"); | |
120 | 119 |
121 COMPARE(multu(a0, a1), | 120 COMPARE(multu(a0, a1), |
122 "00850019 multu a0, a1"); | 121 "00850019 multu a0, a1"); |
123 COMPARE(multu(t2, t3), | 122 COMPARE(multu(t2, t3), |
124 "014b0019 multu t2, t3"); | 123 "014b0019 multu t2, t3"); |
125 COMPARE(multu(v0, v1), | 124 COMPARE(multu(v0, v1), |
126 "00430019 multu v0, v1"); | 125 "00430019 multu v0, v1"); |
127 | 126 |
128 COMPARE(div(a0, a1), | 127 COMPARE(div(a0, a1), |
129 "0085001a div a0, a1"); | 128 "0085001a div a0, a1"); |
130 COMPARE(div(t2, t3), | 129 COMPARE(div(t2, t3), |
131 "014b001a div t2, t3"); | 130 "014b001a div t2, t3"); |
132 COMPARE(div(v0, v1), | 131 COMPARE(div(v0, v1), |
133 "0043001a div v0, v1"); | 132 "0043001a div v0, v1"); |
134 | 133 |
135 COMPARE(divu(a0, a1), | 134 COMPARE(divu(a0, a1), |
136 "0085001b divu a0, a1"); | 135 "0085001b divu a0, a1"); |
137 COMPARE(divu(t2, t3), | 136 COMPARE(divu(t2, t3), |
138 "014b001b divu t2, t3"); | 137 "014b001b divu t2, t3"); |
139 COMPARE(divu(v0, v1), | 138 COMPARE(divu(v0, v1), |
140 "0043001b divu v0, v1"); | 139 "0043001b divu v0, v1"); |
141 | 140 |
142 if (!IsMipsArchVariant(kLoongson)) { | 141 if (kArchVariant != kLoongson) { |
143 COMPARE(mul(a0, a1, a2), | |
144 "70a62002 mul a0, a1, a2"); | |
145 COMPARE(mul(t2, t3, t4), | |
146 "716c5002 mul t2, t3, t4"); | |
147 COMPARE(mul(v0, v1, s0), | |
148 "70701002 mul v0, v1, s0"); | |
149 } | |
150 } else { // MIPS32r6. | |
151 COMPARE(mul(a0, a1, a2), | 142 COMPARE(mul(a0, a1, a2), |
152 "00a62098 mul a0, a1, a2"); | 143 "70a62002 mul a0, a1, a2"); |
153 COMPARE(muh(a0, a1, a2), | 144 COMPARE(mul(t2, t3, t4), |
154 "00a620d8 muh a0, a1, a2"); | 145 "716c5002 mul t2, t3, t4"); |
155 COMPARE(mul(t1, t2, t3), | 146 COMPARE(mul(v0, v1, s0), |
156 "014b4898 mul t1, t2, t3"); | 147 "70701002 mul v0, v1, s0"); |
157 COMPARE(muh(t1, t2, t3), | |
158 "014b48d8 muh t1, t2, t3"); | |
159 COMPARE(mul(v0, v1, a0), | |
160 "00641098 mul v0, v1, a0"); | |
161 COMPARE(muh(v0, v1, a0), | |
162 "006410d8 muh v0, v1, a0"); | |
163 | |
164 COMPARE(mulu(a0, a1, a2), | |
165 "00a62099 mulu a0, a1, a2"); | |
166 COMPARE(muhu(a0, a1, a2), | |
167 "00a620d9 muhu a0, a1, a2"); | |
168 COMPARE(mulu(t1, t2, t3), | |
169 "014b4899 mulu t1, t2, t3"); | |
170 COMPARE(muhu(t1, t2, t3), | |
171 "014b48d9 muhu t1, t2, t3"); | |
172 COMPARE(mulu(v0, v1, a0), | |
173 "00641099 mulu v0, v1, a0"); | |
174 COMPARE(muhu(v0, v1, a0), | |
175 "006410d9 muhu v0, v1, a0"); | |
176 | |
177 COMPARE(div(a0, a1, a2), | |
178 "00a6209a div a0, a1, a2"); | |
179 COMPARE(mod(a0, a1, a2), | |
180 "00a620da mod a0, a1, a2"); | |
181 COMPARE(div(t1, t2, t3), | |
182 "014b489a div t1, t2, t3"); | |
183 COMPARE(mod(t1, t2, t3), | |
184 "014b48da mod t1, t2, t3"); | |
185 COMPARE(div(v0, v1, a0), | |
186 "0064109a div v0, v1, a0"); | |
187 COMPARE(mod(v0, v1, a0), | |
188 "006410da mod v0, v1, a0"); | |
189 | |
190 COMPARE(divu(a0, a1, a2), | |
191 "00a6209b divu a0, a1, a2"); | |
192 COMPARE(modu(a0, a1, a2), | |
193 "00a620db modu a0, a1, a2"); | |
194 COMPARE(divu(t1, t2, t3), | |
195 "014b489b divu t1, t2, t3"); | |
196 COMPARE(modu(t1, t2, t3), | |
197 "014b48db modu t1, t2, t3"); | |
198 COMPARE(divu(v0, v1, a0), | |
199 "0064109b divu v0, v1, a0"); | |
200 COMPARE(modu(v0, v1, a0), | |
201 "006410db modu v0, v1, a0"); | |
202 | |
203 COMPARE(bovc(a0, a0, static_cast<int16_t>(0)), | |
204 "20840000 bovc a0, a0, 0"); | |
205 COMPARE(bovc(a1, a0, static_cast<int16_t>(0)), | |
206 "20a40000 bovc a1, a0, 0"); | |
207 COMPARE(bovc(a1, a0, 32767), | |
208 "20a47fff bovc a1, a0, 32767"); | |
209 COMPARE(bovc(a1, a0, -32768), | |
210 "20a48000 bovc a1, a0, -32768"); | |
211 | |
212 COMPARE(bnvc(a0, a0, static_cast<int16_t>(0)), | |
213 "60840000 bnvc a0, a0, 0"); | |
214 COMPARE(bnvc(a1, a0, static_cast<int16_t>(0)), | |
215 "60a40000 bnvc a1, a0, 0"); | |
216 COMPARE(bnvc(a1, a0, 32767), | |
217 "60a47fff bnvc a1, a0, 32767"); | |
218 COMPARE(bnvc(a1, a0, -32768), | |
219 "60a48000 bnvc a1, a0, -32768"); | |
220 | |
221 COMPARE(beqzc(a0, 0), | |
222 "d8800000 beqzc a0, 0x0"); | |
223 COMPARE(beqzc(a0, 0xfffff), // 0x0fffff == 1048575. | |
224 "d88fffff beqzc a0, 0xfffff"); | |
225 COMPARE(beqzc(a0, 0x100000), // 0x100000 == -1048576. | |
226 "d8900000 beqzc a0, 0x100000"); | |
227 | |
228 COMPARE(bnezc(a0, 0), | |
229 "f8800000 bnezc a0, 0x0"); | |
230 COMPARE(bnezc(a0, 0xfffff), // 0x0fffff == 1048575. | |
231 "f88fffff bnezc a0, 0xfffff"); | |
232 COMPARE(bnezc(a0, 0x100000), // 0x100000 == -1048576. | |
233 "f8900000 bnezc a0, 0x100000"); | |
234 } | 148 } |
235 | 149 |
236 COMPARE(addiu(a0, a1, 0x0), | 150 COMPARE(addiu(a0, a1, 0x0), |
237 "24a40000 addiu a0, a1, 0"); | 151 "24a40000 addiu a0, a1, 0"); |
238 COMPARE(addiu(s0, s1, 32767), | 152 COMPARE(addiu(s0, s1, 32767), |
239 "26307fff addiu s0, s1, 32767"); | 153 "26307fff addiu s0, s1, 32767"); |
240 COMPARE(addiu(t2, t3, -32768), | 154 COMPARE(addiu(t2, t3, -32768), |
241 "256a8000 addiu t2, t3, -32768"); | 155 "256a8000 addiu t2, t3, -32768"); |
242 COMPARE(addiu(v0, v1, -1), | 156 COMPARE(addiu(v0, v1, -1), |
243 "2462ffff addiu v0, v1, -1"); | 157 "2462ffff addiu v0, v1, -1"); |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 | 259 |
346 COMPARE(srav(a0, a1, a2), | 260 COMPARE(srav(a0, a1, a2), |
347 "00c52007 srav a0, a1, a2"); | 261 "00c52007 srav a0, a1, a2"); |
348 COMPARE(srav(s0, s1, s2), | 262 COMPARE(srav(s0, s1, s2), |
349 "02518007 srav s0, s1, s2"); | 263 "02518007 srav s0, s1, s2"); |
350 COMPARE(srav(t2, t3, t4), | 264 COMPARE(srav(t2, t3, t4), |
351 "018b5007 srav t2, t3, t4"); | 265 "018b5007 srav t2, t3, t4"); |
352 COMPARE(srav(v0, v1, fp), | 266 COMPARE(srav(v0, v1, fp), |
353 "03c31007 srav v0, v1, fp"); | 267 "03c31007 srav v0, v1, fp"); |
354 | 268 |
355 if (IsMipsArchVariant(kMips32r2)) { | 269 if (kArchVariant == kMips32r2) { |
356 COMPARE(rotr(a0, a1, 0), | 270 COMPARE(rotr(a0, a1, 0), |
357 "00252002 rotr a0, a1, 0"); | 271 "00252002 rotr a0, a1, 0"); |
358 COMPARE(rotr(s0, s1, 8), | 272 COMPARE(rotr(s0, s1, 8), |
359 "00318202 rotr s0, s1, 8"); | 273 "00318202 rotr s0, s1, 8"); |
360 COMPARE(rotr(t2, t3, 24), | 274 COMPARE(rotr(t2, t3, 24), |
361 "002b5602 rotr t2, t3, 24"); | 275 "002b5602 rotr t2, t3, 24"); |
362 COMPARE(rotr(v0, v1, 31), | 276 COMPARE(rotr(v0, v1, 31), |
363 "002317c2 rotr v0, v1, 31"); | 277 "002317c2 rotr v0, v1, 31"); |
364 | 278 |
365 COMPARE(rotrv(a0, a1, a2), | 279 COMPARE(rotrv(a0, a1, a2), |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
448 "2862ffff slti v0, v1, -1"); | 362 "2862ffff slti v0, v1, -1"); |
449 COMPARE(sltiu(a0, a1, 0), | 363 COMPARE(sltiu(a0, a1, 0), |
450 "2ca40000 sltiu a0, a1, 0"); | 364 "2ca40000 sltiu a0, a1, 0"); |
451 COMPARE(sltiu(s0, s1, 32767), | 365 COMPARE(sltiu(s0, s1, 32767), |
452 "2e307fff sltiu s0, s1, 32767"); | 366 "2e307fff sltiu s0, s1, 32767"); |
453 COMPARE(sltiu(t2, t3, -32768), | 367 COMPARE(sltiu(t2, t3, -32768), |
454 "2d6a8000 sltiu t2, t3, -32768"); | 368 "2d6a8000 sltiu t2, t3, -32768"); |
455 COMPARE(sltiu(v0, v1, -1), | 369 COMPARE(sltiu(v0, v1, -1), |
456 "2c62ffff sltiu v0, v1, -1"); | 370 "2c62ffff sltiu v0, v1, -1"); |
457 | 371 |
458 if (!IsMipsArchVariant(kLoongson)) { | 372 if (kArchVariant != kLoongson) { |
459 COMPARE(movz(a0, a1, a2), | 373 COMPARE(movz(a0, a1, a2), |
460 "00a6200a movz a0, a1, a2"); | 374 "00a6200a movz a0, a1, a2"); |
461 COMPARE(movz(s0, s1, s2), | 375 COMPARE(movz(s0, s1, s2), |
462 "0232800a movz s0, s1, s2"); | 376 "0232800a movz s0, s1, s2"); |
463 COMPARE(movz(t2, t3, t4), | 377 COMPARE(movz(t2, t3, t4), |
464 "016c500a movz t2, t3, t4"); | 378 "016c500a movz t2, t3, t4"); |
465 COMPARE(movz(v0, v1, a2), | 379 COMPARE(movz(v0, v1, a2), |
466 "0066100a movz v0, v1, a2"); | 380 "0066100a movz v0, v1, a2"); |
467 COMPARE(movn(a0, a1, a2), | 381 COMPARE(movn(a0, a1, a2), |
468 "00a6200b movn a0, a1, a2"); | 382 "00a6200b movn a0, a1, a2"); |
(...skipping 14 matching lines...) Expand all Loading... |
483 "007d1001 movt v0, v1, 7"); | 397 "007d1001 movt v0, v1, 7"); |
484 COMPARE(movf(a0, a1, 0), | 398 COMPARE(movf(a0, a1, 0), |
485 "00a02001 movf a0, a1, 0"); | 399 "00a02001 movf a0, a1, 0"); |
486 COMPARE(movf(s0, s1, 4), | 400 COMPARE(movf(s0, s1, 4), |
487 "02308001 movf s0, s1, 4"); | 401 "02308001 movf s0, s1, 4"); |
488 COMPARE(movf(t2, t3, 5), | 402 COMPARE(movf(t2, t3, 5), |
489 "01745001 movf t2, t3, 5"); | 403 "01745001 movf t2, t3, 5"); |
490 COMPARE(movf(v0, v1, 6), | 404 COMPARE(movf(v0, v1, 6), |
491 "00781001 movf v0, v1, 6"); | 405 "00781001 movf v0, v1, 6"); |
492 | 406 |
493 if (IsMipsArchVariant(kMips32r6)) { | 407 COMPARE(clz(a0, a1), |
494 COMPARE(clz(a0, a1), | 408 "70a42020 clz a0, a1"); |
495 "00a02050 clz a0, a1"); | 409 COMPARE(clz(s6, s7), |
496 COMPARE(clz(s6, s7), | 410 "72f6b020 clz s6, s7"); |
497 "02e0b050 clz s6, s7"); | 411 COMPARE(clz(v0, v1), |
498 COMPARE(clz(v0, v1), | 412 "70621020 clz v0, v1"); |
499 "00601050 clz v0, v1"); | |
500 } else { | |
501 COMPARE(clz(a0, a1), | |
502 "70a42020 clz a0, a1"); | |
503 COMPARE(clz(s6, s7), | |
504 "72f6b020 clz s6, s7"); | |
505 COMPARE(clz(v0, v1), | |
506 "70621020 clz v0, v1"); | |
507 } | |
508 } | 413 } |
509 | 414 |
510 if (IsMipsArchVariant(kMips32r2)) { | 415 if (kArchVariant == kMips32r2) { |
511 COMPARE(ins_(a0, a1, 31, 1), | 416 COMPARE(ins_(a0, a1, 31, 1), |
512 "7ca4ffc4 ins a0, a1, 31, 1"); | 417 "7ca4ffc4 ins a0, a1, 31, 1"); |
513 COMPARE(ins_(s6, s7, 30, 2), | 418 COMPARE(ins_(s6, s7, 30, 2), |
514 "7ef6ff84 ins s6, s7, 30, 2"); | 419 "7ef6ff84 ins s6, s7, 30, 2"); |
515 COMPARE(ins_(v0, v1, 0, 32), | 420 COMPARE(ins_(v0, v1, 0, 32), |
516 "7c62f804 ins v0, v1, 0, 32"); | 421 "7c62f804 ins v0, v1, 0, 32"); |
517 COMPARE(ext_(a0, a1, 31, 1), | 422 COMPARE(ext_(a0, a1, 31, 1), |
518 "7ca407c0 ext a0, a1, 31, 1"); | 423 "7ca407c0 ext a0, a1, 31, 1"); |
519 COMPARE(ext_(s6, s7, 30, 2), | 424 COMPARE(ext_(s6, s7, 30, 2), |
520 "7ef60f80 ext s6, s7, 30, 2"); | 425 "7ef60f80 ext s6, s7, 30, 2"); |
521 COMPARE(ext_(v0, v1, 0, 32), | 426 COMPARE(ext_(v0, v1, 0, 32), |
522 "7c62f800 ext v0, v1, 0, 32"); | 427 "7c62f800 ext v0, v1, 0, 32"); |
523 } | 428 } |
524 | 429 |
525 VERIFY_RUN(); | 430 VERIFY_RUN(); |
526 } | 431 } |
OLD | NEW |