| 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/int64-lowering.h" | 5 #include "src/compiler/int64-lowering.h" |
| 6 #include "src/compiler/common-operator.h" | 6 #include "src/compiler/common-operator.h" |
| 7 #include "src/compiler/graph.h" | 7 #include "src/compiler/graph.h" |
| 8 #include "src/compiler/linkage.h" | 8 #include "src/compiler/linkage.h" |
| 9 #include "src/compiler/machine-operator.h" | 9 #include "src/compiler/machine-operator.h" |
| 10 #include "src/compiler/node-properties.h" | 10 #include "src/compiler/node-properties.h" |
| (...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 437 Node* input = node->InputAt(0); | 437 Node* input = node->InputAt(0); |
| 438 if (HasReplacementLow(input)) { | 438 if (HasReplacementLow(input)) { |
| 439 input = GetReplacementLow(input); | 439 input = GetReplacementLow(input); |
| 440 } | 440 } |
| 441 ReplaceNode(node, input, graph()->NewNode(common()->Int32Constant(0))); | 441 ReplaceNode(node, input, graph()->NewNode(common()->Int32Constant(0))); |
| 442 node->NullAllInputs(); | 442 node->NullAllInputs(); |
| 443 break; | 443 break; |
| 444 } | 444 } |
| 445 // kExprF64ReinterpretI64: | 445 // kExprF64ReinterpretI64: |
| 446 // kExprI64ReinterpretF64: | 446 // kExprI64ReinterpretF64: |
| 447 case IrOpcode::kBitcastFloat64ToInt64: { |
| 448 DCHECK(node->InputCount() == 1); |
| 449 Node* input = node->InputAt(0); |
| 450 Node* stack_slot = graph()->NewNode( |
| 451 machine()->StackSlot(MachineRepresentation::kWord64)); |
| 452 Node* store = graph()->NewNode( |
| 453 machine()->Store( |
| 454 StoreRepresentation(MachineRepresentation::kFloat64, |
| 455 WriteBarrierKind::kNoWriteBarrier)), |
| 456 stack_slot, graph()->NewNode(common()->Int32Constant(0)), input, |
| 457 graph()->start(), graph()->start()); |
| 447 | 458 |
| 459 Node* high_node = |
| 460 graph()->NewNode(machine()->Load(MachineType::Int32()), stack_slot, |
| 461 graph()->NewNode(common()->Int32Constant(4)), store, |
| 462 graph()->start()); |
| 463 |
| 464 Node* low_node = |
| 465 graph()->NewNode(machine()->Load(MachineType::Int32()), stack_slot, |
| 466 graph()->NewNode(common()->Int32Constant(0)), store, |
| 467 graph()->start()); |
| 468 ReplaceNode(node, low_node, high_node); |
| 469 break; |
| 470 } |
| 448 // kExprI64Clz: | 471 // kExprI64Clz: |
| 449 // kExprI64Ctz: | 472 // kExprI64Ctz: |
| 450 case IrOpcode::kWord64Popcnt: { | 473 case IrOpcode::kWord64Popcnt: { |
| 451 DCHECK(node->InputCount() == 1); | 474 DCHECK(node->InputCount() == 1); |
| 452 Node* input = node->InputAt(0); | 475 Node* input = node->InputAt(0); |
| 453 // We assume that a Word64Popcnt node only has been created if | 476 // We assume that a Word64Popcnt node only has been created if |
| 454 // Word32Popcnt is actually supported. | 477 // Word32Popcnt is actually supported. |
| 455 DCHECK(machine()->Word32Popcnt().IsSupported()); | 478 DCHECK(machine()->Word32Popcnt().IsSupported()); |
| 456 ReplaceNode(node, graph()->NewNode( | 479 ReplaceNode(node, graph()->NewNode( |
| 457 machine()->Int32Add(), | 480 machine()->Int32Add(), |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 525 } | 548 } |
| 526 | 549 |
| 527 Node* Int64Lowering::GetReplacementHigh(Node* node) { | 550 Node* Int64Lowering::GetReplacementHigh(Node* node) { |
| 528 Node* result = replacements_[node->id()].high; | 551 Node* result = replacements_[node->id()].high; |
| 529 DCHECK(result); | 552 DCHECK(result); |
| 530 return result; | 553 return result; |
| 531 } | 554 } |
| 532 } // namespace compiler | 555 } // namespace compiler |
| 533 } // namespace internal | 556 } // namespace internal |
| 534 } // namespace v8 | 557 } // namespace v8 |
| OLD | NEW |