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

Side by Side Diff: test/unittests/compiler/instruction-selector-unittest.cc

Issue 854703002: Reland "[turbofan] simplify gap ordering" (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 11 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
OLDNEW
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 #include "src/compiler/graph-inl.h" 7 #include "src/compiler/graph-inl.h"
8 #include "src/flags.h" 8 #include "src/flags.h"
9 #include "test/unittests/compiler/compiler-test-utils.h" 9 #include "test/unittests/compiler/compiler-test-utils.h"
10 10
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 142
143 // ----------------------------------------------------------------------------- 143 // -----------------------------------------------------------------------------
144 // Return. 144 // Return.
145 145
146 146
147 TARGET_TEST_F(InstructionSelectorTest, ReturnFloat32Constant) { 147 TARGET_TEST_F(InstructionSelectorTest, ReturnFloat32Constant) {
148 const float kValue = 4.2f; 148 const float kValue = 4.2f;
149 StreamBuilder m(this, kMachFloat32); 149 StreamBuilder m(this, kMachFloat32);
150 m.Return(m.Float32Constant(kValue)); 150 m.Return(m.Float32Constant(kValue));
151 Stream s = m.Build(kAllInstructions); 151 Stream s = m.Build(kAllInstructions);
152 ASSERT_EQ(2U, s.size()); 152 ASSERT_EQ(3U, s.size());
153 EXPECT_EQ(kArchNop, s[0]->arch_opcode()); 153 EXPECT_EQ(kArchNop, s[0]->arch_opcode());
154 ASSERT_EQ(InstructionOperand::CONSTANT, s[0]->OutputAt(0)->kind()); 154 ASSERT_EQ(InstructionOperand::CONSTANT, s[0]->OutputAt(0)->kind());
155 EXPECT_FLOAT_EQ(kValue, s.ToFloat32(s[0]->OutputAt(0))); 155 EXPECT_FLOAT_EQ(kValue, s.ToFloat32(s[0]->OutputAt(0)));
156 EXPECT_EQ(kArchRet, s[1]->arch_opcode()); 156 EXPECT_EQ(kArchRet, s[1]->arch_opcode());
157 EXPECT_EQ(1U, s[1]->InputCount()); 157 EXPECT_EQ(1U, s[1]->InputCount());
158 } 158 }
159 159
160 160
161 TARGET_TEST_F(InstructionSelectorTest, ReturnParameter) { 161 TARGET_TEST_F(InstructionSelectorTest, ReturnParameter) {
162 StreamBuilder m(this, kMachInt32, kMachInt32); 162 StreamBuilder m(this, kMachInt32, kMachInt32);
163 m.Return(m.Parameter(0)); 163 m.Return(m.Parameter(0));
164 Stream s = m.Build(kAllInstructions); 164 Stream s = m.Build(kAllInstructions);
165 ASSERT_EQ(2U, s.size()); 165 ASSERT_EQ(3U, s.size());
166 EXPECT_EQ(kArchNop, s[0]->arch_opcode()); 166 EXPECT_EQ(kArchNop, s[0]->arch_opcode());
167 ASSERT_EQ(1U, s[0]->OutputCount()); 167 ASSERT_EQ(1U, s[0]->OutputCount());
168 EXPECT_EQ(kArchRet, s[1]->arch_opcode()); 168 EXPECT_EQ(kArchRet, s[1]->arch_opcode());
169 EXPECT_EQ(1U, s[1]->InputCount()); 169 EXPECT_EQ(1U, s[1]->InputCount());
170 } 170 }
171 171
172 172
173 TARGET_TEST_F(InstructionSelectorTest, ReturnZero) { 173 TARGET_TEST_F(InstructionSelectorTest, ReturnZero) {
174 StreamBuilder m(this, kMachInt32); 174 StreamBuilder m(this, kMachInt32);
175 m.Return(m.Int32Constant(0)); 175 m.Return(m.Int32Constant(0));
176 Stream s = m.Build(kAllInstructions); 176 Stream s = m.Build(kAllInstructions);
177 ASSERT_EQ(2U, s.size()); 177 ASSERT_EQ(3U, s.size());
178 EXPECT_EQ(kArchNop, s[0]->arch_opcode()); 178 EXPECT_EQ(kArchNop, s[0]->arch_opcode());
179 ASSERT_EQ(1U, s[0]->OutputCount()); 179 ASSERT_EQ(1U, s[0]->OutputCount());
180 EXPECT_EQ(InstructionOperand::CONSTANT, s[0]->OutputAt(0)->kind()); 180 EXPECT_EQ(InstructionOperand::CONSTANT, s[0]->OutputAt(0)->kind());
181 EXPECT_EQ(0, s.ToInt32(s[0]->OutputAt(0))); 181 EXPECT_EQ(0, s.ToInt32(s[0]->OutputAt(0)));
182 EXPECT_EQ(kArchRet, s[1]->arch_opcode()); 182 EXPECT_EQ(kArchRet, s[1]->arch_opcode());
183 EXPECT_EQ(1U, s[1]->InputCount()); 183 EXPECT_EQ(1U, s[1]->InputCount());
184 } 184 }
185 185
186 186
187 // ----------------------------------------------------------------------------- 187 // -----------------------------------------------------------------------------
188 // Conversions. 188 // Conversions.
189 189
190 190
191 TARGET_TEST_F(InstructionSelectorTest, TruncateFloat64ToInt32WithParameter) { 191 TARGET_TEST_F(InstructionSelectorTest, TruncateFloat64ToInt32WithParameter) {
192 StreamBuilder m(this, kMachInt32, kMachFloat64); 192 StreamBuilder m(this, kMachInt32, kMachFloat64);
193 m.Return(m.TruncateFloat64ToInt32(m.Parameter(0))); 193 m.Return(m.TruncateFloat64ToInt32(m.Parameter(0)));
194 Stream s = m.Build(kAllInstructions); 194 Stream s = m.Build(kAllInstructions);
195 ASSERT_EQ(3U, s.size()); 195 ASSERT_EQ(4U, s.size());
196 EXPECT_EQ(kArchNop, s[0]->arch_opcode()); 196 EXPECT_EQ(kArchNop, s[0]->arch_opcode());
197 EXPECT_EQ(kArchTruncateDoubleToI, s[1]->arch_opcode()); 197 EXPECT_EQ(kArchTruncateDoubleToI, s[1]->arch_opcode());
198 EXPECT_EQ(1U, s[1]->InputCount()); 198 EXPECT_EQ(1U, s[1]->InputCount());
199 EXPECT_EQ(1U, s[1]->OutputCount()); 199 EXPECT_EQ(1U, s[1]->OutputCount());
200 EXPECT_EQ(kArchRet, s[2]->arch_opcode()); 200 EXPECT_EQ(kArchRet, s[2]->arch_opcode());
201 } 201 }
202 202
203 203
204 // ----------------------------------------------------------------------------- 204 // -----------------------------------------------------------------------------
205 // Parameters. 205 // Parameters.
(...skipping 20 matching lines...) Expand all
226 // ----------------------------------------------------------------------------- 226 // -----------------------------------------------------------------------------
227 // Finish. 227 // Finish.
228 228
229 229
230 TARGET_TEST_F(InstructionSelectorTest, Finish) { 230 TARGET_TEST_F(InstructionSelectorTest, Finish) {
231 StreamBuilder m(this, kMachAnyTagged, kMachAnyTagged); 231 StreamBuilder m(this, kMachAnyTagged, kMachAnyTagged);
232 Node* param = m.Parameter(0); 232 Node* param = m.Parameter(0);
233 Node* finish = m.NewNode(m.common()->Finish(1), param, m.graph()->start()); 233 Node* finish = m.NewNode(m.common()->Finish(1), param, m.graph()->start());
234 m.Return(finish); 234 m.Return(finish);
235 Stream s = m.Build(kAllInstructions); 235 Stream s = m.Build(kAllInstructions);
236 ASSERT_EQ(3U, s.size()); 236 ASSERT_EQ(4U, s.size());
237 EXPECT_EQ(kArchNop, s[0]->arch_opcode()); 237 EXPECT_EQ(kArchNop, s[0]->arch_opcode());
238 ASSERT_EQ(1U, s[0]->OutputCount()); 238 ASSERT_EQ(1U, s[0]->OutputCount());
239 ASSERT_TRUE(s[0]->Output()->IsUnallocated()); 239 ASSERT_TRUE(s[0]->Output()->IsUnallocated());
240 EXPECT_EQ(s.ToVreg(param), s.ToVreg(s[0]->Output())); 240 EXPECT_EQ(s.ToVreg(param), s.ToVreg(s[0]->Output()));
241 EXPECT_EQ(kArchNop, s[1]->arch_opcode()); 241 EXPECT_EQ(kArchNop, s[1]->arch_opcode());
242 ASSERT_EQ(1U, s[1]->InputCount()); 242 ASSERT_EQ(1U, s[1]->InputCount());
243 ASSERT_TRUE(s[1]->InputAt(0)->IsUnallocated()); 243 ASSERT_TRUE(s[1]->InputAt(0)->IsUnallocated());
244 EXPECT_EQ(s.ToVreg(param), s.ToVreg(s[1]->InputAt(0))); 244 EXPECT_EQ(s.ToVreg(param), s.ToVreg(s[1]->InputAt(0)));
245 ASSERT_EQ(1U, s[1]->OutputCount()); 245 ASSERT_EQ(1U, s[1]->OutputCount());
246 ASSERT_TRUE(s[1]->Output()->IsUnallocated()); 246 ASSERT_TRUE(s[1]->Output()->IsUnallocated());
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 EXPECT_EQ(s.ToVreg(context2), s.ToVreg(call_instr->InputAt(12))); 562 EXPECT_EQ(s.ToVreg(context2), s.ToVreg(call_instr->InputAt(12)));
563 // Continuation. 563 // Continuation.
564 564
565 EXPECT_EQ(kArchRet, s[index++]->arch_opcode()); 565 EXPECT_EQ(kArchRet, s[index++]->arch_opcode());
566 EXPECT_EQ(index, s.size()); 566 EXPECT_EQ(index, s.size());
567 } 567 }
568 568
569 } // namespace compiler 569 } // namespace compiler
570 } // namespace internal 570 } // namespace internal
571 } // namespace v8 571 } // namespace v8
OLDNEW
« no previous file with comments | « test/cctest/compiler/test-jump-threading.cc ('k') | test/unittests/compiler/move-optimizer-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698