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

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

Issue 1405673003: provides a mechanism for optimizing compilers to select the different Register configuration. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Add the TODO comments. Created 5 years, 2 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/compiler/test-multiple-return.cc ('k') | test/cctest/test-code-stubs-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 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 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 int counter_; 79 int counter_;
80 bool exhaustive() { return max_pairs_ == (range_ * range_); } 80 bool exhaustive() { return max_pairs_ == (range_ * range_); }
81 }; 81 };
82 82
83 83
84 // Pairs of general purpose registers. 84 // Pairs of general purpose registers.
85 class RegisterPairs : public Pairs { 85 class RegisterPairs : public Pairs {
86 public: 86 public:
87 RegisterPairs() 87 RegisterPairs()
88 : Pairs( 88 : Pairs(
89 100, RegisterConfiguration::ArchDefault() 89 100,
90 ->num_allocatable_general_registers(), 90 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
91 RegisterConfiguration::ArchDefault()->allocatable_general_codes()) { 91 ->num_allocatable_general_registers(),
92 } 92 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
93 ->allocatable_general_codes()) {}
93 }; 94 };
94 95
95 96
96 // Pairs of double registers. 97 // Pairs of double registers.
97 class Float32RegisterPairs : public Pairs { 98 class Float32RegisterPairs : public Pairs {
98 public: 99 public:
99 Float32RegisterPairs() 100 Float32RegisterPairs()
100 : Pairs( 101 : Pairs(
101 100, RegisterConfiguration::ArchDefault() 102 100,
102 ->num_allocatable_aliased_double_registers(), 103 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
103 RegisterConfiguration::ArchDefault()->allocatable_double_codes()) {} 104 ->num_allocatable_aliased_double_registers(),
105 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
106 ->allocatable_double_codes()) {}
104 }; 107 };
105 108
106 109
107 // Pairs of double registers. 110 // Pairs of double registers.
108 class Float64RegisterPairs : public Pairs { 111 class Float64RegisterPairs : public Pairs {
109 public: 112 public:
110 Float64RegisterPairs() 113 Float64RegisterPairs()
111 : Pairs( 114 : Pairs(
112 100, RegisterConfiguration::ArchDefault() 115 100,
113 ->num_allocatable_aliased_double_registers(), 116 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
114 RegisterConfiguration::ArchDefault()->allocatable_double_codes()) {} 117 ->num_allocatable_aliased_double_registers(),
118 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
119 ->allocatable_double_codes()) {}
115 }; 120 };
116 121
117 122
118 // Helper for allocating either an GP or FP reg, or the next stack slot. 123 // Helper for allocating either an GP or FP reg, or the next stack slot.
119 struct Allocator { 124 struct Allocator {
120 Allocator(int* gp, int gpc, int* fp, int fpc) 125 Allocator(int* gp, int gpc, int* fp, int fpc)
121 : gp_count(gpc), 126 : gp_count(gpc),
122 gp_offset(0), 127 gp_offset(0),
123 gp_regs(gp), 128 gp_regs(gp),
124 fp_count(fpc), 129 fp_count(fpc),
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 688
684 689
685 TEST(Run_CopyTwentyInt32_all_allocatable_pairs) { 690 TEST(Run_CopyTwentyInt32_all_allocatable_pairs) {
686 if (DISABLE_NATIVE_STACK_PARAMS) return; 691 if (DISABLE_NATIVE_STACK_PARAMS) return;
687 Int32Signature sig(20); 692 Int32Signature sig(20);
688 RegisterPairs pairs; 693 RegisterPairs pairs;
689 while (pairs.More()) { 694 while (pairs.More()) {
690 Zone zone; 695 Zone zone;
691 int parray[2]; 696 int parray[2];
692 int rarray[] = { 697 int rarray[] = {
693 RegisterConfiguration::ArchDefault()->GetAllocatableGeneralCode(0)}; 698 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
699 ->GetAllocatableGeneralCode(0)};
694 pairs.Next(&parray[0], &parray[1], false); 700 pairs.Next(&parray[0], &parray[1], false);
695 Allocator params(parray, 2, nullptr, 0); 701 Allocator params(parray, 2, nullptr, 0);
696 Allocator rets(rarray, 1, nullptr, 0); 702 Allocator rets(rarray, 1, nullptr, 0);
697 RegisterConfig config(params, rets); 703 RegisterConfig config(params, rets);
698 CallDescriptor* desc = config.Create(&zone, &sig); 704 CallDescriptor* desc = config.Create(&zone, &sig);
699 CopyTwentyInt32(desc); 705 CopyTwentyInt32(desc);
700 } 706 }
701 } 707 }
702 708
703 709
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
736 742
737 static void Test_Int32_WeightedSum_of_size(int count) { 743 static void Test_Int32_WeightedSum_of_size(int count) {
738 if (DISABLE_NATIVE_STACK_PARAMS) return; 744 if (DISABLE_NATIVE_STACK_PARAMS) return;
739 Int32Signature sig(count); 745 Int32Signature sig(count);
740 for (int p0 = 0; p0 < Register::kNumRegisters; p0++) { 746 for (int p0 = 0; p0 < Register::kNumRegisters; p0++) {
741 if (Register::from_code(p0).IsAllocatable()) { 747 if (Register::from_code(p0).IsAllocatable()) {
742 Zone zone; 748 Zone zone;
743 749
744 int parray[] = {p0}; 750 int parray[] = {p0};
745 int rarray[] = { 751 int rarray[] = {
746 RegisterConfiguration::ArchDefault()->GetAllocatableGeneralCode(0)}; 752 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
753 ->GetAllocatableGeneralCode(0)};
747 Allocator params(parray, 1, nullptr, 0); 754 Allocator params(parray, 1, nullptr, 0);
748 Allocator rets(rarray, 1, nullptr, 0); 755 Allocator rets(rarray, 1, nullptr, 0);
749 RegisterConfig config(params, rets); 756 RegisterConfig config(params, rets);
750 CallDescriptor* desc = config.Create(&zone, &sig); 757 CallDescriptor* desc = config.Create(&zone, &sig);
751 Run_Computation<int32_t>(desc, Build_Int32_WeightedSum, 758 Run_Computation<int32_t>(desc, Build_Int32_WeightedSum,
752 Compute_Int32_WeightedSum, 257 + count); 759 Compute_Int32_WeightedSum, 257 + count);
753 } 760 }
754 } 761 }
755 } 762 }
756 763
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
792 Compute_Select<CType, which>, 799 Compute_Select<CType, which>,
793 1044 + which + 3 * sizeof(CType)); 800 1044 + which + 3 * sizeof(CType));
794 } 801 }
795 802
796 803
797 template <int which> 804 template <int which>
798 void Test_Int32_Select() { 805 void Test_Int32_Select() {
799 if (DISABLE_NATIVE_STACK_PARAMS) return; 806 if (DISABLE_NATIVE_STACK_PARAMS) return;
800 807
801 int parray[] = { 808 int parray[] = {
802 RegisterConfiguration::ArchDefault()->GetAllocatableGeneralCode(0)}; 809 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
810 ->GetAllocatableGeneralCode(0)};
803 int rarray[] = { 811 int rarray[] = {
804 RegisterConfiguration::ArchDefault()->GetAllocatableGeneralCode(0)}; 812 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
813 ->GetAllocatableGeneralCode(0)};
805 Allocator params(parray, 1, nullptr, 0); 814 Allocator params(parray, 1, nullptr, 0);
806 Allocator rets(rarray, 1, nullptr, 0); 815 Allocator rets(rarray, 1, nullptr, 0);
807 RegisterConfig config(params, rets); 816 RegisterConfig config(params, rets);
808 817
809 Zone zone; 818 Zone zone;
810 819
811 for (int i = which + 1; i <= 64; i++) { 820 for (int i = which + 1; i <= 64; i++) {
812 Int32Signature sig(i); 821 Int32Signature sig(i);
813 CallDescriptor* desc = config.Create(&zone, &sig); 822 CallDescriptor* desc = config.Create(&zone, &sig);
814 RunSelect<int32_t, which>(desc); 823 RunSelect<int32_t, which>(desc);
(...skipping 15 matching lines...) Expand all
830 TEST_INT32_SELECT(6) 839 TEST_INT32_SELECT(6)
831 TEST_INT32_SELECT(11) 840 TEST_INT32_SELECT(11)
832 TEST_INT32_SELECT(15) 841 TEST_INT32_SELECT(15)
833 TEST_INT32_SELECT(19) 842 TEST_INT32_SELECT(19)
834 TEST_INT32_SELECT(45) 843 TEST_INT32_SELECT(45)
835 TEST_INT32_SELECT(62) 844 TEST_INT32_SELECT(62)
836 TEST_INT32_SELECT(63) 845 TEST_INT32_SELECT(63)
837 846
838 847
839 TEST(Int64Select_registers) { 848 TEST(Int64Select_registers) {
840 if (RegisterConfiguration::ArchDefault() 849 if (RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
841 ->num_allocatable_general_registers() < 2) 850 ->num_allocatable_general_registers() < 2)
842 return; 851 return;
843 if (kPointerSize < 8) return; // TODO(titzer): int64 on 32-bit platforms 852 if (kPointerSize < 8) return; // TODO(titzer): int64 on 32-bit platforms
844 853
845 int rarray[] = { 854 int rarray[] = {
846 RegisterConfiguration::ArchDefault()->GetAllocatableGeneralCode(0)}; 855 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
856 ->GetAllocatableGeneralCode(0)};
847 ArgsBuffer<int64_t>::Sig sig(2); 857 ArgsBuffer<int64_t>::Sig sig(2);
848 858
849 RegisterPairs pairs; 859 RegisterPairs pairs;
850 Zone zone; 860 Zone zone;
851 while (pairs.More()) { 861 while (pairs.More()) {
852 int parray[2]; 862 int parray[2];
853 pairs.Next(&parray[0], &parray[1], false); 863 pairs.Next(&parray[0], &parray[1], false);
854 Allocator params(parray, 2, nullptr, 0); 864 Allocator params(parray, 2, nullptr, 0);
855 Allocator rets(rarray, 1, nullptr, 0); 865 Allocator rets(rarray, 1, nullptr, 0);
856 RegisterConfig config(params, rets); 866 RegisterConfig config(params, rets);
857 867
858 CallDescriptor* desc = config.Create(&zone, &sig); 868 CallDescriptor* desc = config.Create(&zone, &sig);
859 RunSelect<int64_t, 0>(desc); 869 RunSelect<int64_t, 0>(desc);
860 RunSelect<int64_t, 1>(desc); 870 RunSelect<int64_t, 1>(desc);
861 } 871 }
862 } 872 }
863 873
864 874
865 TEST(Float32Select_registers) { 875 TEST(Float32Select_registers) {
866 if (RegisterConfiguration::ArchDefault()->num_allocatable_double_registers() < 876 if (RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
867 2) { 877 ->num_allocatable_double_registers() < 2) {
868 return; 878 return;
869 } 879 }
870 880
871 int rarray[] = { 881 int rarray[] = {
872 RegisterConfiguration::ArchDefault()->GetAllocatableDoubleCode(0)}; 882 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
883 ->GetAllocatableDoubleCode(0)};
873 ArgsBuffer<float32>::Sig sig(2); 884 ArgsBuffer<float32>::Sig sig(2);
874 885
875 Float32RegisterPairs pairs; 886 Float32RegisterPairs pairs;
876 Zone zone; 887 Zone zone;
877 while (pairs.More()) { 888 while (pairs.More()) {
878 int parray[2]; 889 int parray[2];
879 pairs.Next(&parray[0], &parray[1], false); 890 pairs.Next(&parray[0], &parray[1], false);
880 Allocator params(nullptr, 0, parray, 2); 891 Allocator params(nullptr, 0, parray, 2);
881 Allocator rets(nullptr, 0, rarray, 1); 892 Allocator rets(nullptr, 0, rarray, 1);
882 RegisterConfig config(params, rets); 893 RegisterConfig config(params, rets);
883 894
884 CallDescriptor* desc = config.Create(&zone, &sig); 895 CallDescriptor* desc = config.Create(&zone, &sig);
885 RunSelect<float32, 0>(desc); 896 RunSelect<float32, 0>(desc);
886 RunSelect<float32, 1>(desc); 897 RunSelect<float32, 1>(desc);
887 } 898 }
888 } 899 }
889 900
890 901
891 TEST(Float64Select_registers) { 902 TEST(Float64Select_registers) {
892 if (RegisterConfiguration::ArchDefault()->num_allocatable_double_registers() < 903 if (RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
893 2) 904 ->num_allocatable_double_registers() < 2)
894 return; 905 return;
895 if (RegisterConfiguration::ArchDefault() 906 if (RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
896 ->num_allocatable_general_registers() < 2) 907 ->num_allocatable_general_registers() < 2)
897 return; 908 return;
898 int rarray[] = { 909 int rarray[] = {
899 RegisterConfiguration::ArchDefault()->GetAllocatableDoubleCode(0)}; 910 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
911 ->GetAllocatableDoubleCode(0)};
900 ArgsBuffer<float64>::Sig sig(2); 912 ArgsBuffer<float64>::Sig sig(2);
901 913
902 Float64RegisterPairs pairs; 914 Float64RegisterPairs pairs;
903 Zone zone; 915 Zone zone;
904 while (pairs.More()) { 916 while (pairs.More()) {
905 int parray[2]; 917 int parray[2];
906 pairs.Next(&parray[0], &parray[1], false); 918 pairs.Next(&parray[0], &parray[1], false);
907 Allocator params(nullptr, 0, parray, 2); 919 Allocator params(nullptr, 0, parray, 2);
908 Allocator rets(nullptr, 0, rarray, 1); 920 Allocator rets(nullptr, 0, rarray, 1);
909 RegisterConfig config(params, rets); 921 RegisterConfig config(params, rets);
910 922
911 CallDescriptor* desc = config.Create(&zone, &sig); 923 CallDescriptor* desc = config.Create(&zone, &sig);
912 RunSelect<float64, 0>(desc); 924 RunSelect<float64, 0>(desc);
913 RunSelect<float64, 1>(desc); 925 RunSelect<float64, 1>(desc);
914 } 926 }
915 } 927 }
916 928
917 929
918 TEST(Float32Select_stack_params_return_reg) { 930 TEST(Float32Select_stack_params_return_reg) {
919 if (DISABLE_NATIVE_STACK_PARAMS) return; 931 if (DISABLE_NATIVE_STACK_PARAMS) return;
920 int rarray[] = { 932 int rarray[] = {
921 RegisterConfiguration::ArchDefault()->GetAllocatableDoubleCode(0)}; 933 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
934 ->GetAllocatableDoubleCode(0)};
922 Allocator params(nullptr, 0, nullptr, 0); 935 Allocator params(nullptr, 0, nullptr, 0);
923 Allocator rets(nullptr, 0, rarray, 1); 936 Allocator rets(nullptr, 0, rarray, 1);
924 RegisterConfig config(params, rets); 937 RegisterConfig config(params, rets);
925 938
926 Zone zone; 939 Zone zone;
927 for (int count = 1; count < 6; count++) { 940 for (int count = 1; count < 6; count++) {
928 ArgsBuffer<float32>::Sig sig(count); 941 ArgsBuffer<float32>::Sig sig(count);
929 CallDescriptor* desc = config.Create(&zone, &sig); 942 CallDescriptor* desc = config.Create(&zone, &sig);
930 RunSelect<float32, 0>(desc); 943 RunSelect<float32, 0>(desc);
931 RunSelect<float32, 1>(desc); 944 RunSelect<float32, 1>(desc);
932 RunSelect<float32, 2>(desc); 945 RunSelect<float32, 2>(desc);
933 RunSelect<float32, 3>(desc); 946 RunSelect<float32, 3>(desc);
934 RunSelect<float32, 4>(desc); 947 RunSelect<float32, 4>(desc);
935 RunSelect<float32, 5>(desc); 948 RunSelect<float32, 5>(desc);
936 } 949 }
937 } 950 }
938 951
939 952
940 TEST(Float64Select_stack_params_return_reg) { 953 TEST(Float64Select_stack_params_return_reg) {
941 if (DISABLE_NATIVE_STACK_PARAMS) return; 954 if (DISABLE_NATIVE_STACK_PARAMS) return;
942 int rarray[] = { 955 int rarray[] = {
943 RegisterConfiguration::ArchDefault()->GetAllocatableDoubleCode(0)}; 956 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
957 ->GetAllocatableDoubleCode(0)};
944 Allocator params(nullptr, 0, nullptr, 0); 958 Allocator params(nullptr, 0, nullptr, 0);
945 Allocator rets(nullptr, 0, rarray, 1); 959 Allocator rets(nullptr, 0, rarray, 1);
946 RegisterConfig config(params, rets); 960 RegisterConfig config(params, rets);
947 961
948 Zone zone; 962 Zone zone;
949 for (int count = 1; count < 6; count++) { 963 for (int count = 1; count < 6; count++) {
950 ArgsBuffer<float64>::Sig sig(count); 964 ArgsBuffer<float64>::Sig sig(count);
951 CallDescriptor* desc = config.Create(&zone, &sig); 965 CallDescriptor* desc = config.Create(&zone, &sig);
952 RunSelect<float64, 0>(desc); 966 RunSelect<float64, 0>(desc);
953 RunSelect<float64, 1>(desc); 967 RunSelect<float64, 1>(desc);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
988 Node* call = raw.CallN(desc, target, args); 1002 Node* call = raw.CallN(desc, target, args);
989 raw.Return(call); 1003 raw.Return(call);
990 } 1004 }
991 } 1005 }
992 1006
993 1007
994 TEST(Float64StackParamsToStackParams) { 1008 TEST(Float64StackParamsToStackParams) {
995 if (DISABLE_NATIVE_STACK_PARAMS) return; 1009 if (DISABLE_NATIVE_STACK_PARAMS) return;
996 1010
997 int rarray[] = { 1011 int rarray[] = {
998 RegisterConfiguration::ArchDefault()->GetAllocatableDoubleCode(0)}; 1012 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
1013 ->GetAllocatableDoubleCode(0)};
999 Allocator params(nullptr, 0, nullptr, 0); 1014 Allocator params(nullptr, 0, nullptr, 0);
1000 Allocator rets(nullptr, 0, rarray, 1); 1015 Allocator rets(nullptr, 0, rarray, 1);
1001 1016
1002 Zone zone; 1017 Zone zone;
1003 ArgsBuffer<float64>::Sig sig(2); 1018 ArgsBuffer<float64>::Sig sig(2);
1004 RegisterConfig config(params, rets); 1019 RegisterConfig config(params, rets);
1005 CallDescriptor* desc = config.Create(&zone, &sig); 1020 CallDescriptor* desc = config.Create(&zone, &sig);
1006 1021
1007 Run_Computation<float64>(desc, Build_Select_With_Call<float64, 0>, 1022 Run_Computation<float64>(desc, Build_Select_With_Call<float64, 0>,
1008 Compute_Select<float64, 0>, 1098); 1023 Compute_Select<float64, 0>, 1098);
1009 1024
1010 Run_Computation<float64>(desc, Build_Select_With_Call<float64, 1>, 1025 Run_Computation<float64>(desc, Build_Select_With_Call<float64, 1>,
1011 Compute_Select<float64, 1>, 1099); 1026 Compute_Select<float64, 1>, 1099);
1012 } 1027 }
1013 1028
1014 1029
1015 void MixedParamTest(int start) { 1030 void MixedParamTest(int start) {
1016 if (DISABLE_NATIVE_STACK_PARAMS) return; 1031 if (DISABLE_NATIVE_STACK_PARAMS) return;
1017 if (RegisterConfiguration::ArchDefault()->num_double_registers() < 2) return; 1032 if (RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
1033 ->num_double_registers() < 2)
1034 return;
1018 1035
1019 // TODO(titzer): mix in 64-bit types on all platforms when supported. 1036 // TODO(titzer): mix in 64-bit types on all platforms when supported.
1020 #if V8_TARGET_ARCH_32_BIT 1037 #if V8_TARGET_ARCH_32_BIT
1021 static MachineType types[] = { 1038 static MachineType types[] = {
1022 kMachInt32, kMachFloat32, kMachFloat64, kMachInt32, kMachFloat64, 1039 kMachInt32, kMachFloat32, kMachFloat64, kMachInt32, kMachFloat64,
1023 kMachFloat32, kMachFloat32, kMachFloat64, kMachInt32, kMachFloat32, 1040 kMachFloat32, kMachFloat32, kMachFloat64, kMachInt32, kMachFloat32,
1024 kMachInt32, kMachFloat64, kMachFloat64, kMachFloat32, kMachInt32, 1041 kMachInt32, kMachFloat64, kMachFloat64, kMachFloat32, kMachInt32,
1025 kMachFloat64, kMachInt32, kMachFloat32}; 1042 kMachFloat64, kMachInt32, kMachFloat32};
1026 #else 1043 #else
1027 static MachineType types[] = { 1044 static MachineType types[] = {
1028 kMachInt32, kMachInt64, kMachFloat32, kMachFloat64, kMachInt32, 1045 kMachInt32, kMachInt64, kMachFloat32, kMachFloat64, kMachInt32,
1029 kMachFloat64, kMachFloat32, kMachInt64, kMachFloat64, kMachInt32, 1046 kMachFloat64, kMachFloat32, kMachInt64, kMachFloat64, kMachInt32,
1030 kMachFloat32, kMachInt32, kMachFloat64, kMachFloat64, kMachInt64, 1047 kMachFloat32, kMachInt32, kMachFloat64, kMachFloat64, kMachInt64,
1031 kMachInt32, kMachFloat64, kMachInt32, kMachFloat32}; 1048 kMachInt32, kMachFloat64, kMachInt32, kMachFloat32};
1032 #endif 1049 #endif
1033 1050
1034 Isolate* isolate = CcTest::InitIsolateOnce(); 1051 Isolate* isolate = CcTest::InitIsolateOnce();
1035 1052
1036 // Build machine signature 1053 // Build machine signature
1037 MachineType* params = &types[start]; 1054 MachineType* params = &types[start];
1038 const int num_params = static_cast<int>(arraysize(types) - start); 1055 const int num_params = static_cast<int>(arraysize(types) - start);
1039 1056
1040 // Build call descriptor 1057 // Build call descriptor
1041 int parray_gp[] = { 1058 int parray_gp[] = {
1042 RegisterConfiguration::ArchDefault()->GetAllocatableGeneralCode(0), 1059 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
1043 RegisterConfiguration::ArchDefault()->GetAllocatableGeneralCode(1)}; 1060 ->GetAllocatableGeneralCode(0),
1061 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
1062 ->GetAllocatableGeneralCode(1)};
1044 int rarray_gp[] = { 1063 int rarray_gp[] = {
1045 RegisterConfiguration::ArchDefault()->GetAllocatableGeneralCode(0)}; 1064 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
1065 ->GetAllocatableGeneralCode(0)};
1046 int parray_fp[] = { 1066 int parray_fp[] = {
1047 RegisterConfiguration::ArchDefault()->GetAllocatableDoubleCode(0), 1067 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
1048 RegisterConfiguration::ArchDefault()->GetAllocatableDoubleCode(1)}; 1068 ->GetAllocatableDoubleCode(0),
1069 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
1070 ->GetAllocatableDoubleCode(1)};
1049 int rarray_fp[] = { 1071 int rarray_fp[] = {
1050 RegisterConfiguration::ArchDefault()->GetAllocatableDoubleCode(0)}; 1072 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN)
1073 ->GetAllocatableDoubleCode(0)};
1051 Allocator palloc(parray_gp, 2, parray_fp, 2); 1074 Allocator palloc(parray_gp, 2, parray_fp, 2);
1052 Allocator ralloc(rarray_gp, 1, rarray_fp, 1); 1075 Allocator ralloc(rarray_gp, 1, rarray_fp, 1);
1053 RegisterConfig config(palloc, ralloc); 1076 RegisterConfig config(palloc, ralloc);
1054 1077
1055 for (int which = 0; which < num_params; which++) { 1078 for (int which = 0; which < num_params; which++) {
1056 Zone zone; 1079 Zone zone;
1057 HandleScope scope(isolate); 1080 HandleScope scope(isolate);
1058 MachineSignature::Builder builder(&zone, 1, num_params); 1081 MachineSignature::Builder builder(&zone, 1, num_params);
1059 builder.AddReturn(params[which]); 1082 builder.AddReturn(params[which]);
1060 for (int j = 0; j < num_params; j++) builder.AddParam(params[j]); 1083 for (int j = 0; j < num_params; j++) builder.AddParam(params[j]);
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1133 } 1156 }
1134 } 1157 }
1135 } 1158 }
1136 } 1159 }
1137 1160
1138 1161
1139 TEST(MixedParams_0) { MixedParamTest(0); } 1162 TEST(MixedParams_0) { MixedParamTest(0); }
1140 TEST(MixedParams_1) { MixedParamTest(1); } 1163 TEST(MixedParams_1) { MixedParamTest(1); }
1141 TEST(MixedParams_2) { MixedParamTest(2); } 1164 TEST(MixedParams_2) { MixedParamTest(2); }
1142 TEST(MixedParams_3) { MixedParamTest(3); } 1165 TEST(MixedParams_3) { MixedParamTest(3); }
OLDNEW
« no previous file with comments | « test/cctest/compiler/test-multiple-return.cc ('k') | test/cctest/test-code-stubs-mips64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698