| 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 "src/compiler/machine-operator.h" | 5 #include "src/compiler/machine-operator.h" |
| 6 #include "src/compiler/operator-properties-inl.h" | 6 #include "src/compiler/operator-properties-inl.h" |
| 7 #include "testing/gtest-support.h" | 7 #include "testing/gtest-support.h" |
| 8 | 8 |
| 9 namespace v8 { | 9 namespace v8 { |
| 10 namespace internal { | 10 namespace internal { |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 50 MachineOperatorBuilder machine1(type()); | 50 MachineOperatorBuilder machine1(type()); |
| 51 MachineOperatorBuilder machine2(type()); | 51 MachineOperatorBuilder machine2(type()); |
| 52 EXPECT_EQ(machine1.Load(GetParam()), machine2.Load(GetParam())); | 52 EXPECT_EQ(machine1.Load(GetParam()), machine2.Load(GetParam())); |
| 53 } | 53 } |
| 54 | 54 |
| 55 | 55 |
| 56 TEST_P(MachineLoadOperatorTest, NumberOfInputsAndOutputs) { | 56 TEST_P(MachineLoadOperatorTest, NumberOfInputsAndOutputs) { |
| 57 MachineOperatorBuilder machine(type()); | 57 MachineOperatorBuilder machine(type()); |
| 58 const Operator* op = machine.Load(GetParam()); | 58 const Operator* op = machine.Load(GetParam()); |
| 59 | 59 |
| 60 EXPECT_EQ(2, OperatorProperties::GetValueInputCount(op)); | 60 EXPECT_EQ(2, op->ValueInputCount()); |
| 61 EXPECT_EQ(1, OperatorProperties::GetEffectInputCount(op)); | 61 EXPECT_EQ(1, op->EffectInputCount()); |
| 62 EXPECT_EQ(1, OperatorProperties::GetControlInputCount(op)); | 62 EXPECT_EQ(1, op->ControlInputCount()); |
| 63 EXPECT_EQ(4, OperatorProperties::GetTotalInputCount(op)); | 63 EXPECT_EQ(4, OperatorProperties::GetTotalInputCount(op)); |
| 64 | 64 |
| 65 EXPECT_EQ(1, OperatorProperties::GetValueOutputCount(op)); | 65 EXPECT_EQ(1, op->ValueOutputCount()); |
| 66 EXPECT_EQ(1, OperatorProperties::GetEffectOutputCount(op)); | 66 EXPECT_EQ(1, op->EffectOutputCount()); |
| 67 EXPECT_EQ(0, OperatorProperties::GetControlOutputCount(op)); | 67 EXPECT_EQ(0, op->ControlOutputCount()); |
| 68 } | 68 } |
| 69 | 69 |
| 70 | 70 |
| 71 TEST_P(MachineLoadOperatorTest, OpcodeIsCorrect) { | 71 TEST_P(MachineLoadOperatorTest, OpcodeIsCorrect) { |
| 72 MachineOperatorBuilder machine(type()); | 72 MachineOperatorBuilder machine(type()); |
| 73 EXPECT_EQ(IrOpcode::kLoad, machine.Load(GetParam())->opcode()); | 73 EXPECT_EQ(IrOpcode::kLoad, machine.Load(GetParam())->opcode()); |
| 74 } | 74 } |
| 75 | 75 |
| 76 | 76 |
| 77 TEST_P(MachineLoadOperatorTest, ParameterIsCorrect) { | 77 TEST_P(MachineLoadOperatorTest, ParameterIsCorrect) { |
| (...skipping 30 matching lines...) Expand all Loading... |
| 108 MachineOperatorBuilder machine1(type()); | 108 MachineOperatorBuilder machine1(type()); |
| 109 MachineOperatorBuilder machine2(type()); | 109 MachineOperatorBuilder machine2(type()); |
| 110 EXPECT_EQ(machine1.Store(GetParam()), machine2.Store(GetParam())); | 110 EXPECT_EQ(machine1.Store(GetParam()), machine2.Store(GetParam())); |
| 111 } | 111 } |
| 112 | 112 |
| 113 | 113 |
| 114 TEST_P(MachineStoreOperatorTest, NumberOfInputsAndOutputs) { | 114 TEST_P(MachineStoreOperatorTest, NumberOfInputsAndOutputs) { |
| 115 MachineOperatorBuilder machine(type()); | 115 MachineOperatorBuilder machine(type()); |
| 116 const Operator* op = machine.Store(GetParam()); | 116 const Operator* op = machine.Store(GetParam()); |
| 117 | 117 |
| 118 EXPECT_EQ(3, OperatorProperties::GetValueInputCount(op)); | 118 EXPECT_EQ(3, op->ValueInputCount()); |
| 119 EXPECT_EQ(1, OperatorProperties::GetEffectInputCount(op)); | 119 EXPECT_EQ(1, op->EffectInputCount()); |
| 120 EXPECT_EQ(1, OperatorProperties::GetControlInputCount(op)); | 120 EXPECT_EQ(1, op->ControlInputCount()); |
| 121 EXPECT_EQ(5, OperatorProperties::GetTotalInputCount(op)); | 121 EXPECT_EQ(5, OperatorProperties::GetTotalInputCount(op)); |
| 122 | 122 |
| 123 EXPECT_EQ(0, OperatorProperties::GetValueOutputCount(op)); | 123 EXPECT_EQ(0, op->ValueOutputCount()); |
| 124 EXPECT_EQ(1, OperatorProperties::GetEffectOutputCount(op)); | 124 EXPECT_EQ(1, op->EffectOutputCount()); |
| 125 EXPECT_EQ(0, OperatorProperties::GetControlOutputCount(op)); | 125 EXPECT_EQ(0, op->ControlOutputCount()); |
| 126 } | 126 } |
| 127 | 127 |
| 128 | 128 |
| 129 TEST_P(MachineStoreOperatorTest, OpcodeIsCorrect) { | 129 TEST_P(MachineStoreOperatorTest, OpcodeIsCorrect) { |
| 130 MachineOperatorBuilder machine(type()); | 130 MachineOperatorBuilder machine(type()); |
| 131 EXPECT_EQ(IrOpcode::kStore, machine.Store(GetParam())->opcode()); | 131 EXPECT_EQ(IrOpcode::kStore, machine.Store(GetParam())->opcode()); |
| 132 } | 132 } |
| 133 | 133 |
| 134 | 134 |
| 135 TEST_P(MachineStoreOperatorTest, ParameterIsCorrect) { | 135 TEST_P(MachineStoreOperatorTest, ParameterIsCorrect) { |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 MachineOperatorBuilder machine2(type()); | 219 MachineOperatorBuilder machine2(type()); |
| 220 EXPECT_EQ((machine1.*pop.constructor)(), (machine2.*pop.constructor)()); | 220 EXPECT_EQ((machine1.*pop.constructor)(), (machine2.*pop.constructor)()); |
| 221 } | 221 } |
| 222 | 222 |
| 223 | 223 |
| 224 TEST_P(MachinePureOperatorTest, NumberOfInputsAndOutputs) { | 224 TEST_P(MachinePureOperatorTest, NumberOfInputsAndOutputs) { |
| 225 MachineOperatorBuilder machine(type()); | 225 MachineOperatorBuilder machine(type()); |
| 226 const PureOperator& pop = GetParam(); | 226 const PureOperator& pop = GetParam(); |
| 227 const Operator* op = (machine.*pop.constructor)(); | 227 const Operator* op = (machine.*pop.constructor)(); |
| 228 | 228 |
| 229 EXPECT_EQ(pop.value_input_count, OperatorProperties::GetValueInputCount(op)); | 229 EXPECT_EQ(pop.value_input_count, op->ValueInputCount()); |
| 230 EXPECT_EQ(0, OperatorProperties::GetEffectInputCount(op)); | 230 EXPECT_EQ(0, op->EffectInputCount()); |
| 231 EXPECT_EQ(pop.control_input_count, | 231 EXPECT_EQ(pop.control_input_count, op->ControlInputCount()); |
| 232 OperatorProperties::GetControlInputCount(op)); | |
| 233 EXPECT_EQ(pop.value_input_count + pop.control_input_count, | 232 EXPECT_EQ(pop.value_input_count + pop.control_input_count, |
| 234 OperatorProperties::GetTotalInputCount(op)); | 233 OperatorProperties::GetTotalInputCount(op)); |
| 235 | 234 |
| 236 EXPECT_EQ(pop.value_output_count, | 235 EXPECT_EQ(pop.value_output_count, op->ValueOutputCount()); |
| 237 OperatorProperties::GetValueOutputCount(op)); | 236 EXPECT_EQ(0, op->EffectOutputCount()); |
| 238 EXPECT_EQ(0, OperatorProperties::GetEffectOutputCount(op)); | 237 EXPECT_EQ(0, op->ControlOutputCount()); |
| 239 EXPECT_EQ(0, OperatorProperties::GetControlOutputCount(op)); | |
| 240 } | 238 } |
| 241 | 239 |
| 242 | 240 |
| 243 TEST_P(MachinePureOperatorTest, MarkedAsPure) { | 241 TEST_P(MachinePureOperatorTest, MarkedAsPure) { |
| 244 MachineOperatorBuilder machine(type()); | 242 MachineOperatorBuilder machine(type()); |
| 245 const PureOperator& pop = GetParam(); | 243 const PureOperator& pop = GetParam(); |
| 246 const Operator* op = (machine.*pop.constructor)(); | 244 const Operator* op = (machine.*pop.constructor)(); |
| 247 EXPECT_TRUE(op->HasProperty(Operator::kPure)); | 245 EXPECT_TRUE(op->HasProperty(Operator::kPure)); |
| 248 } | 246 } |
| 249 | 247 |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 307 EXPECT_EQ(machine.Uint64Div(), machine.UintDiv()); | 305 EXPECT_EQ(machine.Uint64Div(), machine.UintDiv()); |
| 308 EXPECT_EQ(machine.Int64Mod(), machine.IntMod()); | 306 EXPECT_EQ(machine.Int64Mod(), machine.IntMod()); |
| 309 EXPECT_EQ(machine.Uint64Mod(), machine.UintMod()); | 307 EXPECT_EQ(machine.Uint64Mod(), machine.UintMod()); |
| 310 EXPECT_EQ(machine.Int64LessThan(), machine.IntLessThan()); | 308 EXPECT_EQ(machine.Int64LessThan(), machine.IntLessThan()); |
| 311 EXPECT_EQ(machine.Int64LessThanOrEqual(), machine.IntLessThanOrEqual()); | 309 EXPECT_EQ(machine.Int64LessThanOrEqual(), machine.IntLessThanOrEqual()); |
| 312 } | 310 } |
| 313 | 311 |
| 314 } // namespace compiler | 312 } // namespace compiler |
| 315 } // namespace internal | 313 } // namespace internal |
| 316 } // namespace v8 | 314 } // namespace v8 |
| OLD | NEW |