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

Side by Side Diff: test/cctest/compiler/test-run-native-calls.cc

Issue 1343533002: MIPS: Make all registers addressable in Operands. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix remaining compiler cctest failures. Created 5 years, 3 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 | « src/register-configuration.cc ('k') | test/cctest/test-code-stubs-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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/assembler.h" 5 #include "src/assembler.h"
6 #include "src/codegen.h" 6 #include "src/codegen.h"
7 #include "src/compiler/linkage.h" 7 #include "src/compiler/linkage.h"
8 #include "src/compiler/machine-type.h" 8 #include "src/compiler/machine-type.h"
9 #include "src/compiler/raw-machine-assembler.h" 9 #include "src/compiler/raw-machine-assembler.h"
10 #include "src/register-configuration.h" 10 #include "src/register-configuration.h"
(...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after
682 } 682 }
683 683
684 684
685 TEST(Run_CopyTwentyInt32_all_allocatable_pairs) { 685 TEST(Run_CopyTwentyInt32_all_allocatable_pairs) {
686 if (DISABLE_NATIVE_STACK_PARAMS) return; 686 if (DISABLE_NATIVE_STACK_PARAMS) return;
687 Int32Signature sig(20); 687 Int32Signature sig(20);
688 RegisterPairs pairs; 688 RegisterPairs pairs;
689 while (pairs.More()) { 689 while (pairs.More()) {
690 Zone zone; 690 Zone zone;
691 int parray[2]; 691 int parray[2];
692 int rarray[] = {0}; 692 int rarray[] = {
693 RegisterConfiguration::ArchDefault()->GetAllocatableGeneralCode(0)};
693 pairs.Next(&parray[0], &parray[1], false); 694 pairs.Next(&parray[0], &parray[1], false);
694 Allocator params(parray, 2, nullptr, 0); 695 Allocator params(parray, 2, nullptr, 0);
695 Allocator rets(rarray, 1, nullptr, 0); 696 Allocator rets(rarray, 1, nullptr, 0);
696 RegisterConfig config(params, rets); 697 RegisterConfig config(params, rets);
697 CallDescriptor* desc = config.Create(&zone, &sig); 698 CallDescriptor* desc = config.Create(&zone, &sig);
698 CopyTwentyInt32(desc); 699 CopyTwentyInt32(desc);
699 } 700 }
700 } 701 }
701 702
702 703
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
734 735
735 736
736 static void Test_Int32_WeightedSum_of_size(int count) { 737 static void Test_Int32_WeightedSum_of_size(int count) {
737 if (DISABLE_NATIVE_STACK_PARAMS) return; 738 if (DISABLE_NATIVE_STACK_PARAMS) return;
738 Int32Signature sig(count); 739 Int32Signature sig(count);
739 for (int p0 = 0; p0 < Register::kNumRegisters; p0++) { 740 for (int p0 = 0; p0 < Register::kNumRegisters; p0++) {
740 if (Register::from_code(p0).IsAllocatable()) { 741 if (Register::from_code(p0).IsAllocatable()) {
741 Zone zone; 742 Zone zone;
742 743
743 int parray[] = {p0}; 744 int parray[] = {p0};
744 int rarray[] = {0}; 745 int rarray[] = {
746 RegisterConfiguration::ArchDefault()->GetAllocatableGeneralCode(0)};
745 Allocator params(parray, 1, nullptr, 0); 747 Allocator params(parray, 1, nullptr, 0);
746 Allocator rets(rarray, 1, nullptr, 0); 748 Allocator rets(rarray, 1, nullptr, 0);
747 RegisterConfig config(params, rets); 749 RegisterConfig config(params, rets);
748 CallDescriptor* desc = config.Create(&zone, &sig); 750 CallDescriptor* desc = config.Create(&zone, &sig);
749 Run_Computation<int32_t>(desc, Build_Int32_WeightedSum, 751 Run_Computation<int32_t>(desc, Build_Int32_WeightedSum,
750 Compute_Int32_WeightedSum, 257 + count); 752 Compute_Int32_WeightedSum, 257 + count);
751 } 753 }
752 } 754 }
753 } 755 }
754 756
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
789 Run_Computation<CType>(desc, Build_Select<which>, 791 Run_Computation<CType>(desc, Build_Select<which>,
790 Compute_Select<CType, which>, 792 Compute_Select<CType, which>,
791 1044 + which + 3 * sizeof(CType)); 793 1044 + which + 3 * sizeof(CType));
792 } 794 }
793 795
794 796
795 template <int which> 797 template <int which>
796 void Test_Int32_Select() { 798 void Test_Int32_Select() {
797 if (DISABLE_NATIVE_STACK_PARAMS) return; 799 if (DISABLE_NATIVE_STACK_PARAMS) return;
798 800
799 int parray[] = {0}; 801 int parray[] = {
800 int rarray[] = {0}; 802 RegisterConfiguration::ArchDefault()->GetAllocatableGeneralCode(0)};
803 int rarray[] = {
804 RegisterConfiguration::ArchDefault()->GetAllocatableGeneralCode(0)};
801 Allocator params(parray, 1, nullptr, 0); 805 Allocator params(parray, 1, nullptr, 0);
802 Allocator rets(rarray, 1, nullptr, 0); 806 Allocator rets(rarray, 1, nullptr, 0);
803 RegisterConfig config(params, rets); 807 RegisterConfig config(params, rets);
804 808
805 Zone zone; 809 Zone zone;
806 810
807 for (int i = which + 1; i <= 64; i++) { 811 for (int i = which + 1; i <= 64; i++) {
808 Int32Signature sig(i); 812 Int32Signature sig(i);
809 CallDescriptor* desc = config.Create(&zone, &sig); 813 CallDescriptor* desc = config.Create(&zone, &sig);
810 RunSelect<int32_t, which>(desc); 814 RunSelect<int32_t, which>(desc);
(...skipping 20 matching lines...) Expand all
831 TEST_INT32_SELECT(62) 835 TEST_INT32_SELECT(62)
832 TEST_INT32_SELECT(63) 836 TEST_INT32_SELECT(63)
833 837
834 838
835 TEST(Int64Select_registers) { 839 TEST(Int64Select_registers) {
836 if (RegisterConfiguration::ArchDefault() 840 if (RegisterConfiguration::ArchDefault()
837 ->num_allocatable_general_registers() < 2) 841 ->num_allocatable_general_registers() < 2)
838 return; 842 return;
839 if (kPointerSize < 8) return; // TODO(titzer): int64 on 32-bit platforms 843 if (kPointerSize < 8) return; // TODO(titzer): int64 on 32-bit platforms
840 844
841 int rarray[] = {0}; 845 int rarray[] = {
846 RegisterConfiguration::ArchDefault()->GetAllocatableGeneralCode(0)};
842 ArgsBuffer<int64_t>::Sig sig(2); 847 ArgsBuffer<int64_t>::Sig sig(2);
843 848
844 RegisterPairs pairs; 849 RegisterPairs pairs;
845 Zone zone; 850 Zone zone;
846 while (pairs.More()) { 851 while (pairs.More()) {
847 int parray[2]; 852 int parray[2];
848 pairs.Next(&parray[0], &parray[1], false); 853 pairs.Next(&parray[0], &parray[1], false);
849 Allocator params(parray, 2, nullptr, 0); 854 Allocator params(parray, 2, nullptr, 0);
850 Allocator rets(rarray, 1, nullptr, 0); 855 Allocator rets(rarray, 1, nullptr, 0);
851 RegisterConfig config(params, rets); 856 RegisterConfig config(params, rets);
852 857
853 CallDescriptor* desc = config.Create(&zone, &sig); 858 CallDescriptor* desc = config.Create(&zone, &sig);
854 RunSelect<int64_t, 0>(desc); 859 RunSelect<int64_t, 0>(desc);
855 RunSelect<int64_t, 1>(desc); 860 RunSelect<int64_t, 1>(desc);
856 } 861 }
857 } 862 }
858 863
859 864
860 TEST(Float32Select_registers) { 865 TEST(Float32Select_registers) {
861 if (RegisterConfiguration::ArchDefault()->num_allocatable_double_registers() < 866 if (RegisterConfiguration::ArchDefault()->num_allocatable_double_registers() <
862 2) { 867 2) {
863 return; 868 return;
864 } 869 }
865 870
866 int rarray[] = {0}; 871 int rarray[] = {
872 RegisterConfiguration::ArchDefault()->GetAllocatableDoubleCode(0)};
867 ArgsBuffer<float32>::Sig sig(2); 873 ArgsBuffer<float32>::Sig sig(2);
868 874
869 Float32RegisterPairs pairs; 875 Float32RegisterPairs pairs;
870 Zone zone; 876 Zone zone;
871 while (pairs.More()) { 877 while (pairs.More()) {
872 int parray[2]; 878 int parray[2];
873 pairs.Next(&parray[0], &parray[1], false); 879 pairs.Next(&parray[0], &parray[1], false);
874 Allocator params(nullptr, 0, parray, 2); 880 Allocator params(nullptr, 0, parray, 2);
875 Allocator rets(nullptr, 0, rarray, 1); 881 Allocator rets(nullptr, 0, rarray, 1);
876 RegisterConfig config(params, rets); 882 RegisterConfig config(params, rets);
877 883
878 CallDescriptor* desc = config.Create(&zone, &sig); 884 CallDescriptor* desc = config.Create(&zone, &sig);
879 RunSelect<float32, 0>(desc); 885 RunSelect<float32, 0>(desc);
880 RunSelect<float32, 1>(desc); 886 RunSelect<float32, 1>(desc);
881 } 887 }
882 } 888 }
883 889
884 890
885 TEST(Float64Select_registers) { 891 TEST(Float64Select_registers) {
886 if (RegisterConfiguration::ArchDefault()->num_allocatable_double_registers() < 892 if (RegisterConfiguration::ArchDefault()->num_allocatable_double_registers() <
887 2) 893 2)
888 return; 894 return;
889 if (RegisterConfiguration::ArchDefault() 895 if (RegisterConfiguration::ArchDefault()
890 ->num_allocatable_general_registers() < 2) 896 ->num_allocatable_general_registers() < 2)
891 return; 897 return;
892 int rarray[] = {0}; 898 int rarray[] = {
899 RegisterConfiguration::ArchDefault()->GetAllocatableDoubleCode(0)};
893 ArgsBuffer<float64>::Sig sig(2); 900 ArgsBuffer<float64>::Sig sig(2);
894 901
895 Float64RegisterPairs pairs; 902 Float64RegisterPairs pairs;
896 Zone zone; 903 Zone zone;
897 while (pairs.More()) { 904 while (pairs.More()) {
898 int parray[2]; 905 int parray[2];
899 pairs.Next(&parray[0], &parray[1], false); 906 pairs.Next(&parray[0], &parray[1], false);
900 Allocator params(nullptr, 0, parray, 2); 907 Allocator params(nullptr, 0, parray, 2);
901 Allocator rets(nullptr, 0, rarray, 1); 908 Allocator rets(nullptr, 0, rarray, 1);
902 RegisterConfig config(params, rets); 909 RegisterConfig config(params, rets);
903 910
904 CallDescriptor* desc = config.Create(&zone, &sig); 911 CallDescriptor* desc = config.Create(&zone, &sig);
905 RunSelect<float64, 0>(desc); 912 RunSelect<float64, 0>(desc);
906 RunSelect<float64, 1>(desc); 913 RunSelect<float64, 1>(desc);
907 } 914 }
908 } 915 }
909 916
910 917
911 TEST(Float32Select_stack_params_return_reg) { 918 TEST(Float32Select_stack_params_return_reg) {
912 if (DISABLE_NATIVE_STACK_PARAMS) return; 919 if (DISABLE_NATIVE_STACK_PARAMS) return;
913 int rarray[] = {0}; 920 int rarray[] = {
921 RegisterConfiguration::ArchDefault()->GetAllocatableDoubleCode(0)};
914 Allocator params(nullptr, 0, nullptr, 0); 922 Allocator params(nullptr, 0, nullptr, 0);
915 Allocator rets(nullptr, 0, rarray, 1); 923 Allocator rets(nullptr, 0, rarray, 1);
916 RegisterConfig config(params, rets); 924 RegisterConfig config(params, rets);
917 925
918 Zone zone; 926 Zone zone;
919 for (int count = 1; count < 6; count++) { 927 for (int count = 1; count < 6; count++) {
920 ArgsBuffer<float32>::Sig sig(count); 928 ArgsBuffer<float32>::Sig sig(count);
921 CallDescriptor* desc = config.Create(&zone, &sig); 929 CallDescriptor* desc = config.Create(&zone, &sig);
922 RunSelect<float32, 0>(desc); 930 RunSelect<float32, 0>(desc);
923 RunSelect<float32, 1>(desc); 931 RunSelect<float32, 1>(desc);
924 RunSelect<float32, 2>(desc); 932 RunSelect<float32, 2>(desc);
925 RunSelect<float32, 3>(desc); 933 RunSelect<float32, 3>(desc);
926 RunSelect<float32, 4>(desc); 934 RunSelect<float32, 4>(desc);
927 RunSelect<float32, 5>(desc); 935 RunSelect<float32, 5>(desc);
928 } 936 }
929 } 937 }
930 938
931 939
932 TEST(Float64Select_stack_params_return_reg) { 940 TEST(Float64Select_stack_params_return_reg) {
933 if (DISABLE_NATIVE_STACK_PARAMS) return; 941 if (DISABLE_NATIVE_STACK_PARAMS) return;
934 int rarray[] = {0}; 942 int rarray[] = {
943 RegisterConfiguration::ArchDefault()->GetAllocatableDoubleCode(0)};
935 Allocator params(nullptr, 0, nullptr, 0); 944 Allocator params(nullptr, 0, nullptr, 0);
936 Allocator rets(nullptr, 0, rarray, 1); 945 Allocator rets(nullptr, 0, rarray, 1);
937 RegisterConfig config(params, rets); 946 RegisterConfig config(params, rets);
938 947
939 Zone zone; 948 Zone zone;
940 for (int count = 1; count < 6; count++) { 949 for (int count = 1; count < 6; count++) {
941 ArgsBuffer<float64>::Sig sig(count); 950 ArgsBuffer<float64>::Sig sig(count);
942 CallDescriptor* desc = config.Create(&zone, &sig); 951 CallDescriptor* desc = config.Create(&zone, &sig);
943 RunSelect<float64, 0>(desc); 952 RunSelect<float64, 0>(desc);
944 RunSelect<float64, 1>(desc); 953 RunSelect<float64, 1>(desc);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
978 987
979 Node* call = raw.CallN(desc, target, args); 988 Node* call = raw.CallN(desc, target, args);
980 raw.Return(call); 989 raw.Return(call);
981 } 990 }
982 } 991 }
983 992
984 993
985 TEST(Float64StackParamsToStackParams) { 994 TEST(Float64StackParamsToStackParams) {
986 if (DISABLE_NATIVE_STACK_PARAMS) return; 995 if (DISABLE_NATIVE_STACK_PARAMS) return;
987 996
988 int rarray[] = {0}; 997 int rarray[] = {
998 RegisterConfiguration::ArchDefault()->GetAllocatableDoubleCode(0)};
989 Allocator params(nullptr, 0, nullptr, 0); 999 Allocator params(nullptr, 0, nullptr, 0);
990 Allocator rets(nullptr, 0, rarray, 1); 1000 Allocator rets(nullptr, 0, rarray, 1);
991 1001
992 Zone zone; 1002 Zone zone;
993 ArgsBuffer<float64>::Sig sig(2); 1003 ArgsBuffer<float64>::Sig sig(2);
994 RegisterConfig config(params, rets); 1004 RegisterConfig config(params, rets);
995 CallDescriptor* desc = config.Create(&zone, &sig); 1005 CallDescriptor* desc = config.Create(&zone, &sig);
996 1006
997 Run_Computation<float64>(desc, Build_Select_With_Call<float64, 0>, 1007 Run_Computation<float64>(desc, Build_Select_With_Call<float64, 0>,
998 Compute_Select<float64, 0>, 1098); 1008 Compute_Select<float64, 0>, 1098);
(...skipping 22 matching lines...) Expand all
1021 kMachInt32, kMachFloat64, kMachInt32, kMachFloat32}; 1031 kMachInt32, kMachFloat64, kMachInt32, kMachFloat32};
1022 #endif 1032 #endif
1023 1033
1024 Isolate* isolate = CcTest::InitIsolateOnce(); 1034 Isolate* isolate = CcTest::InitIsolateOnce();
1025 1035
1026 // Build machine signature 1036 // Build machine signature
1027 MachineType* params = &types[start]; 1037 MachineType* params = &types[start];
1028 const int num_params = static_cast<int>(arraysize(types) - start); 1038 const int num_params = static_cast<int>(arraysize(types) - start);
1029 1039
1030 // Build call descriptor 1040 // Build call descriptor
1031 int parray[] = {0, 1}; 1041 int parray_gp[] = {
1032 int rarray[] = {0}; 1042 RegisterConfiguration::ArchDefault()->GetAllocatableGeneralCode(0),
1033 Allocator palloc(parray, 2, parray, 2); 1043 RegisterConfiguration::ArchDefault()->GetAllocatableGeneralCode(1)};
1034 Allocator ralloc(rarray, 1, rarray, 1); 1044 int rarray_gp[] = {
1045 RegisterConfiguration::ArchDefault()->GetAllocatableGeneralCode(0)};
1046 int parray_fp[] = {
1047 RegisterConfiguration::ArchDefault()->GetAllocatableDoubleCode(0),
1048 RegisterConfiguration::ArchDefault()->GetAllocatableDoubleCode(1)};
1049 int rarray_fp[] = {
1050 RegisterConfiguration::ArchDefault()->GetAllocatableDoubleCode(0)};
1051 Allocator palloc(parray_gp, 2, parray_fp, 2);
1052 Allocator ralloc(rarray_gp, 1, rarray_fp, 1);
1035 RegisterConfig config(palloc, ralloc); 1053 RegisterConfig config(palloc, ralloc);
1036 1054
1037 for (int which = 0; which < num_params; which++) { 1055 for (int which = 0; which < num_params; which++) {
1038 Zone zone; 1056 Zone zone;
1039 HandleScope scope(isolate); 1057 HandleScope scope(isolate);
1040 MachineSignature::Builder builder(&zone, 1, num_params); 1058 MachineSignature::Builder builder(&zone, 1, num_params);
1041 builder.AddReturn(params[which]); 1059 builder.AddReturn(params[which]);
1042 for (int j = 0; j < num_params; j++) builder.AddParam(params[j]); 1060 for (int j = 0; j < num_params; j++) builder.AddParam(params[j]);
1043 MachineSignature* sig = builder.Build(); 1061 MachineSignature* sig = builder.Build();
1044 CallDescriptor* desc = config.Create(&zone, sig); 1062 CallDescriptor* desc = config.Create(&zone, sig);
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
1115 } 1133 }
1116 } 1134 }
1117 } 1135 }
1118 } 1136 }
1119 1137
1120 1138
1121 TEST(MixedParams_0) { MixedParamTest(0); } 1139 TEST(MixedParams_0) { MixedParamTest(0); }
1122 TEST(MixedParams_1) { MixedParamTest(1); } 1140 TEST(MixedParams_1) { MixedParamTest(1); }
1123 TEST(MixedParams_2) { MixedParamTest(2); } 1141 TEST(MixedParams_2) { MixedParamTest(2); }
1124 TEST(MixedParams_3) { MixedParamTest(3); } 1142 TEST(MixedParams_3) { MixedParamTest(3); }
OLDNEW
« no previous file with comments | « src/register-configuration.cc ('k') | test/cctest/test-code-stubs-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698