| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 "test/unittests/compiler/instruction-selector-unittest.h" | 5 #include "test/unittests/compiler/instruction-selector-unittest.h" |
| 6 | 6 |
| 7 namespace v8 { | 7 namespace v8 { |
| 8 namespace internal { | 8 namespace internal { |
| 9 namespace compiler { | 9 namespace compiler { |
| 10 | 10 |
| (...skipping 862 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 873 ASSERT_EQ(1U, s.size()); | 873 ASSERT_EQ(1U, s.size()); |
| 874 EXPECT_EQ(memacc.load_opcode, s[0]->arch_opcode()); | 874 EXPECT_EQ(memacc.load_opcode, s[0]->arch_opcode()); |
| 875 EXPECT_EQ(kMode_MRI, s[0]->addressing_mode()); | 875 EXPECT_EQ(kMode_MRI, s[0]->addressing_mode()); |
| 876 } | 876 } |
| 877 | 877 |
| 878 | 878 |
| 879 TEST_P(InstructionSelectorMemoryAccessTest, StoreWithParameters) { | 879 TEST_P(InstructionSelectorMemoryAccessTest, StoreWithParameters) { |
| 880 const MemoryAccess memacc = GetParam(); | 880 const MemoryAccess memacc = GetParam(); |
| 881 StreamBuilder m(this, MachineType::Int32(), MachineType::Pointer(), | 881 StreamBuilder m(this, MachineType::Int32(), MachineType::Pointer(), |
| 882 MachineType::Int32(), memacc.type); | 882 MachineType::Int32(), memacc.type); |
| 883 m.Store(memacc.type, m.Parameter(0), m.Parameter(1), kNoWriteBarrier); | 883 m.Store(memacc.type.representation(), m.Parameter(0), m.Parameter(1), |
| 884 kNoWriteBarrier); |
| 884 m.Return(m.Int32Constant(0)); | 885 m.Return(m.Int32Constant(0)); |
| 885 Stream s = m.Build(); | 886 Stream s = m.Build(); |
| 886 ASSERT_EQ(1U, s.size()); | 887 ASSERT_EQ(1U, s.size()); |
| 887 EXPECT_EQ(memacc.store_opcode, s[0]->arch_opcode()); | 888 EXPECT_EQ(memacc.store_opcode, s[0]->arch_opcode()); |
| 888 EXPECT_EQ(kMode_MRI, s[0]->addressing_mode()); | 889 EXPECT_EQ(kMode_MRI, s[0]->addressing_mode()); |
| 889 } | 890 } |
| 890 | 891 |
| 891 | 892 |
| 892 INSTANTIATE_TEST_CASE_P(InstructionSelectorTest, | 893 INSTANTIATE_TEST_CASE_P(InstructionSelectorTest, |
| 893 InstructionSelectorMemoryAccessTest, | 894 InstructionSelectorMemoryAccessTest, |
| (...skipping 30 matching lines...) Expand all Loading... |
| 924 // ---------------------------------------------------------------------------- | 925 // ---------------------------------------------------------------------------- |
| 925 // Store immediate. | 926 // Store immediate. |
| 926 // ---------------------------------------------------------------------------- | 927 // ---------------------------------------------------------------------------- |
| 927 | 928 |
| 928 | 929 |
| 929 TEST_P(InstructionSelectorMemoryAccessImmTest, StoreWithImmediateIndex) { | 930 TEST_P(InstructionSelectorMemoryAccessImmTest, StoreWithImmediateIndex) { |
| 930 const MemoryAccessImm memacc = GetParam(); | 931 const MemoryAccessImm memacc = GetParam(); |
| 931 TRACED_FOREACH(int32_t, index, memacc.immediates) { | 932 TRACED_FOREACH(int32_t, index, memacc.immediates) { |
| 932 StreamBuilder m(this, MachineType::Int32(), MachineType::Pointer(), | 933 StreamBuilder m(this, MachineType::Int32(), MachineType::Pointer(), |
| 933 memacc.type); | 934 memacc.type); |
| 934 m.Store(memacc.type, m.Parameter(0), m.Int32Constant(index), m.Parameter(1), | 935 m.Store(memacc.type.representation(), m.Parameter(0), |
| 935 kNoWriteBarrier); | 936 m.Int32Constant(index), m.Parameter(1), kNoWriteBarrier); |
| 936 m.Return(m.Int32Constant(0)); | 937 m.Return(m.Int32Constant(0)); |
| 937 Stream s = m.Build(); | 938 Stream s = m.Build(); |
| 938 ASSERT_EQ(1U, s.size()); | 939 ASSERT_EQ(1U, s.size()); |
| 939 EXPECT_EQ(memacc.store_opcode, s[0]->arch_opcode()); | 940 EXPECT_EQ(memacc.store_opcode, s[0]->arch_opcode()); |
| 940 EXPECT_EQ(kMode_MRI, s[0]->addressing_mode()); | 941 EXPECT_EQ(kMode_MRI, s[0]->addressing_mode()); |
| 941 ASSERT_EQ(3U, s[0]->InputCount()); | 942 ASSERT_EQ(3U, s[0]->InputCount()); |
| 942 ASSERT_EQ(InstructionOperand::IMMEDIATE, s[0]->InputAt(1)->kind()); | 943 ASSERT_EQ(InstructionOperand::IMMEDIATE, s[0]->InputAt(1)->kind()); |
| 943 EXPECT_EQ(index, s.ToInt32(s[0]->InputAt(1))); | 944 EXPECT_EQ(index, s.ToInt32(s[0]->InputAt(1))); |
| 944 EXPECT_EQ(0U, s[0]->OutputCount()); | 945 EXPECT_EQ(0U, s[0]->OutputCount()); |
| 945 } | 946 } |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 977 } | 978 } |
| 978 } | 979 } |
| 979 | 980 |
| 980 | 981 |
| 981 TEST_P(InstructionSelectorMemoryAccessImmMoreThan16bitTest, | 982 TEST_P(InstructionSelectorMemoryAccessImmMoreThan16bitTest, |
| 982 StoreWithImmediateIndex) { | 983 StoreWithImmediateIndex) { |
| 983 const MemoryAccessImm1 memacc = GetParam(); | 984 const MemoryAccessImm1 memacc = GetParam(); |
| 984 TRACED_FOREACH(int32_t, index, memacc.immediates) { | 985 TRACED_FOREACH(int32_t, index, memacc.immediates) { |
| 985 StreamBuilder m(this, MachineType::Int32(), MachineType::Pointer(), | 986 StreamBuilder m(this, MachineType::Int32(), MachineType::Pointer(), |
| 986 memacc.type); | 987 memacc.type); |
| 987 m.Store(memacc.type, m.Parameter(0), m.Int32Constant(index), m.Parameter(1), | 988 m.Store(memacc.type.representation(), m.Parameter(0), |
| 988 kNoWriteBarrier); | 989 m.Int32Constant(index), m.Parameter(1), kNoWriteBarrier); |
| 989 m.Return(m.Int32Constant(0)); | 990 m.Return(m.Int32Constant(0)); |
| 990 Stream s = m.Build(); | 991 Stream s = m.Build(); |
| 991 ASSERT_EQ(2U, s.size()); | 992 ASSERT_EQ(2U, s.size()); |
| 992 // kMipsAdd is expected opcode | 993 // kMipsAdd is expected opcode |
| 993 // size more than 16 bits wide | 994 // size more than 16 bits wide |
| 994 EXPECT_EQ(kMipsAdd, s[0]->arch_opcode()); | 995 EXPECT_EQ(kMipsAdd, s[0]->arch_opcode()); |
| 995 EXPECT_EQ(kMode_None, s[0]->addressing_mode()); | 996 EXPECT_EQ(kMode_None, s[0]->addressing_mode()); |
| 996 EXPECT_EQ(2U, s[0]->InputCount()); | 997 EXPECT_EQ(2U, s[0]->InputCount()); |
| 997 EXPECT_EQ(1U, s[0]->OutputCount()); | 998 EXPECT_EQ(1U, s[0]->OutputCount()); |
| 998 } | 999 } |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1146 EXPECT_EQ(kMipsFloat64Min, s[0]->arch_opcode()); | 1147 EXPECT_EQ(kMipsFloat64Min, s[0]->arch_opcode()); |
| 1147 ASSERT_EQ(2U, s[0]->InputCount()); | 1148 ASSERT_EQ(2U, s[0]->InputCount()); |
| 1148 ASSERT_EQ(1U, s[0]->OutputCount()); | 1149 ASSERT_EQ(1U, s[0]->OutputCount()); |
| 1149 EXPECT_EQ(s.ToVreg(n), s.ToVreg(s[0]->Output())); | 1150 EXPECT_EQ(s.ToVreg(n), s.ToVreg(s[0]->Output())); |
| 1150 } | 1151 } |
| 1151 | 1152 |
| 1152 | 1153 |
| 1153 } // namespace compiler | 1154 } // namespace compiler |
| 1154 } // namespace internal | 1155 } // namespace internal |
| 1155 } // namespace v8 | 1156 } // namespace v8 |
| OLD | NEW |