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

Side by Side Diff: src/mips/disasm-mips.cc

Issue 9692048: MIPS: Added support for Loongson architectures. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « src/mips/constants-mips.h ('k') | src/mips/full-codegen-mips.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 2011 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
11 // with the distribution. 11 // with the distribution.
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 case NEG_D: 508 case NEG_D:
509 Format(instr, "neg.d 'fd, 'fs"); 509 Format(instr, "neg.d 'fd, 'fs");
510 break; 510 break;
511 case SQRT_D: 511 case SQRT_D:
512 Format(instr, "sqrt.d 'fd, 'fs"); 512 Format(instr, "sqrt.d 'fd, 'fs");
513 break; 513 break;
514 case CVT_W_D: 514 case CVT_W_D:
515 Format(instr, "cvt.w.d 'fd, 'fs"); 515 Format(instr, "cvt.w.d 'fd, 'fs");
516 break; 516 break;
517 case CVT_L_D: { 517 case CVT_L_D: {
518 if (mips32r2) { 518 if (kArchVariant == kMips32r2) {
519 Format(instr, "cvt.l.d 'fd, 'fs"); 519 Format(instr, "cvt.l.d 'fd, 'fs");
520 } else { 520 } else {
521 Unknown(instr); 521 Unknown(instr);
522 } 522 }
523 break; 523 break;
524 } 524 }
525 case TRUNC_W_D: 525 case TRUNC_W_D:
526 Format(instr, "trunc.w.d 'fd, 'fs"); 526 Format(instr, "trunc.w.d 'fd, 'fs");
527 break; 527 break;
528 case TRUNC_L_D: { 528 case TRUNC_L_D: {
529 if (mips32r2) { 529 if (kArchVariant == kMips32r2) {
530 Format(instr, "trunc.l.d 'fd, 'fs"); 530 Format(instr, "trunc.l.d 'fd, 'fs");
531 } else { 531 } else {
532 Unknown(instr); 532 Unknown(instr);
533 } 533 }
534 break; 534 break;
535 } 535 }
536 case ROUND_W_D: 536 case ROUND_W_D:
537 Format(instr, "round.w.d 'fd, 'fs"); 537 Format(instr, "round.w.d 'fd, 'fs");
538 break; 538 break;
539 case FLOOR_W_D: 539 case FLOOR_W_D:
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 case CVT_D_W: // Convert word to double. 585 case CVT_D_W: // Convert word to double.
586 Format(instr, "cvt.d.w 'fd, 'fs"); 586 Format(instr, "cvt.d.w 'fd, 'fs");
587 break; 587 break;
588 default: 588 default:
589 UNREACHABLE(); 589 UNREACHABLE();
590 } 590 }
591 break; 591 break;
592 case L: 592 case L:
593 switch (instr->FunctionFieldRaw()) { 593 switch (instr->FunctionFieldRaw()) {
594 case CVT_D_L: { 594 case CVT_D_L: {
595 if (mips32r2) { 595 if (kArchVariant == kMips32r2) {
596 Format(instr, "cvt.d.l 'fd, 'fs"); 596 Format(instr, "cvt.d.l 'fd, 'fs");
597 } else { 597 } else {
598 Unknown(instr); 598 Unknown(instr);
599 } 599 }
600 break; 600 break;
601 } 601 }
602 case CVT_S_L: { 602 case CVT_S_L: {
603 if (mips32r2) { 603 if (kArchVariant == kMips32r2) {
604 Format(instr, "cvt.s.l 'fd, 'fs"); 604 Format(instr, "cvt.s.l 'fd, 'fs");
605 } else { 605 } else {
606 Unknown(instr); 606 Unknown(instr);
607 } 607 }
608 break; 608 break;
609 } 609 }
610 default: 610 default:
611 UNREACHABLE(); 611 UNREACHABLE();
612 } 612 }
613 break; 613 break;
(...skipping 15 matching lines...) Expand all
629 case SLL: 629 case SLL:
630 if ( 0x0 == static_cast<int>(instr->InstructionBits())) 630 if ( 0x0 == static_cast<int>(instr->InstructionBits()))
631 Format(instr, "nop"); 631 Format(instr, "nop");
632 else 632 else
633 Format(instr, "sll 'rd, 'rt, 'sa"); 633 Format(instr, "sll 'rd, 'rt, 'sa");
634 break; 634 break;
635 case SRL: 635 case SRL:
636 if (instr->RsValue() == 0) { 636 if (instr->RsValue() == 0) {
637 Format(instr, "srl 'rd, 'rt, 'sa"); 637 Format(instr, "srl 'rd, 'rt, 'sa");
638 } else { 638 } else {
639 if (mips32r2) { 639 if (kArchVariant == kMips32r2) {
640 Format(instr, "rotr 'rd, 'rt, 'sa"); 640 Format(instr, "rotr 'rd, 'rt, 'sa");
641 } else { 641 } else {
642 Unknown(instr); 642 Unknown(instr);
643 } 643 }
644 } 644 }
645 break; 645 break;
646 case SRA: 646 case SRA:
647 Format(instr, "sra 'rd, 'rt, 'sa"); 647 Format(instr, "sra 'rd, 'rt, 'sa");
648 break; 648 break;
649 case SLLV: 649 case SLLV:
650 Format(instr, "sllv 'rd, 'rt, 'rs"); 650 Format(instr, "sllv 'rd, 'rt, 'rs");
651 break; 651 break;
652 case SRLV: 652 case SRLV:
653 if (instr->SaValue() == 0) { 653 if (instr->SaValue() == 0) {
654 Format(instr, "srlv 'rd, 'rt, 'rs"); 654 Format(instr, "srlv 'rd, 'rt, 'rs");
655 } else { 655 } else {
656 if (mips32r2) { 656 if (kArchVariant == kMips32r2) {
657 Format(instr, "rotrv 'rd, 'rt, 'rs"); 657 Format(instr, "rotrv 'rd, 'rt, 'rs");
658 } else { 658 } else {
659 Unknown(instr); 659 Unknown(instr);
660 } 660 }
661 } 661 }
662 break; 662 break;
663 case SRAV: 663 case SRAV:
664 Format(instr, "srav 'rd, 'rt, 'rs"); 664 Format(instr, "srav 'rd, 'rt, 'rs");
665 break; 665 break;
666 case MFHI: 666 case MFHI:
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
763 case CLZ: 763 case CLZ:
764 Format(instr, "clz 'rd, 'rs"); 764 Format(instr, "clz 'rd, 'rs");
765 break; 765 break;
766 default: 766 default:
767 UNREACHABLE(); 767 UNREACHABLE();
768 } 768 }
769 break; 769 break;
770 case SPECIAL3: 770 case SPECIAL3:
771 switch (instr->FunctionFieldRaw()) { 771 switch (instr->FunctionFieldRaw()) {
772 case INS: { 772 case INS: {
773 if (mips32r2) { 773 if (kArchVariant == kMips32r2) {
774 Format(instr, "ins 'rt, 'rs, 'sa, 'ss2"); 774 Format(instr, "ins 'rt, 'rs, 'sa, 'ss2");
775 } else { 775 } else {
776 Unknown(instr); 776 Unknown(instr);
777 } 777 }
778 break; 778 break;
779 } 779 }
780 case EXT: { 780 case EXT: {
781 if (mips32r2) { 781 if (kArchVariant == kMips32r2) {
782 Format(instr, "ext 'rt, 'rs, 'sa, 'ss1"); 782 Format(instr, "ext 'rt, 'rs, 'sa, 'ss1");
783 } else { 783 } else {
784 Unknown(instr); 784 Unknown(instr);
785 } 785 }
786 break; 786 break;
787 } 787 }
788 default: 788 default:
789 UNREACHABLE(); 789 UNREACHABLE();
790 } 790 }
791 break; 791 break;
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
1042 prev_pc, *reinterpret_cast<int32_t*>(prev_pc), buffer.start()); 1042 prev_pc, *reinterpret_cast<int32_t*>(prev_pc), buffer.start());
1043 } 1043 }
1044 } 1044 }
1045 1045
1046 1046
1047 #undef UNSUPPORTED 1047 #undef UNSUPPORTED
1048 1048
1049 } // namespace disasm 1049 } // namespace disasm
1050 1050
1051 #endif // V8_TARGET_ARCH_MIPS 1051 #endif // V8_TARGET_ARCH_MIPS
OLDNEW
« no previous file with comments | « src/mips/constants-mips.h ('k') | src/mips/full-codegen-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698