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 20 matching lines...) Expand all Loading... |
31 #include "src/v8.h" | 31 #include "src/v8.h" |
32 | 32 |
33 #include "src/debug/debug.h" | 33 #include "src/debug/debug.h" |
34 #include "src/disasm.h" | 34 #include "src/disasm.h" |
35 #include "src/disassembler.h" | 35 #include "src/disassembler.h" |
36 #include "src/macro-assembler.h" | 36 #include "src/macro-assembler.h" |
37 #include "test/cctest/cctest.h" | 37 #include "test/cctest/cctest.h" |
38 | 38 |
39 using namespace v8::internal; | 39 using namespace v8::internal; |
40 | 40 |
| 41 bool prev_instr_compact_branch = false; |
41 | 42 |
42 bool DisassembleAndCompare(byte* pc, const char* compare_string) { | 43 bool DisassembleAndCompare(byte* pc, const char* compare_string) { |
43 disasm::NameConverter converter; | 44 disasm::NameConverter converter; |
44 disasm::Disassembler disasm(converter); | 45 disasm::Disassembler disasm(converter); |
45 EmbeddedVector<char, 128> disasm_buffer; | 46 EmbeddedVector<char, 128> disasm_buffer; |
46 | 47 |
| 48 if (prev_instr_compact_branch) { |
| 49 disasm.InstructionDecode(disasm_buffer, pc); |
| 50 pc += 4; |
| 51 } |
| 52 |
47 disasm.InstructionDecode(disasm_buffer, pc); | 53 disasm.InstructionDecode(disasm_buffer, pc); |
48 | 54 |
49 if (strcmp(compare_string, disasm_buffer.start()) != 0) { | 55 if (strcmp(compare_string, disasm_buffer.start()) != 0) { |
50 fprintf(stderr, | 56 fprintf(stderr, |
51 "expected: \n" | 57 "expected: \n" |
52 "%s\n" | 58 "%s\n" |
53 "disassembled: \n" | 59 "disassembled: \n" |
54 "%s\n\n", | 60 "%s\n\n", |
55 compare_string, disasm_buffer.start()); | 61 compare_string, disasm_buffer.start()); |
56 return false; | 62 return false; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 if (failure) { \ | 96 if (failure) { \ |
91 V8_Fatal(__FILE__, __LINE__, "MIPS Disassembler tests failed.\n"); \ | 97 V8_Fatal(__FILE__, __LINE__, "MIPS Disassembler tests failed.\n"); \ |
92 } | 98 } |
93 | 99 |
94 | 100 |
95 #define COMPARE_PC_REL_COMPACT(asm_, compare_string, offset) \ | 101 #define COMPARE_PC_REL_COMPACT(asm_, compare_string, offset) \ |
96 { \ | 102 { \ |
97 int pc_offset = assm.pc_offset(); \ | 103 int pc_offset = assm.pc_offset(); \ |
98 byte *progcounter = &buffer[pc_offset]; \ | 104 byte *progcounter = &buffer[pc_offset]; \ |
99 char str_with_address[100]; \ | 105 char str_with_address[100]; \ |
100 snprintf(str_with_address, sizeof(str_with_address), "%s -> %p", \ | 106 prev_instr_compact_branch = assm.IsPrevInstrCompactBranch(); \ |
101 compare_string, progcounter + 4 + (offset * 4)); \ | 107 if (prev_instr_compact_branch) { \ |
| 108 snprintf(str_with_address, sizeof(str_with_address), "%s -> %p", \ |
| 109 compare_string, progcounter + 8 + (offset * 4)); \ |
| 110 } else { \ |
| 111 snprintf(str_with_address, sizeof(str_with_address), "%s -> %p", \ |
| 112 compare_string, progcounter + 4 + (offset * 4)); \ |
| 113 } \ |
102 assm.asm_; \ | 114 assm.asm_; \ |
103 if (!DisassembleAndCompare(progcounter, str_with_address)) failure = true; \ | 115 if (!DisassembleAndCompare(progcounter, str_with_address)) failure = true; \ |
104 } | 116 } |
105 | 117 |
106 | 118 |
107 #define COMPARE_PC_REL(asm_, compare_string, offset) \ | 119 #define COMPARE_PC_REL(asm_, compare_string, offset) \ |
108 { \ | 120 { \ |
109 int pc_offset = assm.pc_offset(); \ | 121 int pc_offset = assm.pc_offset(); \ |
110 byte *progcounter = &buffer[pc_offset]; \ | 122 byte *progcounter = &buffer[pc_offset]; \ |
111 char str_with_address[100]; \ | 123 char str_with_address[100]; \ |
(...skipping 651 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
763 COMPARE(lwupc(a0, 262143), "ec93ffff lwupc a0, 262143"); | 775 COMPARE(lwupc(a0, 262143), "ec93ffff lwupc a0, 262143"); |
764 } | 776 } |
765 | 777 |
766 if (kArchVariant == kMips64r6) { | 778 if (kArchVariant == kMips64r6) { |
767 COMPARE(jic(t0, 16), "d80c0010 jic t0, 16"); | 779 COMPARE(jic(t0, 16), "d80c0010 jic t0, 16"); |
768 COMPARE(jic(t0, 4), "d80c0004 jic t0, 4"); | 780 COMPARE(jic(t0, 4), "d80c0004 jic t0, 4"); |
769 COMPARE(jic(t0, -32), "d80cffe0 jic t0, -32"); | 781 COMPARE(jic(t0, -32), "d80cffe0 jic t0, -32"); |
770 } | 782 } |
771 | 783 |
772 if (kArchVariant == kMips64r6) { | 784 if (kArchVariant == kMips64r6) { |
773 COMPARE_PC_REL_COMPACT(beqzc(a0, 16), "d8800010 beqzc a0, 0x10", | |
774 16); | |
775 COMPARE_PC_REL_COMPACT(beqzc(a0, 4), "d8800004 beqzc a0, 0x4", 4); | |
776 COMPARE_PC_REL_COMPACT(beqzc(a0, -32), | |
777 "d89fffe0 beqzc a0, 0x1fffe0", -32); | |
778 } | |
779 | |
780 if (kArchVariant == kMips64r6) { | |
781 COMPARE(ldpc(v0, 256), "ec580100 ldpc v0, 256"); | 785 COMPARE(ldpc(v0, 256), "ec580100 ldpc v0, 256"); |
782 COMPARE(ldpc(a0, -1), "ec9bffff ldpc a0, -1"); | 786 COMPARE(ldpc(a0, -1), "ec9bffff ldpc a0, -1"); |
783 COMPARE(ldpc(a1, 0), "ecb80000 ldpc a1, 0"); | 787 COMPARE(ldpc(a1, 0), "ecb80000 ldpc a1, 0"); |
784 } | 788 } |
785 | 789 |
786 if (kArchVariant == kMips64r6) { | 790 if (kArchVariant == kMips64r6) { |
787 COMPARE(addiupc(a0, 262143), "ec83ffff addiupc a0, 262143"); | 791 COMPARE(addiupc(a0, 262143), "ec83ffff addiupc a0, 262143"); |
788 COMPARE(addiupc(a0, -1), "ec87ffff addiupc a0, -1"); | 792 COMPARE(addiupc(a0, -1), "ec87ffff addiupc a0, -1"); |
789 COMPARE(addiupc(v0, 0), "ec400000 addiupc v0, 0"); | 793 COMPARE(addiupc(v0, 0), "ec400000 addiupc v0, 0"); |
790 COMPARE(addiupc(s1, 1), "ee200001 addiupc s1, 1"); | 794 COMPARE(addiupc(s1, 1), "ee200001 addiupc s1, 1"); |
791 COMPARE(addiupc(a0, -262144), "ec840000 addiupc a0, -262144"); | 795 COMPARE(addiupc(a0, -262144), "ec840000 addiupc a0, -262144"); |
792 } | 796 } |
793 | 797 |
794 if (kArchVariant == kMips64r6) { | 798 if (kArchVariant == kMips64r6) { |
795 COMPARE(jialc(a0, -32768), "f8048000 jialc a0, 0x8000"); | 799 COMPARE(jialc(a0, -32768), "f8048000 jialc a0, -32768"); |
796 COMPARE(jialc(a0, -1), "f804ffff jialc a0, 0xffff"); | 800 COMPARE(jialc(a0, -1), "f804ffff jialc a0, -1"); |
797 COMPARE(jialc(v0, 0), "f8020000 jialc v0, 0x0"); | 801 COMPARE(jialc(v0, 0), "f8020000 jialc v0, 0"); |
798 COMPARE(jialc(s1, 1), "f8110001 jialc s1, 0x1"); | 802 COMPARE(jialc(s1, 1), "f8110001 jialc s1, 1"); |
799 COMPARE(jialc(a0, 32767), "f8047fff jialc a0, 0x7fff"); | 803 COMPARE(jialc(a0, 32767), "f8047fff jialc a0, 32767"); |
800 } | 804 } |
801 | 805 |
802 VERIFY_RUN(); | 806 VERIFY_RUN(); |
803 } | 807 } |
804 | 808 |
805 | 809 |
806 TEST(Type1) { | 810 TEST(Type1) { |
807 SET_UP(); | 811 SET_UP(); |
808 if (kArchVariant == kMips64r6) { | 812 if (kArchVariant == kMips64r6) { |
809 COMPARE(seleqz(a0, a1, a2), "00a62035 seleqz a0, a1, a2"); | 813 COMPARE(seleqz(a0, a1, a2), "00a62035 seleqz a0, a1, a2"); |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
922 | 926 |
923 COMPARE_PC_REL_COMPACT(bnvc(a0, a0, static_cast<int16_t>(0)), | 927 COMPARE_PC_REL_COMPACT(bnvc(a0, a0, static_cast<int16_t>(0)), |
924 "60840000 bnvc a0, a0, 0", 0); | 928 "60840000 bnvc a0, a0, 0", 0); |
925 COMPARE_PC_REL_COMPACT(bnvc(a1, a0, static_cast<int16_t>(0)), | 929 COMPARE_PC_REL_COMPACT(bnvc(a1, a0, static_cast<int16_t>(0)), |
926 "60a40000 bnvc a1, a0, 0", 0); | 930 "60a40000 bnvc a1, a0, 0", 0); |
927 COMPARE_PC_REL_COMPACT(bnvc(a1, a0, 32767), | 931 COMPARE_PC_REL_COMPACT(bnvc(a1, a0, 32767), |
928 "60a47fff bnvc a1, a0, 32767", 32767); | 932 "60a47fff bnvc a1, a0, 32767", 32767); |
929 COMPARE_PC_REL_COMPACT(bnvc(a1, a0, -32768), | 933 COMPARE_PC_REL_COMPACT(bnvc(a1, a0, -32768), |
930 "60a48000 bnvc a1, a0, -32768", -32768); | 934 "60a48000 bnvc a1, a0, -32768", -32768); |
931 | 935 |
932 COMPARE_PC_REL_COMPACT(beqzc(a0, 0), "d8800000 beqzc a0, 0x0", 0); | 936 COMPARE_PC_REL_COMPACT(beqzc(a0, 0), "d8800000 beqzc a0, 0", 0); |
933 COMPARE_PC_REL_COMPACT(beqzc(a0, 0xfffff), // 0x0fffff == 1048575. | 937 COMPARE_PC_REL_COMPACT(beqzc(a0, 1048575), // 0x0fffff == 1048575. |
934 "d88fffff beqzc a0, 0xfffff", 1048575); | 938 "d88fffff beqzc a0, 1048575", 1048575); |
935 COMPARE_PC_REL_COMPACT(beqzc(a0, 0x100000), // 0x100000 == -1048576. | 939 COMPARE_PC_REL_COMPACT(beqzc(a0, -1048576), // 0x100000 == -1048576. |
936 "d8900000 beqzc a0, 0x100000", -1048576); | 940 "d8900000 beqzc a0, -1048576", -1048576); |
937 | 941 |
938 COMPARE_PC_REL_COMPACT(bnezc(a0, 0), "f8800000 bnezc a0, 0x0", 0); | 942 COMPARE_PC_REL_COMPACT(bnezc(a0, 0), "f8800000 bnezc a0, 0", 0); |
939 COMPARE_PC_REL_COMPACT(bnezc(a0, 0xfffff), // 0x0fffff == 1048575. | 943 COMPARE_PC_REL_COMPACT(bnezc(a0, 1048575), // int21 maximal value. |
940 "f88fffff bnezc a0, 0xfffff", 1048575); | 944 "f88fffff bnezc a0, 1048575", 1048575); |
941 COMPARE_PC_REL_COMPACT(bnezc(a0, 0x100000), // 0x100000 == -1048576. | 945 COMPARE_PC_REL_COMPACT(bnezc(a0, -1048576), // int21 minimal value. |
942 "f8900000 bnezc a0, 0x100000", -1048576); | 946 "f8900000 bnezc a0, -1048576", -1048576); |
943 | 947 |
944 COMPARE_PC_REL_COMPACT(bc(-33554432), "ca000000 bc -33554432", | 948 COMPARE_PC_REL_COMPACT(bc(-33554432), "ca000000 bc -33554432", |
945 -33554432); | 949 -33554432); |
946 COMPARE_PC_REL_COMPACT(bc(-1), "cbffffff bc -1", -1); | 950 COMPARE_PC_REL_COMPACT(bc(-1), "cbffffff bc -1", -1); |
947 COMPARE_PC_REL_COMPACT(bc(0), "c8000000 bc 0", 0); | 951 COMPARE_PC_REL_COMPACT(bc(0), "c8000000 bc 0", 0); |
948 COMPARE_PC_REL_COMPACT(bc(1), "c8000001 bc 1", 1); | 952 COMPARE_PC_REL_COMPACT(bc(1), "c8000001 bc 1", 1); |
949 COMPARE_PC_REL_COMPACT(bc(33554431), "c9ffffff bc 33554431", | 953 COMPARE_PC_REL_COMPACT(bc(33554431), "c9ffffff bc 33554431", |
950 33554431); | 954 33554431); |
951 | 955 |
952 COMPARE_PC_REL_COMPACT(balc(-33554432), "ea000000 balc -33554432", | 956 COMPARE_PC_REL_COMPACT(balc(-33554432), "ea000000 balc -33554432", |
953 -33554432); | 957 -33554432); |
954 COMPARE_PC_REL_COMPACT(balc(-1), "ebffffff balc -1", -1); | 958 COMPARE_PC_REL_COMPACT(balc(-1), "ebffffff balc -1", -1); |
955 COMPARE_PC_REL_COMPACT(balc(0), "e8000000 balc 0", 0); | 959 COMPARE_PC_REL_COMPACT(balc(0), "e8000000 balc 0", 0); |
956 COMPARE_PC_REL_COMPACT(balc(1), "e8000001 balc 1", 1); | 960 COMPARE_PC_REL_COMPACT(balc(1), "e8000001 balc 1", 1); |
957 COMPARE_PC_REL_COMPACT(balc(33554431), "e9ffffff balc 33554431", | 961 COMPARE_PC_REL_COMPACT(balc(33554431), "e9ffffff balc 33554431", |
958 33554431); | 962 33554431); |
959 | 963 |
960 COMPARE_PC_REL_COMPACT(bgeuc(a0, a1, -32768), | 964 COMPARE_PC_REL_COMPACT(bgeuc(a0, a1, -32768), |
961 "18858000 bgeuc a0, a1, -32768", -32768); | 965 "18858000 bgeuc a0, a1, -32768", -32768); |
962 COMPARE_PC_REL_COMPACT(bgeuc(a0, a1, -1), | 966 COMPARE_PC_REL_COMPACT(bgeuc(a0, a1, -1), |
963 "1885ffff bgeuc a0, a1, -1", -1); | 967 "1885ffff bgeuc a0, a1, -1", -1); |
964 COMPARE_PC_REL_COMPACT(bgeuc(a0, a1, 1), | 968 COMPARE_PC_REL_COMPACT(bgeuc(a0, a1, 1), "18850001 bgeuc a0, a1, 1", |
965 "18850001 bgeuc a0, a1, 1", 1); | 969 1); |
966 COMPARE_PC_REL_COMPACT(bgeuc(a0, a1, 32767), | 970 COMPARE_PC_REL_COMPACT(bgeuc(a0, a1, 32767), |
967 "18857fff bgeuc a0, a1, 32767", 32767); | 971 "18857fff bgeuc a0, a1, 32767", 32767); |
968 | 972 |
969 COMPARE_PC_REL_COMPACT(bgezalc(a0, -32768), | 973 COMPARE_PC_REL_COMPACT(bgezalc(a0, -32768), |
970 "18848000 bgezalc a0, -32768", -32768); | 974 "18848000 bgezalc a0, -32768", -32768); |
971 COMPARE_PC_REL_COMPACT(bgezalc(a0, -1), "1884ffff bgezalc a0, -1", | 975 COMPARE_PC_REL_COMPACT(bgezalc(a0, -1), "1884ffff bgezalc a0, -1", |
972 -1); | 976 -1); |
973 COMPARE_PC_REL_COMPACT(bgezalc(a0, 1), "18840001 bgezalc a0, 1", 1); | 977 COMPARE_PC_REL_COMPACT(bgezalc(a0, 1), "18840001 bgezalc a0, 1", 1); |
974 COMPARE_PC_REL_COMPACT(bgezalc(a0, 32767), | 978 COMPARE_PC_REL_COMPACT(bgezalc(a0, 32767), |
975 "18847fff bgezalc a0, 32767", 32767); | 979 "18847fff bgezalc a0, 32767", 32767); |
976 | 980 |
977 COMPARE_PC_REL_COMPACT(blezalc(a0, -32768), | 981 COMPARE_PC_REL_COMPACT(blezalc(a0, -32768), |
978 "18048000 blezalc a0, -32768", -32768); | 982 "18048000 blezalc a0, -32768", -32768); |
979 COMPARE_PC_REL_COMPACT(blezalc(a0, -1), "1804ffff blezalc a0, -1", | 983 COMPARE_PC_REL_COMPACT(blezalc(a0, -1), "1804ffff blezalc a0, -1", |
980 -1); | 984 -1); |
981 COMPARE_PC_REL_COMPACT(blezalc(a0, 1), "18040001 blezalc a0, 1", 1); | 985 COMPARE_PC_REL_COMPACT(blezalc(a0, 1), "18040001 blezalc a0, 1", 1); |
982 COMPARE_PC_REL_COMPACT(blezalc(a0, 32767), | 986 COMPARE_PC_REL_COMPACT(blezalc(a0, 32767), |
983 "18047fff blezalc a0, 32767", 32767); | 987 "18047fff blezalc a0, 32767", 32767); |
984 | 988 |
985 COMPARE_PC_REL_COMPACT(bltuc(a0, a1, -32768), | 989 COMPARE_PC_REL_COMPACT(bltuc(a0, a1, -32768), |
986 "1c858000 bltuc a0, a1, -32768", -32768); | 990 "1c858000 bltuc a0, a1, -32768", -32768); |
987 COMPARE_PC_REL_COMPACT(bltuc(a0, a1, -1), | 991 COMPARE_PC_REL_COMPACT(bltuc(a0, a1, -1), |
988 "1c85ffff bltuc a0, a1, -1", -1); | 992 "1c85ffff bltuc a0, a1, -1", -1); |
989 COMPARE_PC_REL_COMPACT(bltuc(a0, a1, 1), "1c850001 bltuc a0, a1, 1", | 993 COMPARE_PC_REL_COMPACT(bltuc(a0, a1, 1), "1c850001 bltuc a0, a1, 1", |
990 1); | 994 1); |
991 COMPARE_PC_REL_COMPACT(bltuc(a0, a1, 32767), | 995 COMPARE_PC_REL_COMPACT(bltuc(a0, a1, 32767), |
992 "1c857fff bltuc a0, a1, 32767", 32767); | 996 "1c857fff bltuc a0, a1, 32767", 32767); |
993 | 997 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1031 "58047fff blezc a0, 32767", 32767); | 1035 "58047fff blezc a0, 32767", 32767); |
1032 | 1036 |
1033 COMPARE_PC_REL_COMPACT(bltzc(a0, -32768), | 1037 COMPARE_PC_REL_COMPACT(bltzc(a0, -32768), |
1034 "5c848000 bltzc a0, -32768", -32768); | 1038 "5c848000 bltzc a0, -32768", -32768); |
1035 COMPARE_PC_REL_COMPACT(bltzc(a0, -1), "5c84ffff bltzc a0, -1", -1); | 1039 COMPARE_PC_REL_COMPACT(bltzc(a0, -1), "5c84ffff bltzc a0, -1", -1); |
1036 COMPARE_PC_REL_COMPACT(bltzc(a0, 1), "5c840001 bltzc a0, 1", 1); | 1040 COMPARE_PC_REL_COMPACT(bltzc(a0, 1), "5c840001 bltzc a0, 1", 1); |
1037 COMPARE_PC_REL_COMPACT(bltzc(a0, 32767), | 1041 COMPARE_PC_REL_COMPACT(bltzc(a0, 32767), |
1038 "5c847fff bltzc a0, 32767", 32767); | 1042 "5c847fff bltzc a0, 32767", 32767); |
1039 | 1043 |
1040 COMPARE_PC_REL_COMPACT(bltc(a0, a1, -32768), | 1044 COMPARE_PC_REL_COMPACT(bltc(a0, a1, -32768), |
1041 "5c858000 bltc a0, a1, -32768", -32768); | 1045 "5c858000 bltc a0, a1, -32768", -32768); |
1042 COMPARE_PC_REL_COMPACT(bltc(a0, a1, -1), | 1046 COMPARE_PC_REL_COMPACT(bltc(a0, a1, -1), |
1043 "5c85ffff bltc a0, a1, -1", -1); | 1047 "5c85ffff bltc a0, a1, -1", -1); |
1044 COMPARE_PC_REL_COMPACT(bltc(a0, a1, 1), "5c850001 bltc a0, a1, 1", | 1048 COMPARE_PC_REL_COMPACT(bltc(a0, a1, 1), "5c850001 bltc a0, a1, 1", |
1045 1); | 1049 1); |
1046 COMPARE_PC_REL_COMPACT(bltc(a0, a1, 32767), | 1050 COMPARE_PC_REL_COMPACT(bltc(a0, a1, 32767), |
1047 "5c857fff bltc a0, a1, 32767", 32767); | 1051 "5c857fff bltc a0, a1, 32767", 32767); |
1048 | 1052 |
1049 COMPARE_PC_REL_COMPACT(bgtzc(a0, -32768), | 1053 COMPARE_PC_REL_COMPACT(bgtzc(a0, -32768), |
1050 "5c048000 bgtzc a0, -32768", -32768); | 1054 "5c048000 bgtzc a0, -32768", -32768); |
1051 COMPARE_PC_REL_COMPACT(bgtzc(a0, -1), "5c04ffff bgtzc a0, -1", -1); | 1055 COMPARE_PC_REL_COMPACT(bgtzc(a0, -1), "5c04ffff bgtzc a0, -1", -1); |
1052 COMPARE_PC_REL_COMPACT(bgtzc(a0, 1), "5c040001 bgtzc a0, 1", 1); | 1056 COMPARE_PC_REL_COMPACT(bgtzc(a0, 1), "5c040001 bgtzc a0, 1", 1); |
1053 COMPARE_PC_REL_COMPACT(bgtzc(a0, 32767), | 1057 COMPARE_PC_REL_COMPACT(bgtzc(a0, 32767), |
1054 "5c047fff bgtzc a0, 32767", 32767); | 1058 "5c047fff bgtzc a0, 32767", 32767); |
1055 | 1059 |
1056 COMPARE_PC_REL_COMPACT(bc1eqz(-32768, f1), | 1060 COMPARE_PC_REL_COMPACT(bc1eqz(-32768, f1), |
1057 "45218000 bc1eqz f1, -32768", -32768); | 1061 "45218000 bc1eqz f1, -32768", -32768); |
(...skipping 10 matching lines...) Expand all Loading... |
1068 COMPARE_PC_REL_COMPACT(bc1nez(1, f1), "45a10001 bc1nez f1, 1", 1); | 1072 COMPARE_PC_REL_COMPACT(bc1nez(1, f1), "45a10001 bc1nez f1, 1", 1); |
1069 COMPARE_PC_REL_COMPACT(bc1nez(32767, f1), | 1073 COMPARE_PC_REL_COMPACT(bc1nez(32767, f1), |
1070 "45a17fff bc1nez f1, 32767", 32767); | 1074 "45a17fff bc1nez f1, 32767", 32767); |
1071 | 1075 |
1072 COMPARE_PC_REL_COMPACT(bovc(a1, a0, -1), "20a4ffff bovc a1, a0, -1", | 1076 COMPARE_PC_REL_COMPACT(bovc(a1, a0, -1), "20a4ffff bovc a1, a0, -1", |
1073 -1); | 1077 -1); |
1074 COMPARE_PC_REL_COMPACT(bovc(a0, a0, 1), "20840001 bovc a0, a0, 1", | 1078 COMPARE_PC_REL_COMPACT(bovc(a0, a0, 1), "20840001 bovc a0, a0, 1", |
1075 1); | 1079 1); |
1076 | 1080 |
1077 COMPARE_PC_REL_COMPACT(beqc(a0, a1, -32768), | 1081 COMPARE_PC_REL_COMPACT(beqc(a0, a1, -32768), |
1078 "20858000 beqc a0, a1, -32768", -32768); | 1082 "20858000 beqc a0, a1, -32768", -32768); |
1079 COMPARE_PC_REL_COMPACT(beqc(a0, a1, -1), "2085ffff beqc a0, a1, -1", | 1083 COMPARE_PC_REL_COMPACT(beqc(a0, a1, -1), |
1080 -1); | 1084 "2085ffff beqc a0, a1, -1", -1); |
1081 COMPARE_PC_REL_COMPACT(beqc(a0, a1, 1), "20850001 beqc a0, a1, 1", | 1085 COMPARE_PC_REL_COMPACT(beqc(a0, a1, 1), "20850001 beqc a0, a1, 1", |
1082 1); | 1086 1); |
1083 COMPARE_PC_REL_COMPACT(beqc(a0, a1, 32767), | 1087 COMPARE_PC_REL_COMPACT(beqc(a0, a1, 32767), |
1084 "20857fff beqc a0, a1, 32767", 32767); | 1088 "20857fff beqc a0, a1, 32767", 32767); |
1085 | 1089 |
1086 COMPARE_PC_REL_COMPACT(bnec(a0, a1, -32768), | 1090 COMPARE_PC_REL_COMPACT(bnec(a0, a1, -32768), |
1087 "60858000 bnec a0, a1, -32768", -32768); | 1091 "60858000 bnec a0, a1, -32768", -32768); |
1088 COMPARE_PC_REL_COMPACT(bnec(a0, a1, -1), "6085ffff bnec a0, a1, -1", | 1092 COMPARE_PC_REL_COMPACT(bnec(a0, a1, -1), "6085ffff bnec a0, a1, -1", |
1089 -1); | 1093 -1); |
1090 COMPARE_PC_REL_COMPACT(bnec(a0, a1, 1), "60850001 bnec a0, a1, 1", | 1094 COMPARE_PC_REL_COMPACT(bnec(a0, a1, 1), "60850001 bnec a0, a1, 1", |
1091 1); | 1095 1); |
1092 COMPARE_PC_REL_COMPACT(bnec(a0, a1, 32767), | 1096 COMPARE_PC_REL_COMPACT(bnec(a0, a1, 32767), |
1093 "60857fff bnec a0, a1, 32767", 32767); | 1097 "60857fff bnec a0, a1, 32767", 32767); |
1094 } | 1098 } |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1256 | 1260 |
1257 | 1261 |
1258 TEST(ctc1_cfc1_disasm) { | 1262 TEST(ctc1_cfc1_disasm) { |
1259 SET_UP(); | 1263 SET_UP(); |
1260 COMPARE(abs_d(f10, f31), "4620fa85 abs.d f10, f31"); | 1264 COMPARE(abs_d(f10, f31), "4620fa85 abs.d f10, f31"); |
1261 COMPARE(ceil_w_s(f8, f31), "4600fa0e ceil.w.s f8, f31"); | 1265 COMPARE(ceil_w_s(f8, f31), "4600fa0e ceil.w.s f8, f31"); |
1262 COMPARE(ctc1(a0, FCSR), "44c4f800 ctc1 a0, FCSR"); | 1266 COMPARE(ctc1(a0, FCSR), "44c4f800 ctc1 a0, FCSR"); |
1263 COMPARE(cfc1(a0, FCSR), "4444f800 cfc1 a0, FCSR"); | 1267 COMPARE(cfc1(a0, FCSR), "4444f800 cfc1 a0, FCSR"); |
1264 VERIFY_RUN(); | 1268 VERIFY_RUN(); |
1265 } | 1269 } |
OLD | NEW |