Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(83)

Side by Side Diff: test/cctest/test-disasm-mips.cc

Issue 1195793002: MIPS: Implemented PC-relative instructions for R6. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/cctest/test-assembler-mips64.cc ('k') | test/cctest/test-disasm-mips64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 210
211 COMPARE(bnvc(a0, a0, static_cast<int16_t>(0)), 211 COMPARE(bnvc(a0, a0, static_cast<int16_t>(0)),
212 "60840000 bnvc a0, a0, 0"); 212 "60840000 bnvc a0, a0, 0");
213 COMPARE(bnvc(a1, a0, static_cast<int16_t>(0)), 213 COMPARE(bnvc(a1, a0, static_cast<int16_t>(0)),
214 "60a40000 bnvc a1, a0, 0"); 214 "60a40000 bnvc a1, a0, 0");
215 COMPARE(bnvc(a1, a0, 32767), 215 COMPARE(bnvc(a1, a0, 32767),
216 "60a47fff bnvc a1, a0, 32767"); 216 "60a47fff bnvc a1, a0, 32767");
217 COMPARE(bnvc(a1, a0, -32768), 217 COMPARE(bnvc(a1, a0, -32768),
218 "60a48000 bnvc a1, a0, -32768"); 218 "60a48000 bnvc a1, a0, -32768");
219 219
220 COMPARE(beqzc(a0, 0), 220 COMPARE(beqzc(a0, -1048576), "d8900000 beqzc a0, -1048576");
221 "d8800000 beqzc a0, 0x0"); 221 COMPARE(beqzc(a0, -1), "d89fffff beqzc a0, -1");
222 COMPARE(beqzc(a0, 0xfffff), // 0x0fffff == 1048575. 222 COMPARE(beqzc(a0, 0), "d8800000 beqzc a0, 0");
223 "d88fffff beqzc a0, 0xfffff"); 223 COMPARE(beqzc(a0, 1), "d8800001 beqzc a0, 1");
224 COMPARE(beqzc(a0, 0x100000), // 0x100000 == -1048576. 224 COMPARE(beqzc(a0, 1048575), "d88fffff beqzc a0, 1048575");
225 "d8900000 beqzc a0, 0x100000");
226 225
227 COMPARE(bnezc(a0, 0), 226 COMPARE(bnezc(a0, 0),
228 "f8800000 bnezc a0, 0x0"); 227 "f8800000 bnezc a0, 0x0");
229 COMPARE(bnezc(a0, 0xfffff), // 0x0fffff == 1048575. 228 COMPARE(bnezc(a0, 0xfffff), // 0x0fffff == 1048575.
230 "f88fffff bnezc a0, 0xfffff"); 229 "f88fffff bnezc a0, 0xfffff");
231 COMPARE(bnezc(a0, 0x100000), // 0x100000 == -1048576. 230 COMPARE(bnezc(a0, 0x100000), // 0x100000 == -1048576.
232 "f8900000 bnezc a0, 0x100000"); 231 "f8900000 bnezc a0, 0x100000");
232
233 COMPARE(bc(-33554432), "ca000000 bc -33554432");
234 COMPARE(bc(-1), "cbffffff bc -1");
235 COMPARE(bc(0), "c8000000 bc 0");
236 COMPARE(bc(1), "c8000001 bc 1");
237 COMPARE(bc(33554431), "c9ffffff bc 33554431");
238
239 COMPARE(balc(-33554432), "ea000000 balc -33554432");
240 COMPARE(balc(-1), "ebffffff balc -1");
241 COMPARE(balc(0), "e8000000 balc 0");
242 COMPARE(balc(1), "e8000001 balc 1");
243 COMPARE(balc(33554431), "e9ffffff balc 33554431");
233 } 244 }
234 245
235 COMPARE(addiu(a0, a1, 0x0), 246 COMPARE(addiu(a0, a1, 0x0),
236 "24a40000 addiu a0, a1, 0"); 247 "24a40000 addiu a0, a1, 0");
237 COMPARE(addiu(s0, s1, 32767), 248 COMPARE(addiu(s0, s1, 32767),
238 "26307fff addiu s0, s1, 32767"); 249 "26307fff addiu s0, s1, 32767");
239 COMPARE(addiu(t2, t3, -32768), 250 COMPARE(addiu(t2, t3, -32768),
240 "256a8000 addiu t2, t3, -32768"); 251 "256a8000 addiu t2, t3, -32768");
241 COMPARE(addiu(v0, v1, -1), 252 COMPARE(addiu(v0, v1, -1),
242 "2462ffff addiu v0, v1, -1"); 253 "2462ffff addiu v0, v1, -1");
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 } else { 510 } else {
500 COMPARE(clz(a0, a1), 511 COMPARE(clz(a0, a1),
501 "70a42020 clz a0, a1"); 512 "70a42020 clz a0, a1");
502 COMPARE(clz(s6, s7), 513 COMPARE(clz(s6, s7),
503 "72f6b020 clz s6, s7"); 514 "72f6b020 clz s6, s7");
504 COMPARE(clz(v0, v1), 515 COMPARE(clz(v0, v1),
505 "70621020 clz v0, v1"); 516 "70621020 clz v0, v1");
506 } 517 }
507 } 518 }
508 519
509 if (IsMipsArchVariant(kMips32r2)) { 520 if (IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) {
510 COMPARE(ins_(a0, a1, 31, 1), 521 COMPARE(ins_(a0, a1, 31, 1),
511 "7ca4ffc4 ins a0, a1, 31, 1"); 522 "7ca4ffc4 ins a0, a1, 31, 1");
512 COMPARE(ins_(s6, s7, 30, 2), 523 COMPARE(ins_(s6, s7, 30, 2),
513 "7ef6ff84 ins s6, s7, 30, 2"); 524 "7ef6ff84 ins s6, s7, 30, 2");
514 COMPARE(ins_(v0, v1, 0, 32), 525 COMPARE(ins_(v0, v1, 0, 32),
515 "7c62f804 ins v0, v1, 0, 32"); 526 "7c62f804 ins v0, v1, 0, 32");
516 COMPARE(ext_(a0, a1, 31, 1), 527 COMPARE(ext_(a0, a1, 31, 1),
517 "7ca407c0 ext a0, a1, 31, 1"); 528 "7ca407c0 ext a0, a1, 31, 1");
518 COMPARE(ext_(s6, s7, 30, 2), 529 COMPARE(ext_(s6, s7, 30, 2),
519 "7ef60f80 ext s6, s7, 30, 2"); 530 "7ef60f80 ext s6, s7, 30, 2");
520 COMPARE(ext_(v0, v1, 0, 32), 531 COMPARE(ext_(v0, v1, 0, 32),
521 "7c62f800 ext v0, v1, 0, 32"); 532 "7c62f800 ext v0, v1, 0, 32");
522 } 533 }
523 COMPARE(add_s(f4, f6, f8), "46083100 add.s f4, f6, f8"); 534 COMPARE(add_s(f4, f6, f8), "46083100 add.s f4, f6, f8");
524 COMPARE(add_d(f12, f14, f16), "46307300 add.d f12, f14, f16"); 535 COMPARE(add_d(f12, f14, f16), "46307300 add.d f12, f14, f16");
525 536
526 if (IsMipsArchVariant(kMips32r6)) { 537 if (IsMipsArchVariant(kMips32r6)) {
527 COMPARE(bitswap(a0, a1), "7c052020 bitswap a0, a1"); 538 COMPARE(bitswap(a0, a1), "7c052020 bitswap a0, a1");
528 COMPARE(bitswap(t8, s0), "7c10c020 bitswap t8, s0"); 539 COMPARE(bitswap(t8, s0), "7c10c020 bitswap t8, s0");
529 } 540 }
530 541
531 COMPARE(abs_s(f6, f8), "46004185 abs.s f6, f8"); 542 COMPARE(abs_s(f6, f8), "46004185 abs.s f6, f8");
532 COMPARE(abs_d(f10, f12), "46206285 abs.d f10, f12"); 543 COMPARE(abs_d(f10, f12), "46206285 abs.d f10, f12");
533 544
534 COMPARE(div_s(f2, f4, f6), "46062083 div.s f2, f4, f6"); 545 COMPARE(div_s(f2, f4, f6), "46062083 div.s f2, f4, f6");
535 COMPARE(div_d(f2, f4, f6), "46262083 div.d f2, f4, f6"); 546 COMPARE(div_d(f2, f4, f6), "46262083 div.d f2, f4, f6");
536 547
548 if (IsMipsArchVariant(kMips32r6)) {
549 COMPARE(align(v0, a0, a1, 0), "7c851220 align v0, a0, a1, 0");
550 COMPARE(align(v0, a0, a1, 1), "7c851260 align v0, a0, a1, 1");
551 COMPARE(align(v0, a0, a1, 2), "7c8512a0 align v0, a0, a1, 2");
552 COMPARE(align(v0, a0, a1, 3), "7c8512e0 align v0, a0, a1, 3");
553 }
554
555 if (IsMipsArchVariant(kMips32r6)) {
556 COMPARE(aluipc(v0, 0), "ec5f0000 aluipc v0, 0");
557 COMPARE(aluipc(v0, 1), "ec5f0001 aluipc v0, 1");
558 COMPARE(aluipc(v0, 32767), "ec5f7fff aluipc v0, 32767");
559 COMPARE(aluipc(v0, -32768), "ec5f8000 aluipc v0, -32768");
560 COMPARE(aluipc(v0, -1), "ec5fffff aluipc v0, -1");
561 }
562
563 if (IsMipsArchVariant(kMips32r6)) {
564 COMPARE(auipc(t8, 0), "ef1e0000 auipc t8, 0");
565 COMPARE(auipc(t8, 1), "ef1e0001 auipc t8, 1");
566 COMPARE(auipc(t8, 32767), "ef1e7fff auipc t8, 32767");
567 COMPARE(auipc(t8, -32768), "ef1e8000 auipc t8, -32768");
568 COMPARE(auipc(t8, -1), "ef1effff auipc t8, -1");
569 }
570
571 if (IsMipsArchVariant(kMips32r6)) {
572 COMPARE(lwpc(t1, 0), "ed280000 lwpc t1, 0");
573 COMPARE(lwpc(t1, 4), "ed280004 lwpc t1, 4");
574 COMPARE(lwpc(t1, -4), "ed2ffffc lwpc t1, -4");
575 }
576
577 if (IsMipsArchVariant(kMips32r6)) {
578 COMPARE(jic(t0, -32768), "d8088000 jic t0, -32768");
579 COMPARE(jic(t0, -1), "d808ffff jic t0, -1");
580 COMPARE(jic(t0, 0), "d8080000 jic t0, 0");
581 COMPARE(jic(t0, 4), "d8080004 jic t0, 4");
582 COMPARE(jic(t0, 32767), "d8087fff jic t0, 32767");
583 }
584
585 if (IsMipsArchVariant(kMips32r6)) {
586 COMPARE(addiupc(a0, 262143), "ec83ffff addiupc a0, 262143");
587 COMPARE(addiupc(a0, -1), "ec87ffff addiupc a0, -1");
588 COMPARE(addiupc(v0, 0), "ec400000 addiupc v0, 0");
589 COMPARE(addiupc(s1, 1), "ee200001 addiupc s1, 1");
590 COMPARE(addiupc(a0, -262144), "ec840000 addiupc a0, -262144");
591 }
592
593 if (IsMipsArchVariant(kMips32r6)) {
594 COMPARE(jialc(a0, -32768), "f8048000 jialc a0, 0x8000");
595 COMPARE(jialc(a0, -1), "f804ffff jialc a0, 0xffff");
596 COMPARE(jialc(v0, 0), "f8020000 jialc v0, 0x0");
597 COMPARE(jialc(s1, 1), "f8110001 jialc s1, 0x1");
598 COMPARE(jialc(a0, 32767), "f8047fff jialc a0, 0x7fff");
599 }
600
537 VERIFY_RUN(); 601 VERIFY_RUN();
538 } 602 }
539 603
540 604
541 TEST(Type1) { 605 TEST(Type1) {
542 SET_UP(); 606 SET_UP();
543 if (IsMipsArchVariant(kMips32r6)) { 607 if (IsMipsArchVariant(kMips32r6)) {
544 COMPARE(seleqz(a0, a1, a2), "00a62035 seleqz a0, a1, a2"); 608 COMPARE(seleqz(a0, a1, a2), "00a62035 seleqz a0, a1, a2");
545 COMPARE(selnez(a0, a1, a2), "00a62037 selnez a0, a1, a2"); 609 COMPARE(selnez(a0, a1, a2), "00a62037 selnez a0, a1, a2");
546 610
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
735 COMPARE(cvt_s_w(f22, f24), "4680c5a0 cvt.s.w f22, f24"); 799 COMPARE(cvt_s_w(f22, f24), "4680c5a0 cvt.s.w f22, f24");
736 if (IsMipsArchVariant(kMips32r6) || IsMipsArchVariant(kMips32r2)) { 800 if (IsMipsArchVariant(kMips32r6) || IsMipsArchVariant(kMips32r2)) {
737 COMPARE(cvt_s_l(f22, f24), "46a0c5a0 cvt.s.l f22, f24"); 801 COMPARE(cvt_s_l(f22, f24), "46a0c5a0 cvt.s.l f22, f24");
738 } 802 }
739 803
740 COMPARE(cvt_s_d(f22, f24), "4620c5a0 cvt.s.d f22, f24"); 804 COMPARE(cvt_s_d(f22, f24), "4620c5a0 cvt.s.d f22, f24");
741 COMPARE(cvt_s_w(f22, f24), "4680c5a0 cvt.s.w f22, f24"); 805 COMPARE(cvt_s_w(f22, f24), "4680c5a0 cvt.s.w f22, f24");
742 806
743 VERIFY_RUN(); 807 VERIFY_RUN();
744 } 808 }
OLDNEW
« no previous file with comments | « test/cctest/test-assembler-mips64.cc ('k') | test/cctest/test-disasm-mips64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698