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 |