| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/globals.h" | 5 #include "vm/globals.h" |
| 6 #if defined(TARGET_ARCH_MIPS) | 6 #if defined(TARGET_ARCH_MIPS) |
| 7 | 7 |
| 8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
| 9 #include "vm/os.h" | 9 #include "vm/os.h" |
| 10 #include "vm/unit_test.h" | 10 #include "vm/unit_test.h" |
| (...skipping 675 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 686 __ jr(RA); | 686 __ jr(RA); |
| 687 } | 687 } |
| 688 | 688 |
| 689 | 689 |
| 690 ASSEMBLER_TEST_RUN(Beq_backward, test) { | 690 ASSEMBLER_TEST_RUN(Beq_backward, test) { |
| 691 typedef int (*SimpleCode)(); | 691 typedef int (*SimpleCode)(); |
| 692 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); | 692 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 693 } | 693 } |
| 694 | 694 |
| 695 | 695 |
| 696 ASSEMBLER_TEST_GENERATE(Beq_backward_far, assembler) { |
| 697 Label l; |
| 698 |
| 699 __ set_use_far_branches(true); |
| 700 |
| 701 __ LoadImmediate(T1, 0); |
| 702 __ LoadImmediate(T2, 1); |
| 703 __ Bind(&l); |
| 704 __ addiu(T1, T1, Immediate(1)); |
| 705 __ beq(T1, T2, &l); |
| 706 __ ori(V0, T1, Immediate(0)); |
| 707 __ jr(RA); |
| 708 } |
| 709 |
| 710 |
| 711 ASSEMBLER_TEST_RUN(Beq_backward_far, test) { |
| 712 typedef int (*SimpleCode)(); |
| 713 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 714 } |
| 715 |
| 716 |
| 696 ASSEMBLER_TEST_GENERATE(Beq_backward_delay, assembler) { | 717 ASSEMBLER_TEST_GENERATE(Beq_backward_delay, assembler) { |
| 697 Label l; | 718 Label l; |
| 698 | 719 |
| 699 __ LoadImmediate(T1, 0); | 720 __ LoadImmediate(T1, 0); |
| 700 __ LoadImmediate(T2, 1); | 721 __ LoadImmediate(T2, 1); |
| 701 __ Bind(&l); | 722 __ Bind(&l); |
| 702 __ addiu(T1, T1, Immediate(1)); | 723 __ addiu(T1, T1, Immediate(1)); |
| 703 __ beq(T1, T2, &l); | 724 __ beq(T1, T2, &l); |
| 704 __ delay_slot()->addiu(T1, T1, Immediate(1)); | 725 __ delay_slot()->addiu(T1, T1, Immediate(1)); |
| 705 __ ori(V0, T1, Immediate(0)); | 726 __ ori(V0, T1, Immediate(0)); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 726 __ jr(RA); | 747 __ jr(RA); |
| 727 } | 748 } |
| 728 | 749 |
| 729 | 750 |
| 730 ASSEMBLER_TEST_RUN(Beq_forward_taken, test) { | 751 ASSEMBLER_TEST_RUN(Beq_forward_taken, test) { |
| 731 typedef int (*SimpleCode)(); | 752 typedef int (*SimpleCode)(); |
| 732 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); | 753 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 733 } | 754 } |
| 734 | 755 |
| 735 | 756 |
| 757 ASSEMBLER_TEST_GENERATE(Beq_forward_taken_far, assembler) { |
| 758 Label l; |
| 759 |
| 760 __ set_use_far_branches(true); |
| 761 |
| 762 __ LoadImmediate(T5, 1); |
| 763 __ LoadImmediate(T6, 1); |
| 764 |
| 765 __ LoadImmediate(V0, 42); |
| 766 __ beq(T5, T6, &l); |
| 767 __ LoadImmediate(V0, 0); |
| 768 __ Bind(&l); |
| 769 __ jr(RA); |
| 770 } |
| 771 |
| 772 |
| 773 ASSEMBLER_TEST_RUN(Beq_forward_taken_far, test) { |
| 774 typedef int (*SimpleCode)(); |
| 775 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 776 } |
| 777 |
| 778 |
| 736 ASSEMBLER_TEST_GENERATE(Beq_forward_not_taken, assembler) { | 779 ASSEMBLER_TEST_GENERATE(Beq_forward_not_taken, assembler) { |
| 737 Label l; | 780 Label l; |
| 738 | 781 |
| 739 __ LoadImmediate(T5, 0); | 782 __ LoadImmediate(T5, 0); |
| 740 __ LoadImmediate(T6, 1); | 783 __ LoadImmediate(T6, 1); |
| 741 | 784 |
| 742 __ LoadImmediate(V0, 42); | 785 __ LoadImmediate(V0, 42); |
| 743 __ beq(T5, T6, &l); | 786 __ beq(T5, T6, &l); |
| 787 __ nop(); |
| 744 __ LoadImmediate(V0, 0); | 788 __ LoadImmediate(V0, 0); |
| 745 __ Bind(&l); | 789 __ Bind(&l); |
| 746 __ jr(RA); | 790 __ jr(RA); |
| 747 } | 791 } |
| 748 | 792 |
| 749 | 793 |
| 750 ASSEMBLER_TEST_RUN(Beq_forward_not_taken, test) { | 794 ASSEMBLER_TEST_RUN(Beq_forward_not_taken, test) { |
| 751 typedef int (*SimpleCode)(); | 795 typedef int (*SimpleCode)(); |
| 752 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); | 796 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 753 } | 797 } |
| 754 | 798 |
| 755 | 799 |
| 800 ASSEMBLER_TEST_GENERATE(Beq_forward_not_taken_far, assembler) { |
| 801 Label l; |
| 802 |
| 803 __ set_use_far_branches(true); |
| 804 |
| 805 __ LoadImmediate(T5, 0); |
| 806 __ LoadImmediate(T6, 1); |
| 807 |
| 808 __ LoadImmediate(V0, 42); |
| 809 __ beq(T5, T6, &l); |
| 810 __ nop(); |
| 811 __ LoadImmediate(V0, 0); |
| 812 __ Bind(&l); |
| 813 __ jr(RA); |
| 814 } |
| 815 |
| 816 |
| 817 ASSEMBLER_TEST_RUN(Beq_forward_not_taken_far, test) { |
| 818 typedef int (*SimpleCode)(); |
| 819 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 820 } |
| 821 |
| 822 |
| 823 ASSEMBLER_TEST_GENERATE(Beq_forward_not_taken_far2, assembler) { |
| 824 Label l; |
| 825 |
| 826 __ set_use_far_branches(true); |
| 827 |
| 828 __ LoadImmediate(T5, 0); |
| 829 __ LoadImmediate(T6, 1); |
| 830 |
| 831 __ LoadImmediate(V0, 42); |
| 832 __ beq(T5, T6, &l); |
| 833 __ nop(); |
| 834 for (int i = 0; i < (1 << 15); i++) { |
| 835 __ nop(); |
| 836 } |
| 837 __ LoadImmediate(V0, 0); |
| 838 __ Bind(&l); |
| 839 __ jr(RA); |
| 840 } |
| 841 |
| 842 |
| 843 ASSEMBLER_TEST_RUN(Beq_forward_not_taken_far2, test) { |
| 844 typedef int (*SimpleCode)(); |
| 845 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 846 } |
| 847 |
| 848 |
| 756 ASSEMBLER_TEST_GENERATE(Beq_forward_taken2, assembler) { | 849 ASSEMBLER_TEST_GENERATE(Beq_forward_taken2, assembler) { |
| 757 Label l; | 850 Label l; |
| 758 | 851 |
| 759 __ LoadImmediate(T5, 1); | 852 __ LoadImmediate(T5, 1); |
| 760 __ LoadImmediate(T6, 1); | 853 __ LoadImmediate(T6, 1); |
| 761 | 854 |
| 762 __ LoadImmediate(V0, 42); | 855 __ LoadImmediate(V0, 42); |
| 763 __ beq(T5, T6, &l); | 856 __ beq(T5, T6, &l); |
| 764 __ nop(); | 857 __ nop(); |
| 765 __ nop(); | 858 __ nop(); |
| 766 __ LoadImmediate(V0, 0); | 859 __ LoadImmediate(V0, 0); |
| 767 __ Bind(&l); | 860 __ Bind(&l); |
| 768 __ jr(RA); | 861 __ jr(RA); |
| 769 } | 862 } |
| 770 | 863 |
| 771 | 864 |
| 772 ASSEMBLER_TEST_RUN(Beq_forward_taken2, test) { | 865 ASSEMBLER_TEST_RUN(Beq_forward_taken2, test) { |
| 773 typedef int (*SimpleCode)(); | 866 typedef int (*SimpleCode)(); |
| 774 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); | 867 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 775 } | 868 } |
| 776 | 869 |
| 777 | 870 |
| 871 ASSEMBLER_TEST_GENERATE(Beq_forward_taken_far2, assembler) { |
| 872 Label l; |
| 873 |
| 874 __ set_use_far_branches(true); |
| 875 |
| 876 __ LoadImmediate(T5, 1); |
| 877 __ LoadImmediate(T6, 1); |
| 878 |
| 879 __ LoadImmediate(V0, 42); |
| 880 __ beq(T5, T6, &l); |
| 881 __ nop(); |
| 882 __ nop(); |
| 883 __ LoadImmediate(V0, 0); |
| 884 __ Bind(&l); |
| 885 __ jr(RA); |
| 886 } |
| 887 |
| 888 |
| 889 ASSEMBLER_TEST_RUN(Beq_forward_taken_far2, test) { |
| 890 typedef int (*SimpleCode)(); |
| 891 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 892 } |
| 893 |
| 894 |
| 895 ASSEMBLER_TEST_GENERATE(Beq_forward_taken_far3, assembler) { |
| 896 Label l; |
| 897 |
| 898 __ set_use_far_branches(true); |
| 899 |
| 900 __ LoadImmediate(T5, 1); |
| 901 __ LoadImmediate(T6, 1); |
| 902 |
| 903 __ LoadImmediate(V0, 42); |
| 904 __ beq(T5, T6, &l); |
| 905 __ nop(); |
| 906 for (int i = 0; i < (1 << 15); i++) { |
| 907 __ nop(); |
| 908 } |
| 909 __ nop(); |
| 910 __ LoadImmediate(V0, 0); |
| 911 __ Bind(&l); |
| 912 __ jr(RA); |
| 913 } |
| 914 |
| 915 |
| 916 ASSEMBLER_TEST_RUN(Beq_forward_taken_far3, test) { |
| 917 typedef int (*SimpleCode)(); |
| 918 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 919 } |
| 920 |
| 921 |
| 778 ASSEMBLER_TEST_GENERATE(Beq_forward_taken_delay, assembler) { | 922 ASSEMBLER_TEST_GENERATE(Beq_forward_taken_delay, assembler) { |
| 779 Label l; | 923 Label l; |
| 780 | 924 |
| 781 __ LoadImmediate(T5, 1); | 925 __ LoadImmediate(T5, 1); |
| 782 __ LoadImmediate(T6, 1); | 926 __ LoadImmediate(T6, 1); |
| 783 | 927 |
| 784 __ LoadImmediate(V0, 42); | 928 __ LoadImmediate(V0, 42); |
| 785 __ beq(T5, T6, &l); | 929 __ beq(T5, T6, &l); |
| 786 __ delay_slot()->ori(V0, V0, Immediate(1)); | 930 __ delay_slot()->ori(V0, V0, Immediate(1)); |
| 787 __ LoadImmediate(V0, 0); | 931 __ LoadImmediate(V0, 0); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 848 __ jr(RA); | 992 __ jr(RA); |
| 849 } | 993 } |
| 850 | 994 |
| 851 | 995 |
| 852 ASSEMBLER_TEST_RUN(Bgez, test) { | 996 ASSEMBLER_TEST_RUN(Bgez, test) { |
| 853 typedef int (*SimpleCode)(); | 997 typedef int (*SimpleCode)(); |
| 854 EXPECT_EQ(-2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); | 998 EXPECT_EQ(-2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 855 } | 999 } |
| 856 | 1000 |
| 857 | 1001 |
| 1002 ASSEMBLER_TEST_GENERATE(Bgez_far, assembler) { |
| 1003 Label l; |
| 1004 |
| 1005 __ set_use_far_branches(true); |
| 1006 |
| 1007 __ LoadImmediate(T5, 3); |
| 1008 __ Bind(&l); |
| 1009 __ bgez(T5, &l); |
| 1010 __ delay_slot()->addiu(T5, T5, Immediate(-1)); |
| 1011 __ ori(V0, T5, Immediate(0)); |
| 1012 __ jr(RA); |
| 1013 } |
| 1014 |
| 1015 |
| 1016 ASSEMBLER_TEST_RUN(Bgez_far, test) { |
| 1017 typedef int (*SimpleCode)(); |
| 1018 EXPECT_EQ(-2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 1019 } |
| 1020 |
| 1021 |
| 1022 ASSEMBLER_TEST_GENERATE(Bgez_far2, assembler) { |
| 1023 Label l; |
| 1024 |
| 1025 __ set_use_far_branches(true); |
| 1026 |
| 1027 __ LoadImmediate(T5, 3); |
| 1028 __ Bind(&l); |
| 1029 for (int i = 0; i < (1 << 15); i++) { |
| 1030 __ nop(); |
| 1031 } |
| 1032 __ bgez(T5, &l); |
| 1033 __ delay_slot()->addiu(T5, T5, Immediate(-1)); |
| 1034 __ ori(V0, T5, Immediate(0)); |
| 1035 __ jr(RA); |
| 1036 } |
| 1037 |
| 1038 |
| 1039 ASSEMBLER_TEST_RUN(Bgez_far2, test) { |
| 1040 typedef int (*SimpleCode)(); |
| 1041 EXPECT_EQ(-2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 1042 } |
| 1043 |
| 1044 |
| 1045 ASSEMBLER_TEST_GENERATE(Bgez_taken_forward_far, assembler) { |
| 1046 Label l; |
| 1047 |
| 1048 __ set_use_far_branches(true); |
| 1049 |
| 1050 __ LoadImmediate(T5, 1); |
| 1051 |
| 1052 __ LoadImmediate(V0, 42); |
| 1053 __ bgez(T5, &l); |
| 1054 __ nop(); |
| 1055 __ nop(); |
| 1056 __ LoadImmediate(V0, 0); |
| 1057 __ Bind(&l); |
| 1058 __ jr(RA); |
| 1059 } |
| 1060 |
| 1061 |
| 1062 ASSEMBLER_TEST_RUN(Bgez_taken_forward_far, test) { |
| 1063 typedef int (*SimpleCode)(); |
| 1064 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 1065 } |
| 1066 |
| 1067 |
| 1068 ASSEMBLER_TEST_GENERATE(Bgez_taken_forward_far2, assembler) { |
| 1069 Label l; |
| 1070 |
| 1071 __ set_use_far_branches(true); |
| 1072 |
| 1073 __ LoadImmediate(T5, 1); |
| 1074 |
| 1075 __ LoadImmediate(V0, 42); |
| 1076 __ bgez(T5, &l); |
| 1077 __ nop(); |
| 1078 for (int i = 0; i < (1 << 15); i++) { |
| 1079 __ nop(); |
| 1080 } |
| 1081 __ LoadImmediate(V0, 0); |
| 1082 __ Bind(&l); |
| 1083 __ jr(RA); |
| 1084 } |
| 1085 |
| 1086 |
| 1087 ASSEMBLER_TEST_RUN(Bgez_taken_forward_far2, test) { |
| 1088 typedef int (*SimpleCode)(); |
| 1089 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 1090 } |
| 1091 |
| 1092 |
| 1093 ASSEMBLER_TEST_GENERATE(Bgez_not_taken_forward_far, assembler) { |
| 1094 Label l; |
| 1095 |
| 1096 __ set_use_far_branches(true); |
| 1097 |
| 1098 __ LoadImmediate(T5, -1); |
| 1099 |
| 1100 __ LoadImmediate(V0, 42); |
| 1101 __ bgez(T5, &l); |
| 1102 __ nop(); |
| 1103 __ nop(); |
| 1104 __ LoadImmediate(V0, 0); |
| 1105 __ Bind(&l); |
| 1106 __ jr(RA); |
| 1107 } |
| 1108 |
| 1109 |
| 1110 ASSEMBLER_TEST_RUN(Bgez_not_taken_forward_far, test) { |
| 1111 typedef int (*SimpleCode)(); |
| 1112 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 1113 } |
| 1114 |
| 1115 |
| 1116 ASSEMBLER_TEST_GENERATE(Bgez_not_taken_forward_far2, assembler) { |
| 1117 Label l; |
| 1118 |
| 1119 __ set_use_far_branches(true); |
| 1120 |
| 1121 __ LoadImmediate(T5, -1); |
| 1122 |
| 1123 __ LoadImmediate(V0, 42); |
| 1124 __ bgez(T5, &l); |
| 1125 __ nop(); |
| 1126 for (int i = 0; i < (1 << 15); i++) { |
| 1127 __ nop(); |
| 1128 } |
| 1129 __ LoadImmediate(V0, 0); |
| 1130 __ Bind(&l); |
| 1131 __ jr(RA); |
| 1132 } |
| 1133 |
| 1134 |
| 1135 ASSEMBLER_TEST_RUN(Bgez_not_taken_forward_far2, test) { |
| 1136 typedef int (*SimpleCode)(); |
| 1137 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 1138 } |
| 1139 |
| 1140 |
| 858 ASSEMBLER_TEST_GENERATE(Bgezl, assembler) { | 1141 ASSEMBLER_TEST_GENERATE(Bgezl, assembler) { |
| 859 Label l; | 1142 Label l; |
| 860 | 1143 |
| 861 __ LoadImmediate(T5, 3); | 1144 __ LoadImmediate(T5, 3); |
| 862 __ Bind(&l); | 1145 __ Bind(&l); |
| 863 __ bgezl(T5, &l); | 1146 __ bgezl(T5, &l); |
| 864 __ delay_slot()->addiu(T5, T5, Immediate(-1)); | 1147 __ delay_slot()->addiu(T5, T5, Immediate(-1)); |
| 865 __ ori(V0, T5, Immediate(0)); | 1148 __ ori(V0, T5, Immediate(0)); |
| 866 __ jr(RA); | 1149 __ jr(RA); |
| 867 } | 1150 } |
| (...skipping 16 matching lines...) Expand all Loading... |
| 884 __ jr(RA); | 1167 __ jr(RA); |
| 885 } | 1168 } |
| 886 | 1169 |
| 887 | 1170 |
| 888 ASSEMBLER_TEST_RUN(Blez, test) { | 1171 ASSEMBLER_TEST_RUN(Blez, test) { |
| 889 typedef int (*SimpleCode)(); | 1172 typedef int (*SimpleCode)(); |
| 890 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); | 1173 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 891 } | 1174 } |
| 892 | 1175 |
| 893 | 1176 |
| 1177 ASSEMBLER_TEST_GENERATE(Blez_far, assembler) { |
| 1178 Label l; |
| 1179 |
| 1180 __ set_use_far_branches(true); |
| 1181 |
| 1182 __ LoadImmediate(T5, -3); |
| 1183 __ Bind(&l); |
| 1184 __ blez(T5, &l); |
| 1185 __ delay_slot()->addiu(T5, T5, Immediate(1)); |
| 1186 __ ori(V0, T5, Immediate(0)); |
| 1187 __ jr(RA); |
| 1188 } |
| 1189 |
| 1190 |
| 1191 ASSEMBLER_TEST_RUN(Blez_far, test) { |
| 1192 typedef int (*SimpleCode)(); |
| 1193 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 1194 } |
| 1195 |
| 1196 |
| 1197 ASSEMBLER_TEST_GENERATE(Blez_far2, assembler) { |
| 1198 Label l; |
| 1199 |
| 1200 __ set_use_far_branches(true); |
| 1201 |
| 1202 __ LoadImmediate(T5, -3); |
| 1203 __ Bind(&l); |
| 1204 for (int i = 0; i < (1 << 15); i++) { |
| 1205 __ nop(); |
| 1206 } |
| 1207 __ blez(T5, &l); |
| 1208 __ delay_slot()->addiu(T5, T5, Immediate(1)); |
| 1209 __ ori(V0, T5, Immediate(0)); |
| 1210 __ jr(RA); |
| 1211 } |
| 1212 |
| 1213 |
| 1214 ASSEMBLER_TEST_RUN(Blez_far2, test) { |
| 1215 typedef int (*SimpleCode)(); |
| 1216 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 1217 } |
| 1218 |
| 1219 |
| 1220 ASSEMBLER_TEST_GENERATE(Blez_taken_forward_far, assembler) { |
| 1221 Label l; |
| 1222 |
| 1223 __ set_use_far_branches(true); |
| 1224 |
| 1225 __ LoadImmediate(T5, -1); |
| 1226 |
| 1227 __ LoadImmediate(V0, 42); |
| 1228 __ blez(T5, &l); |
| 1229 __ nop(); |
| 1230 __ nop(); |
| 1231 __ LoadImmediate(V0, 0); |
| 1232 __ Bind(&l); |
| 1233 __ jr(RA); |
| 1234 } |
| 1235 |
| 1236 |
| 1237 ASSEMBLER_TEST_RUN(Blez_taken_forward_far, test) { |
| 1238 typedef int (*SimpleCode)(); |
| 1239 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 1240 } |
| 1241 |
| 1242 |
| 1243 ASSEMBLER_TEST_GENERATE(Blez_not_taken_forward_far, assembler) { |
| 1244 Label l; |
| 1245 |
| 1246 __ set_use_far_branches(true); |
| 1247 |
| 1248 __ LoadImmediate(T5, 1); |
| 1249 |
| 1250 __ LoadImmediate(V0, 42); |
| 1251 __ blez(T5, &l); |
| 1252 __ nop(); |
| 1253 __ nop(); |
| 1254 __ LoadImmediate(V0, 0); |
| 1255 __ Bind(&l); |
| 1256 __ jr(RA); |
| 1257 } |
| 1258 |
| 1259 |
| 1260 ASSEMBLER_TEST_RUN(Blez_not_taken_forward_far, test) { |
| 1261 typedef int (*SimpleCode)(); |
| 1262 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); |
| 1263 } |
| 1264 |
| 1265 |
| 894 ASSEMBLER_TEST_GENERATE(Blezl, assembler) { | 1266 ASSEMBLER_TEST_GENERATE(Blezl, assembler) { |
| 895 Label l; | 1267 Label l; |
| 896 | 1268 |
| 897 __ LoadImmediate(T5, -3); | 1269 __ LoadImmediate(T5, -3); |
| 898 __ Bind(&l); | 1270 __ Bind(&l); |
| 899 __ blezl(T5, &l); | 1271 __ blezl(T5, &l); |
| 900 __ delay_slot()->addiu(T5, T5, Immediate(1)); | 1272 __ delay_slot()->addiu(T5, T5, Immediate(1)); |
| 901 __ ori(V0, T5, Immediate(0)); | 1273 __ ori(V0, T5, Immediate(0)); |
| 902 __ jr(RA); | 1274 __ jr(RA); |
| 903 } | 1275 } |
| (...skipping 777 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1681 A1); | 2053 A1); |
| 1682 __ lw(RA, Address(SP, 0 * kWordSize)); | 2054 __ lw(RA, Address(SP, 0 * kWordSize)); |
| 1683 __ lw(CTX, Address(SP, 1 * kWordSize)); | 2055 __ lw(CTX, Address(SP, 1 * kWordSize)); |
| 1684 __ addiu(SP, SP, Immediate(2 * kWordSize)); | 2056 __ addiu(SP, SP, Immediate(2 * kWordSize)); |
| 1685 __ Ret(); | 2057 __ Ret(); |
| 1686 } | 2058 } |
| 1687 | 2059 |
| 1688 } // namespace dart | 2060 } // namespace dart |
| 1689 | 2061 |
| 1690 #endif // defined TARGET_ARCH_MIPS | 2062 #endif // defined TARGET_ARCH_MIPS |
| OLD | NEW |