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

Side by Side Diff: test/unittests/compiler/common-operator-unittest.cc

Issue 892513003: [turbofan] Initial support for Switch. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix Wuschelstudio build. Created 5 years, 10 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-run-machops.cc ('k') | test/unittests/compiler/scheduler-unittest.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 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 <limits> 5 #include <limits>
6 6
7 #include "src/compiler/common-operator.h" 7 #include "src/compiler/common-operator.h"
8 #include "src/compiler/opcodes.h" 8 #include "src/compiler/opcodes.h"
9 #include "src/compiler/operator.h" 9 #include "src/compiler/operator.h"
10 #include "src/compiler/operator-properties.h" 10 #include "src/compiler/operator-properties.h"
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 CommonOperatorBuilder* common() { return &common_; } 126 CommonOperatorBuilder* common() { return &common_; }
127 127
128 private: 128 private:
129 CommonOperatorBuilder common_; 129 CommonOperatorBuilder common_;
130 }; 130 };
131 131
132 132
133 const int kArguments[] = {1, 5, 6, 42, 100, 10000, 65000}; 133 const int kArguments[] = {1, 5, 6, 42, 100, 10000, 65000};
134 134
135 135
136 const size_t kCases[] = {2, 3, 4, 100, 255};
137
138
136 const float kFloatValues[] = {-std::numeric_limits<float>::infinity(), 139 const float kFloatValues[] = {-std::numeric_limits<float>::infinity(),
137 std::numeric_limits<float>::min(), 140 std::numeric_limits<float>::min(),
138 -1.0f, 141 -1.0f,
139 -0.0f, 142 -0.0f,
140 0.0f, 143 0.0f,
141 1.0f, 144 1.0f,
142 std::numeric_limits<float>::max(), 145 std::numeric_limits<float>::max(),
143 std::numeric_limits<float>::infinity(), 146 std::numeric_limits<float>::infinity(),
144 std::numeric_limits<float>::quiet_NaN(), 147 std::numeric_limits<float>::quiet_NaN(),
145 std::numeric_limits<float>::signaling_NaN()}; 148 std::numeric_limits<float>::signaling_NaN()};
(...skipping 27 matching lines...) Expand all
173 EXPECT_EQ(0, op->EffectInputCount()); 176 EXPECT_EQ(0, op->EffectInputCount());
174 EXPECT_EQ(1, op->ControlInputCount()); 177 EXPECT_EQ(1, op->ControlInputCount());
175 EXPECT_EQ(2, OperatorProperties::GetTotalInputCount(op)); 178 EXPECT_EQ(2, OperatorProperties::GetTotalInputCount(op));
176 EXPECT_EQ(0, op->ValueOutputCount()); 179 EXPECT_EQ(0, op->ValueOutputCount());
177 EXPECT_EQ(0, op->EffectOutputCount()); 180 EXPECT_EQ(0, op->EffectOutputCount());
178 EXPECT_EQ(2, op->ControlOutputCount()); 181 EXPECT_EQ(2, op->ControlOutputCount());
179 } 182 }
180 } 183 }
181 184
182 185
186 TEST_F(CommonOperatorTest, Switch) {
187 TRACED_FOREACH(size_t, cases, kCases) {
188 const Operator* const op = common()->Switch(cases);
189 EXPECT_EQ(IrOpcode::kSwitch, op->opcode());
190 EXPECT_EQ(Operator::kFoldable, op->properties());
191 EXPECT_EQ(1, op->ValueInputCount());
192 EXPECT_EQ(0, op->EffectInputCount());
193 EXPECT_EQ(1, op->ControlInputCount());
194 EXPECT_EQ(2, OperatorProperties::GetTotalInputCount(op));
195 EXPECT_EQ(0, op->ValueOutputCount());
196 EXPECT_EQ(0, op->EffectOutputCount());
197 EXPECT_EQ(static_cast<int>(cases), op->ControlOutputCount());
198 }
199 }
200
201
202 TEST_F(CommonOperatorTest, Case) {
203 TRACED_FORRANGE(size_t, index, 0, 1024) {
204 const Operator* const op = common()->Case(index);
205 EXPECT_EQ(IrOpcode::kCase, op->opcode());
206 EXPECT_EQ(Operator::kFoldable, op->properties());
207 EXPECT_EQ(index, CaseIndexOf(op));
208 EXPECT_EQ(0, op->ValueInputCount());
209 EXPECT_EQ(0, op->EffectInputCount());
210 EXPECT_EQ(1, op->ControlInputCount());
211 EXPECT_EQ(1, OperatorProperties::GetTotalInputCount(op));
212 EXPECT_EQ(0, op->ValueOutputCount());
213 EXPECT_EQ(0, op->EffectOutputCount());
214 EXPECT_EQ(1, op->ControlOutputCount());
215 }
216 }
217
218
183 TEST_F(CommonOperatorTest, Select) { 219 TEST_F(CommonOperatorTest, Select) {
184 static const MachineType kTypes[] = { 220 static const MachineType kTypes[] = {
185 kMachInt8, kMachUint8, kMachInt16, kMachUint16, 221 kMachInt8, kMachUint8, kMachInt16, kMachUint16,
186 kMachInt32, kMachUint32, kMachInt64, kMachUint64, 222 kMachInt32, kMachUint32, kMachInt64, kMachUint64,
187 kMachFloat32, kMachFloat64, kMachAnyTagged}; 223 kMachFloat32, kMachFloat64, kMachAnyTagged};
188 TRACED_FOREACH(MachineType, type, kTypes) { 224 TRACED_FOREACH(MachineType, type, kTypes) {
189 TRACED_FOREACH(BranchHint, hint, kHints) { 225 TRACED_FOREACH(BranchHint, hint, kHints) {
190 const Operator* const op = common()->Select(type, hint); 226 const Operator* const op = common()->Select(type, hint);
191 EXPECT_EQ(IrOpcode::kSelect, op->opcode()); 227 EXPECT_EQ(IrOpcode::kSelect, op->opcode());
192 EXPECT_EQ(Operator::kPure, op->properties()); 228 EXPECT_EQ(Operator::kPure, op->properties());
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 EXPECT_EQ(arguments + 1, OperatorProperties::GetTotalInputCount(op)); 323 EXPECT_EQ(arguments + 1, OperatorProperties::GetTotalInputCount(op));
288 EXPECT_EQ(0, op->ControlOutputCount()); 324 EXPECT_EQ(0, op->ControlOutputCount());
289 EXPECT_EQ(0, op->EffectOutputCount()); 325 EXPECT_EQ(0, op->EffectOutputCount());
290 EXPECT_EQ(1, op->ValueOutputCount()); 326 EXPECT_EQ(1, op->ValueOutputCount());
291 } 327 }
292 } 328 }
293 329
294 } // namespace compiler 330 } // namespace compiler
295 } // namespace internal 331 } // namespace internal
296 } // namespace v8 332 } // namespace v8
OLDNEW
« no previous file with comments | « test/cctest/compiler/test-run-machops.cc ('k') | test/unittests/compiler/scheduler-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698