| 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/opcodes.h" | 6 #include "src/compiler/opcodes.h" |
| 7 #include "src/compiler/operator.h" | 7 #include "src/compiler/operator.h" |
| 8 #include "src/compiler/operator-properties.h" | 8 #include "src/compiler/operator-properties.h" |
| 9 #include "test/unittests/test-utils.h" | 9 #include "test/unittests/test-utils.h" |
| 10 | 10 |
| 11 namespace v8 { | 11 namespace v8 { |
| 12 namespace internal { | 12 namespace internal { |
| 13 namespace compiler { | 13 namespace compiler { |
| 14 | 14 |
| 15 #if GTEST_HAS_COMBINE | 15 #if GTEST_HAS_COMBINE |
| 16 | 16 |
| 17 template <typename T> | 17 template <typename T> |
| 18 class MachineOperatorTestWithParam | 18 class MachineOperatorTestWithParam |
| 19 : public TestWithZone, | 19 : public TestWithZone, |
| 20 public ::testing::WithParamInterface< ::testing::tuple<MachineType, T> > { | 20 public ::testing::WithParamInterface< |
| 21 ::testing::tuple<MachineRepresentation, T> > { |
| 21 protected: | 22 protected: |
| 22 MachineType type() const { return ::testing::get<0>(B::GetParam()); } | 23 MachineRepresentation representation() const { |
| 24 return ::testing::get<0>(B::GetParam()); |
| 25 } |
| 23 const T& GetParam() const { return ::testing::get<1>(B::GetParam()); } | 26 const T& GetParam() const { return ::testing::get<1>(B::GetParam()); } |
| 24 | 27 |
| 25 private: | 28 private: |
| 26 typedef ::testing::WithParamInterface< ::testing::tuple<MachineType, T> > B; | 29 typedef ::testing::WithParamInterface< |
| 30 ::testing::tuple<MachineRepresentation, T> > B; |
| 27 }; | 31 }; |
| 28 | 32 |
| 29 | 33 |
| 30 namespace { | 34 namespace { |
| 31 | 35 |
| 32 const MachineType kMachineReps[] = {kRepWord32, kRepWord64}; | 36 const MachineRepresentation kMachineReps[] = {MachineRepresentation::kWord32, |
| 37 MachineRepresentation::kWord64}; |
| 33 | 38 |
| 34 | 39 |
| 35 const MachineType kMachineTypesForAccess[] = { | 40 const MachineType kMachineTypesForAccess[] = { |
| 36 kMachFloat32, kMachFloat64, kMachInt8, kMachUint8, kMachInt16, | 41 MachineType::Float32(), MachineType::Float64(), MachineType::Int8(), |
| 37 kMachUint16, kMachInt32, kMachUint32, kMachInt64, kMachUint64, | 42 MachineType::Uint8(), MachineType::Int16(), MachineType::Uint16(), |
| 38 kMachPtr, kMachAnyTagged, kMachPtr}; | 43 MachineType::Int32(), MachineType::Uint32(), MachineType::Int64(), |
| 44 MachineType::Uint64(), MachineType::AnyTagged()}; |
| 39 | 45 |
| 40 } // namespace | 46 } // namespace |
| 41 | 47 |
| 42 | 48 |
| 43 // ----------------------------------------------------------------------------- | 49 // ----------------------------------------------------------------------------- |
| 44 // Load operator. | 50 // Load operator. |
| 45 | 51 |
| 46 | 52 |
| 47 typedef MachineOperatorTestWithParam<LoadRepresentation> | 53 typedef MachineOperatorTestWithParam<LoadRepresentation> |
| 48 MachineLoadOperatorTest; | 54 MachineLoadOperatorTest; |
| 49 | 55 |
| 50 | 56 |
| 51 TEST_P(MachineLoadOperatorTest, InstancesAreGloballyShared) { | 57 TEST_P(MachineLoadOperatorTest, InstancesAreGloballyShared) { |
| 52 MachineOperatorBuilder machine1(zone(), type()); | 58 MachineOperatorBuilder machine1(zone(), representation()); |
| 53 MachineOperatorBuilder machine2(zone(), type()); | 59 MachineOperatorBuilder machine2(zone(), representation()); |
| 54 EXPECT_EQ(machine1.Load(GetParam()), machine2.Load(GetParam())); | 60 EXPECT_EQ(machine1.Load(GetParam()), machine2.Load(GetParam())); |
| 55 } | 61 } |
| 56 | 62 |
| 57 | 63 |
| 58 TEST_P(MachineLoadOperatorTest, NumberOfInputsAndOutputs) { | 64 TEST_P(MachineLoadOperatorTest, NumberOfInputsAndOutputs) { |
| 59 MachineOperatorBuilder machine(zone(), type()); | 65 MachineOperatorBuilder machine(zone(), representation()); |
| 60 const Operator* op = machine.Load(GetParam()); | 66 const Operator* op = machine.Load(GetParam()); |
| 61 | 67 |
| 62 EXPECT_EQ(2, op->ValueInputCount()); | 68 EXPECT_EQ(2, op->ValueInputCount()); |
| 63 EXPECT_EQ(1, op->EffectInputCount()); | 69 EXPECT_EQ(1, op->EffectInputCount()); |
| 64 EXPECT_EQ(1, op->ControlInputCount()); | 70 EXPECT_EQ(1, op->ControlInputCount()); |
| 65 EXPECT_EQ(4, OperatorProperties::GetTotalInputCount(op)); | 71 EXPECT_EQ(4, OperatorProperties::GetTotalInputCount(op)); |
| 66 | 72 |
| 67 EXPECT_EQ(1, op->ValueOutputCount()); | 73 EXPECT_EQ(1, op->ValueOutputCount()); |
| 68 EXPECT_EQ(1, op->EffectOutputCount()); | 74 EXPECT_EQ(1, op->EffectOutputCount()); |
| 69 EXPECT_EQ(0, op->ControlOutputCount()); | 75 EXPECT_EQ(0, op->ControlOutputCount()); |
| 70 } | 76 } |
| 71 | 77 |
| 72 | 78 |
| 73 TEST_P(MachineLoadOperatorTest, OpcodeIsCorrect) { | 79 TEST_P(MachineLoadOperatorTest, OpcodeIsCorrect) { |
| 74 MachineOperatorBuilder machine(zone(), type()); | 80 MachineOperatorBuilder machine(zone(), representation()); |
| 75 EXPECT_EQ(IrOpcode::kLoad, machine.Load(GetParam())->opcode()); | 81 EXPECT_EQ(IrOpcode::kLoad, machine.Load(GetParam())->opcode()); |
| 76 } | 82 } |
| 77 | 83 |
| 78 | 84 |
| 79 TEST_P(MachineLoadOperatorTest, ParameterIsCorrect) { | 85 TEST_P(MachineLoadOperatorTest, ParameterIsCorrect) { |
| 80 MachineOperatorBuilder machine(zone(), type()); | 86 MachineOperatorBuilder machine(zone(), representation()); |
| 81 EXPECT_EQ(GetParam(), | 87 EXPECT_EQ(GetParam(), |
| 82 OpParameter<LoadRepresentation>(machine.Load(GetParam()))); | 88 OpParameter<LoadRepresentation>(machine.Load(GetParam()))); |
| 83 } | 89 } |
| 84 | 90 |
| 85 | 91 |
| 86 INSTANTIATE_TEST_CASE_P( | 92 INSTANTIATE_TEST_CASE_P( |
| 87 MachineOperatorTest, MachineLoadOperatorTest, | 93 MachineOperatorTest, MachineLoadOperatorTest, |
| 88 ::testing::Combine(::testing::ValuesIn(kMachineReps), | 94 ::testing::Combine(::testing::ValuesIn(kMachineReps), |
| 89 ::testing::ValuesIn(kMachineTypesForAccess))); | 95 ::testing::ValuesIn(kMachineTypesForAccess))); |
| 90 | 96 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 101 return StoreRepresentation( | 107 return StoreRepresentation( |
| 102 ::testing::get<0>(MachineOperatorTestWithParam< | 108 ::testing::get<0>(MachineOperatorTestWithParam< |
| 103 ::testing::tuple<MachineType, WriteBarrierKind> >::GetParam()), | 109 ::testing::tuple<MachineType, WriteBarrierKind> >::GetParam()), |
| 104 ::testing::get<1>(MachineOperatorTestWithParam< | 110 ::testing::get<1>(MachineOperatorTestWithParam< |
| 105 ::testing::tuple<MachineType, WriteBarrierKind> >::GetParam())); | 111 ::testing::tuple<MachineType, WriteBarrierKind> >::GetParam())); |
| 106 } | 112 } |
| 107 }; | 113 }; |
| 108 | 114 |
| 109 | 115 |
| 110 TEST_P(MachineStoreOperatorTest, InstancesAreGloballyShared) { | 116 TEST_P(MachineStoreOperatorTest, InstancesAreGloballyShared) { |
| 111 MachineOperatorBuilder machine1(zone(), type()); | 117 MachineOperatorBuilder machine1(zone(), representation()); |
| 112 MachineOperatorBuilder machine2(zone(), type()); | 118 MachineOperatorBuilder machine2(zone(), representation()); |
| 113 EXPECT_EQ(machine1.Store(GetParam()), machine2.Store(GetParam())); | 119 EXPECT_EQ(machine1.Store(GetParam()), machine2.Store(GetParam())); |
| 114 } | 120 } |
| 115 | 121 |
| 116 | 122 |
| 117 TEST_P(MachineStoreOperatorTest, NumberOfInputsAndOutputs) { | 123 TEST_P(MachineStoreOperatorTest, NumberOfInputsAndOutputs) { |
| 118 MachineOperatorBuilder machine(zone(), type()); | 124 MachineOperatorBuilder machine(zone(), representation()); |
| 119 const Operator* op = machine.Store(GetParam()); | 125 const Operator* op = machine.Store(GetParam()); |
| 120 | 126 |
| 121 EXPECT_EQ(3, op->ValueInputCount()); | 127 EXPECT_EQ(3, op->ValueInputCount()); |
| 122 EXPECT_EQ(1, op->EffectInputCount()); | 128 EXPECT_EQ(1, op->EffectInputCount()); |
| 123 EXPECT_EQ(1, op->ControlInputCount()); | 129 EXPECT_EQ(1, op->ControlInputCount()); |
| 124 EXPECT_EQ(5, OperatorProperties::GetTotalInputCount(op)); | 130 EXPECT_EQ(5, OperatorProperties::GetTotalInputCount(op)); |
| 125 | 131 |
| 126 EXPECT_EQ(0, op->ValueOutputCount()); | 132 EXPECT_EQ(0, op->ValueOutputCount()); |
| 127 EXPECT_EQ(1, op->EffectOutputCount()); | 133 EXPECT_EQ(1, op->EffectOutputCount()); |
| 128 EXPECT_EQ(0, op->ControlOutputCount()); | 134 EXPECT_EQ(0, op->ControlOutputCount()); |
| 129 } | 135 } |
| 130 | 136 |
| 131 | 137 |
| 132 TEST_P(MachineStoreOperatorTest, OpcodeIsCorrect) { | 138 TEST_P(MachineStoreOperatorTest, OpcodeIsCorrect) { |
| 133 MachineOperatorBuilder machine(zone(), type()); | 139 MachineOperatorBuilder machine(zone(), representation()); |
| 134 EXPECT_EQ(IrOpcode::kStore, machine.Store(GetParam())->opcode()); | 140 EXPECT_EQ(IrOpcode::kStore, machine.Store(GetParam())->opcode()); |
| 135 } | 141 } |
| 136 | 142 |
| 137 | 143 |
| 138 TEST_P(MachineStoreOperatorTest, ParameterIsCorrect) { | 144 TEST_P(MachineStoreOperatorTest, ParameterIsCorrect) { |
| 139 MachineOperatorBuilder machine(zone(), type()); | 145 MachineOperatorBuilder machine(zone(), representation()); |
| 140 EXPECT_EQ(GetParam(), | 146 EXPECT_EQ(GetParam(), |
| 141 OpParameter<StoreRepresentation>(machine.Store(GetParam()))); | 147 OpParameter<StoreRepresentation>(machine.Store(GetParam()))); |
| 142 } | 148 } |
| 143 | 149 |
| 144 | 150 |
| 145 INSTANTIATE_TEST_CASE_P( | 151 INSTANTIATE_TEST_CASE_P( |
| 146 MachineOperatorTest, MachineStoreOperatorTest, | 152 MachineOperatorTest, MachineStoreOperatorTest, |
| 147 ::testing::Combine( | 153 ::testing::Combine( |
| 148 ::testing::ValuesIn(kMachineReps), | 154 ::testing::ValuesIn(kMachineReps), |
| 149 ::testing::Combine(::testing::ValuesIn(kMachineTypesForAccess), | 155 ::testing::Combine(::testing::ValuesIn(kMachineTypesForAccess), |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 249 PURE(Float64ExtractHighWord32, 1, 0, 1), // -- | 255 PURE(Float64ExtractHighWord32, 1, 0, 1), // -- |
| 250 PURE(Float64InsertLowWord32, 2, 0, 1), // -- | 256 PURE(Float64InsertLowWord32, 2, 0, 1), // -- |
| 251 PURE(Float64InsertHighWord32, 2, 0, 1), // -- | 257 PURE(Float64InsertHighWord32, 2, 0, 1), // -- |
| 252 #undef PURE | 258 #undef PURE |
| 253 }; | 259 }; |
| 254 | 260 |
| 255 } // namespace | 261 } // namespace |
| 256 | 262 |
| 257 class MachinePureOperatorTest : public TestWithZone { | 263 class MachinePureOperatorTest : public TestWithZone { |
| 258 protected: | 264 protected: |
| 259 MachineType word_type() { return kMachPtr; } | 265 MachineRepresentation word_type() { |
| 266 return MachineType::PointerRepresentation(); |
| 267 } |
| 260 }; | 268 }; |
| 261 | 269 |
| 262 | 270 |
| 263 TEST_F(MachinePureOperatorTest, PureOperators) { | 271 TEST_F(MachinePureOperatorTest, PureOperators) { |
| 264 TRACED_FOREACH(MachineType, machine_rep1, kMachineReps) { | 272 TRACED_FOREACH(MachineRepresentation, machine_rep1, kMachineReps) { |
| 265 MachineOperatorBuilder machine1(zone(), machine_rep1); | 273 MachineOperatorBuilder machine1(zone(), machine_rep1); |
| 266 TRACED_FOREACH(MachineType, machine_rep2, kMachineReps) { | 274 TRACED_FOREACH(MachineRepresentation, machine_rep2, kMachineReps) { |
| 267 MachineOperatorBuilder machine2(zone(), machine_rep2); | 275 MachineOperatorBuilder machine2(zone(), machine_rep2); |
| 268 TRACED_FOREACH(PureOperator, pop, kPureOperators) { | 276 TRACED_FOREACH(PureOperator, pop, kPureOperators) { |
| 269 const Operator* op1 = (machine1.*pop.constructor)(); | 277 const Operator* op1 = (machine1.*pop.constructor)(); |
| 270 const Operator* op2 = (machine2.*pop.constructor)(); | 278 const Operator* op2 = (machine2.*pop.constructor)(); |
| 271 EXPECT_EQ(op1, op2); | 279 EXPECT_EQ(op1, op2); |
| 272 EXPECT_EQ(pop.value_input_count, op1->ValueInputCount()); | 280 EXPECT_EQ(pop.value_input_count, op1->ValueInputCount()); |
| 273 EXPECT_EQ(pop.control_input_count, op1->ControlInputCount()); | 281 EXPECT_EQ(pop.control_input_count, op1->ControlInputCount()); |
| 274 EXPECT_EQ(pop.value_output_count, op1->ValueOutputCount()); | 282 EXPECT_EQ(pop.value_output_count, op1->ValueOutputCount()); |
| 275 } | 283 } |
| 276 } | 284 } |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 310 OPTIONAL_ENTRY(Float64RoundDown, 1, 0, 1), // -- | 318 OPTIONAL_ENTRY(Float64RoundDown, 1, 0, 1), // -- |
| 311 OPTIONAL_ENTRY(Float64RoundTruncate, 1, 0, 1), // -- | 319 OPTIONAL_ENTRY(Float64RoundTruncate, 1, 0, 1), // -- |
| 312 OPTIONAL_ENTRY(Float64RoundTiesAway, 1, 0, 1), // -- | 320 OPTIONAL_ENTRY(Float64RoundTiesAway, 1, 0, 1), // -- |
| 313 #undef OPTIONAL_ENTRY | 321 #undef OPTIONAL_ENTRY |
| 314 }; | 322 }; |
| 315 } // namespace | 323 } // namespace |
| 316 | 324 |
| 317 | 325 |
| 318 class MachineOptionalOperatorTest : public TestWithZone { | 326 class MachineOptionalOperatorTest : public TestWithZone { |
| 319 protected: | 327 protected: |
| 320 MachineType word_type() { return kMachPtr; } | 328 MachineRepresentation word_rep() { |
| 329 return MachineType::PointerRepresentation(); |
| 330 } |
| 321 }; | 331 }; |
| 322 | 332 |
| 323 | 333 |
| 324 TEST_F(MachineOptionalOperatorTest, OptionalOperators) { | 334 TEST_F(MachineOptionalOperatorTest, OptionalOperators) { |
| 325 TRACED_FOREACH(OptionalOperatorEntry, pop, kOptionalOperators) { | 335 TRACED_FOREACH(OptionalOperatorEntry, pop, kOptionalOperators) { |
| 326 TRACED_FOREACH(MachineType, machine_rep1, kMachineReps) { | 336 TRACED_FOREACH(MachineRepresentation, machine_rep1, kMachineReps) { |
| 327 MachineOperatorBuilder machine1(zone(), machine_rep1, pop.enabling_flag); | 337 MachineOperatorBuilder machine1(zone(), machine_rep1, pop.enabling_flag); |
| 328 TRACED_FOREACH(MachineType, machine_rep2, kMachineReps) { | 338 TRACED_FOREACH(MachineRepresentation, machine_rep2, kMachineReps) { |
| 329 MachineOperatorBuilder machine2(zone(), machine_rep2, | 339 MachineOperatorBuilder machine2(zone(), machine_rep2, |
| 330 pop.enabling_flag); | 340 pop.enabling_flag); |
| 331 const Operator* op1 = (machine1.*pop.constructor)().op(); | 341 const Operator* op1 = (machine1.*pop.constructor)().op(); |
| 332 const Operator* op2 = (machine2.*pop.constructor)().op(); | 342 const Operator* op2 = (machine2.*pop.constructor)().op(); |
| 333 EXPECT_EQ(op1, op2); | 343 EXPECT_EQ(op1, op2); |
| 334 EXPECT_EQ(pop.value_input_count, op1->ValueInputCount()); | 344 EXPECT_EQ(pop.value_input_count, op1->ValueInputCount()); |
| 335 EXPECT_EQ(pop.control_input_count, op1->ControlInputCount()); | 345 EXPECT_EQ(pop.control_input_count, op1->ControlInputCount()); |
| 336 EXPECT_EQ(pop.value_output_count, op1->ValueOutputCount()); | 346 EXPECT_EQ(pop.value_output_count, op1->ValueOutputCount()); |
| 337 | 347 |
| 338 MachineOperatorBuilder machine3(zone(), word_type()); | 348 MachineOperatorBuilder machine3(zone(), word_rep()); |
| 339 EXPECT_TRUE((machine1.*pop.constructor)().IsSupported()); | 349 EXPECT_TRUE((machine1.*pop.constructor)().IsSupported()); |
| 340 EXPECT_FALSE((machine3.*pop.constructor)().IsSupported()); | 350 EXPECT_FALSE((machine3.*pop.constructor)().IsSupported()); |
| 341 } | 351 } |
| 342 } | 352 } |
| 343 } | 353 } |
| 344 } | 354 } |
| 345 | 355 |
| 346 | 356 |
| 347 // ----------------------------------------------------------------------------- | 357 // ----------------------------------------------------------------------------- |
| 348 // Pseudo operators. | 358 // Pseudo operators. |
| 349 | 359 |
| 350 | 360 |
| 351 namespace { | 361 namespace { |
| 352 | 362 |
| 353 typedef TestWithZone MachineOperatorTest; | 363 typedef TestWithZone MachineOperatorTest; |
| 354 | 364 |
| 355 } // namespace | 365 } // namespace |
| 356 | 366 |
| 357 | 367 |
| 358 TEST_F(MachineOperatorTest, PseudoOperatorsWhenWordSizeIs32Bit) { | 368 TEST_F(MachineOperatorTest, PseudoOperatorsWhenWordSizeIs32Bit) { |
| 359 MachineOperatorBuilder machine(zone(), kRepWord32); | 369 MachineOperatorBuilder machine(zone(), MachineRepresentation::kWord32); |
| 360 EXPECT_EQ(machine.Word32And(), machine.WordAnd()); | 370 EXPECT_EQ(machine.Word32And(), machine.WordAnd()); |
| 361 EXPECT_EQ(machine.Word32Or(), machine.WordOr()); | 371 EXPECT_EQ(machine.Word32Or(), machine.WordOr()); |
| 362 EXPECT_EQ(machine.Word32Xor(), machine.WordXor()); | 372 EXPECT_EQ(machine.Word32Xor(), machine.WordXor()); |
| 363 EXPECT_EQ(machine.Word32Shl(), machine.WordShl()); | 373 EXPECT_EQ(machine.Word32Shl(), machine.WordShl()); |
| 364 EXPECT_EQ(machine.Word32Shr(), machine.WordShr()); | 374 EXPECT_EQ(machine.Word32Shr(), machine.WordShr()); |
| 365 EXPECT_EQ(machine.Word32Sar(), machine.WordSar()); | 375 EXPECT_EQ(machine.Word32Sar(), machine.WordSar()); |
| 366 EXPECT_EQ(machine.Word32Ror(), machine.WordRor()); | 376 EXPECT_EQ(machine.Word32Ror(), machine.WordRor()); |
| 367 EXPECT_EQ(machine.Word32Equal(), machine.WordEqual()); | 377 EXPECT_EQ(machine.Word32Equal(), machine.WordEqual()); |
| 368 EXPECT_EQ(machine.Int32Add(), machine.IntAdd()); | 378 EXPECT_EQ(machine.Int32Add(), machine.IntAdd()); |
| 369 EXPECT_EQ(machine.Int32Sub(), machine.IntSub()); | 379 EXPECT_EQ(machine.Int32Sub(), machine.IntSub()); |
| 370 EXPECT_EQ(machine.Int32Mul(), machine.IntMul()); | 380 EXPECT_EQ(machine.Int32Mul(), machine.IntMul()); |
| 371 EXPECT_EQ(machine.Int32Div(), machine.IntDiv()); | 381 EXPECT_EQ(machine.Int32Div(), machine.IntDiv()); |
| 372 EXPECT_EQ(machine.Uint32Div(), machine.UintDiv()); | 382 EXPECT_EQ(machine.Uint32Div(), machine.UintDiv()); |
| 373 EXPECT_EQ(machine.Int32Mod(), machine.IntMod()); | 383 EXPECT_EQ(machine.Int32Mod(), machine.IntMod()); |
| 374 EXPECT_EQ(machine.Uint32Mod(), machine.UintMod()); | 384 EXPECT_EQ(machine.Uint32Mod(), machine.UintMod()); |
| 375 EXPECT_EQ(machine.Int32LessThan(), machine.IntLessThan()); | 385 EXPECT_EQ(machine.Int32LessThan(), machine.IntLessThan()); |
| 376 EXPECT_EQ(machine.Int32LessThanOrEqual(), machine.IntLessThanOrEqual()); | 386 EXPECT_EQ(machine.Int32LessThanOrEqual(), machine.IntLessThanOrEqual()); |
| 377 } | 387 } |
| 378 | 388 |
| 379 | 389 |
| 380 TEST_F(MachineOperatorTest, PseudoOperatorsWhenWordSizeIs64Bit) { | 390 TEST_F(MachineOperatorTest, PseudoOperatorsWhenWordSizeIs64Bit) { |
| 381 MachineOperatorBuilder machine(zone(), kRepWord64); | 391 MachineOperatorBuilder machine(zone(), MachineRepresentation::kWord64); |
| 382 EXPECT_EQ(machine.Word64And(), machine.WordAnd()); | 392 EXPECT_EQ(machine.Word64And(), machine.WordAnd()); |
| 383 EXPECT_EQ(machine.Word64Or(), machine.WordOr()); | 393 EXPECT_EQ(machine.Word64Or(), machine.WordOr()); |
| 384 EXPECT_EQ(machine.Word64Xor(), machine.WordXor()); | 394 EXPECT_EQ(machine.Word64Xor(), machine.WordXor()); |
| 385 EXPECT_EQ(machine.Word64Shl(), machine.WordShl()); | 395 EXPECT_EQ(machine.Word64Shl(), machine.WordShl()); |
| 386 EXPECT_EQ(machine.Word64Shr(), machine.WordShr()); | 396 EXPECT_EQ(machine.Word64Shr(), machine.WordShr()); |
| 387 EXPECT_EQ(machine.Word64Sar(), machine.WordSar()); | 397 EXPECT_EQ(machine.Word64Sar(), machine.WordSar()); |
| 388 EXPECT_EQ(machine.Word64Ror(), machine.WordRor()); | 398 EXPECT_EQ(machine.Word64Ror(), machine.WordRor()); |
| 389 EXPECT_EQ(machine.Word64Equal(), machine.WordEqual()); | 399 EXPECT_EQ(machine.Word64Equal(), machine.WordEqual()); |
| 390 EXPECT_EQ(machine.Int64Add(), machine.IntAdd()); | 400 EXPECT_EQ(machine.Int64Add(), machine.IntAdd()); |
| 391 EXPECT_EQ(machine.Int64Sub(), machine.IntSub()); | 401 EXPECT_EQ(machine.Int64Sub(), machine.IntSub()); |
| 392 EXPECT_EQ(machine.Int64Mul(), machine.IntMul()); | 402 EXPECT_EQ(machine.Int64Mul(), machine.IntMul()); |
| 393 EXPECT_EQ(machine.Int64Div(), machine.IntDiv()); | 403 EXPECT_EQ(machine.Int64Div(), machine.IntDiv()); |
| 394 EXPECT_EQ(machine.Uint64Div(), machine.UintDiv()); | 404 EXPECT_EQ(machine.Uint64Div(), machine.UintDiv()); |
| 395 EXPECT_EQ(machine.Int64Mod(), machine.IntMod()); | 405 EXPECT_EQ(machine.Int64Mod(), machine.IntMod()); |
| 396 EXPECT_EQ(machine.Uint64Mod(), machine.UintMod()); | 406 EXPECT_EQ(machine.Uint64Mod(), machine.UintMod()); |
| 397 EXPECT_EQ(machine.Int64LessThan(), machine.IntLessThan()); | 407 EXPECT_EQ(machine.Int64LessThan(), machine.IntLessThan()); |
| 398 EXPECT_EQ(machine.Int64LessThanOrEqual(), machine.IntLessThanOrEqual()); | 408 EXPECT_EQ(machine.Int64LessThanOrEqual(), machine.IntLessThanOrEqual()); |
| 399 } | 409 } |
| 400 | 410 |
| 401 } // namespace compiler | 411 } // namespace compiler |
| 402 } // namespace internal | 412 } // namespace internal |
| 403 } // namespace v8 | 413 } // namespace v8 |
| OLD | NEW |