| 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/instruction-selector.h" | 5 #include "src/compiler/instruction-selector.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 | 8 |
| 9 #include "src/base/adapters.h" | 9 #include "src/base/adapters.h" |
| 10 #include "src/compiler/instruction-selector-impl.h" | 10 #include "src/compiler/instruction-selector-impl.h" |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 | 234 |
| 235 | 235 |
| 236 void InstructionSelector::MarkAsUsed(Node* node) { | 236 void InstructionSelector::MarkAsUsed(Node* node) { |
| 237 DCHECK_NOT_NULL(node); | 237 DCHECK_NOT_NULL(node); |
| 238 size_t const id = node->id(); | 238 size_t const id = node->id(); |
| 239 DCHECK_LT(id, used_.size()); | 239 DCHECK_LT(id, used_.size()); |
| 240 used_[id] = true; | 240 used_[id] = true; |
| 241 } | 241 } |
| 242 | 242 |
| 243 | 243 |
| 244 bool InstructionSelector::IsDouble(const Node* node) const { | |
| 245 DCHECK_NOT_NULL(node); | |
| 246 int const virtual_register = virtual_registers_[node->id()]; | |
| 247 if (virtual_register == InstructionOperand::kInvalidVirtualRegister) { | |
| 248 return false; | |
| 249 } | |
| 250 return sequence()->IsDouble(virtual_register); | |
| 251 } | |
| 252 | |
| 253 | |
| 254 void InstructionSelector::MarkAsDouble(Node* node) { | |
| 255 DCHECK_NOT_NULL(node); | |
| 256 DCHECK(!IsReference(node)); | |
| 257 sequence()->MarkAsDouble(GetVirtualRegister(node)); | |
| 258 } | |
| 259 | |
| 260 | |
| 261 bool InstructionSelector::IsReference(const Node* node) const { | |
| 262 DCHECK_NOT_NULL(node); | |
| 263 int const virtual_register = virtual_registers_[node->id()]; | |
| 264 if (virtual_register == InstructionOperand::kInvalidVirtualRegister) { | |
| 265 return false; | |
| 266 } | |
| 267 return sequence()->IsReference(virtual_register); | |
| 268 } | |
| 269 | |
| 270 | |
| 271 void InstructionSelector::MarkAsReference(Node* node) { | |
| 272 DCHECK_NOT_NULL(node); | |
| 273 DCHECK(!IsDouble(node)); | |
| 274 sequence()->MarkAsReference(GetVirtualRegister(node)); | |
| 275 } | |
| 276 | |
| 277 | |
| 278 void InstructionSelector::MarkAsRepresentation(MachineType rep, | 244 void InstructionSelector::MarkAsRepresentation(MachineType rep, |
| 279 const InstructionOperand& op) { | 245 const InstructionOperand& op) { |
| 280 UnallocatedOperand unalloc = UnallocatedOperand::cast(op); | 246 UnallocatedOperand unalloc = UnallocatedOperand::cast(op); |
| 281 switch (RepresentationOf(rep)) { | 247 rep = RepresentationOf(rep); |
| 282 case kRepFloat32: | 248 sequence()->MarkAsRepresentation(rep, unalloc.virtual_register()); |
| 283 case kRepFloat64: | |
| 284 sequence()->MarkAsDouble(unalloc.virtual_register()); | |
| 285 break; | |
| 286 case kRepTagged: | |
| 287 sequence()->MarkAsReference(unalloc.virtual_register()); | |
| 288 break; | |
| 289 default: | |
| 290 break; | |
| 291 } | |
| 292 } | 249 } |
| 293 | 250 |
| 294 | 251 |
| 295 void InstructionSelector::MarkAsRepresentation(MachineType rep, Node* node) { | 252 void InstructionSelector::MarkAsRepresentation(MachineType rep, Node* node) { |
| 296 DCHECK_NOT_NULL(node); | 253 rep = RepresentationOf(rep); |
| 297 switch (RepresentationOf(rep)) { | 254 sequence()->MarkAsRepresentation(rep, GetVirtualRegister(node)); |
| 298 case kRepFloat32: | |
| 299 case kRepFloat64: | |
| 300 MarkAsDouble(node); | |
| 301 break; | |
| 302 case kRepTagged: | |
| 303 MarkAsReference(node); | |
| 304 break; | |
| 305 default: | |
| 306 break; | |
| 307 } | |
| 308 } | 255 } |
| 309 | 256 |
| 310 | 257 |
| 311 // TODO(bmeurer): Get rid of the CallBuffer business and make | 258 // TODO(bmeurer): Get rid of the CallBuffer business and make |
| 312 // InstructionSelector::VisitCall platform independent instead. | 259 // InstructionSelector::VisitCall platform independent instead. |
| 313 CallBuffer::CallBuffer(Zone* zone, const CallDescriptor* d, | 260 CallBuffer::CallBuffer(Zone* zone, const CallDescriptor* d, |
| 314 FrameStateDescriptor* frame_desc) | 261 FrameStateDescriptor* frame_desc) |
| 315 : descriptor(d), | 262 : descriptor(d), |
| 316 frame_state_descriptor(frame_desc), | 263 frame_state_descriptor(frame_desc), |
| 317 output_nodes(zone), | 264 output_nodes(zone), |
| (...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 618 MarkAsRepresentation(type, node); | 565 MarkAsRepresentation(type, node); |
| 619 return VisitPhi(node); | 566 return VisitPhi(node); |
| 620 } | 567 } |
| 621 case IrOpcode::kProjection: | 568 case IrOpcode::kProjection: |
| 622 return VisitProjection(node); | 569 return VisitProjection(node); |
| 623 case IrOpcode::kInt32Constant: | 570 case IrOpcode::kInt32Constant: |
| 624 case IrOpcode::kInt64Constant: | 571 case IrOpcode::kInt64Constant: |
| 625 case IrOpcode::kExternalConstant: | 572 case IrOpcode::kExternalConstant: |
| 626 return VisitConstant(node); | 573 return VisitConstant(node); |
| 627 case IrOpcode::kFloat32Constant: | 574 case IrOpcode::kFloat32Constant: |
| 628 return MarkAsDouble(node), VisitConstant(node); | 575 return MarkAsFloat32(node), VisitConstant(node); |
| 629 case IrOpcode::kFloat64Constant: | 576 case IrOpcode::kFloat64Constant: |
| 630 return MarkAsDouble(node), VisitConstant(node); | 577 return MarkAsFloat64(node), VisitConstant(node); |
| 631 case IrOpcode::kHeapConstant: | 578 case IrOpcode::kHeapConstant: |
| 632 return MarkAsReference(node), VisitConstant(node); | 579 return MarkAsReference(node), VisitConstant(node); |
| 633 case IrOpcode::kNumberConstant: { | 580 case IrOpcode::kNumberConstant: { |
| 634 double value = OpParameter<double>(node); | 581 double value = OpParameter<double>(node); |
| 635 if (!IsSmiDouble(value)) MarkAsReference(node); | 582 if (!IsSmiDouble(value)) MarkAsReference(node); |
| 636 return VisitConstant(node); | 583 return VisitConstant(node); |
| 637 } | 584 } |
| 638 case IrOpcode::kCall: | 585 case IrOpcode::kCall: |
| 639 return VisitCall(node, nullptr); | 586 return VisitCall(node, nullptr); |
| 640 case IrOpcode::kFrameState: | 587 case IrOpcode::kFrameState: |
| 641 case IrOpcode::kStateValues: | 588 case IrOpcode::kStateValues: |
| 642 return; | 589 return; |
| 643 case IrOpcode::kLoad: { | 590 case IrOpcode::kLoad: { |
| 644 LoadRepresentation rep = OpParameter<LoadRepresentation>(node); | 591 LoadRepresentation rep = OpParameter<LoadRepresentation>(node); |
| 645 MarkAsRepresentation(rep, node); | 592 MarkAsRepresentation(rep, node); |
| 646 return VisitLoad(node); | 593 return VisitLoad(node); |
| 647 } | 594 } |
| 648 case IrOpcode::kStore: | 595 case IrOpcode::kStore: |
| 649 return VisitStore(node); | 596 return VisitStore(node); |
| 650 case IrOpcode::kWord32And: | 597 case IrOpcode::kWord32And: |
| 651 return VisitWord32And(node); | 598 return MarkAsWord32(node), VisitWord32And(node); |
| 652 case IrOpcode::kWord32Or: | 599 case IrOpcode::kWord32Or: |
| 653 return VisitWord32Or(node); | 600 return MarkAsWord32(node), VisitWord32Or(node); |
| 654 case IrOpcode::kWord32Xor: | 601 case IrOpcode::kWord32Xor: |
| 655 return VisitWord32Xor(node); | 602 return MarkAsWord32(node), VisitWord32Xor(node); |
| 656 case IrOpcode::kWord32Shl: | 603 case IrOpcode::kWord32Shl: |
| 657 return VisitWord32Shl(node); | 604 return MarkAsWord32(node), VisitWord32Shl(node); |
| 658 case IrOpcode::kWord32Shr: | 605 case IrOpcode::kWord32Shr: |
| 659 return VisitWord32Shr(node); | 606 return MarkAsWord32(node), VisitWord32Shr(node); |
| 660 case IrOpcode::kWord32Sar: | 607 case IrOpcode::kWord32Sar: |
| 661 return VisitWord32Sar(node); | 608 return MarkAsWord32(node), VisitWord32Sar(node); |
| 662 case IrOpcode::kWord32Ror: | 609 case IrOpcode::kWord32Ror: |
| 663 return VisitWord32Ror(node); | 610 return MarkAsWord32(node), VisitWord32Ror(node); |
| 664 case IrOpcode::kWord32Equal: | 611 case IrOpcode::kWord32Equal: |
| 665 return VisitWord32Equal(node); | 612 return VisitWord32Equal(node); |
| 666 case IrOpcode::kWord32Clz: | 613 case IrOpcode::kWord32Clz: |
| 667 return VisitWord32Clz(node); | 614 return MarkAsWord32(node), VisitWord32Clz(node); |
| 668 case IrOpcode::kWord64And: | 615 case IrOpcode::kWord64And: |
| 669 return VisitWord64And(node); | 616 return MarkAsWord64(node), VisitWord64And(node); |
| 670 case IrOpcode::kWord64Or: | 617 case IrOpcode::kWord64Or: |
| 671 return VisitWord64Or(node); | 618 return MarkAsWord64(node), VisitWord64Or(node); |
| 672 case IrOpcode::kWord64Xor: | 619 case IrOpcode::kWord64Xor: |
| 673 return VisitWord64Xor(node); | 620 return MarkAsWord64(node), VisitWord64Xor(node); |
| 674 case IrOpcode::kWord64Shl: | 621 case IrOpcode::kWord64Shl: |
| 675 return VisitWord64Shl(node); | 622 return MarkAsWord64(node), VisitWord64Shl(node); |
| 676 case IrOpcode::kWord64Shr: | 623 case IrOpcode::kWord64Shr: |
| 677 return VisitWord64Shr(node); | 624 return MarkAsWord64(node), VisitWord64Shr(node); |
| 678 case IrOpcode::kWord64Sar: | 625 case IrOpcode::kWord64Sar: |
| 679 return VisitWord64Sar(node); | 626 return MarkAsWord64(node), VisitWord64Sar(node); |
| 680 case IrOpcode::kWord64Ror: | 627 case IrOpcode::kWord64Ror: |
| 681 return VisitWord64Ror(node); | 628 return MarkAsWord64(node), VisitWord64Ror(node); |
| 682 case IrOpcode::kWord64Equal: | 629 case IrOpcode::kWord64Equal: |
| 683 return VisitWord64Equal(node); | 630 return VisitWord64Equal(node); |
| 684 case IrOpcode::kInt32Add: | 631 case IrOpcode::kInt32Add: |
| 685 return VisitInt32Add(node); | 632 return MarkAsWord32(node), VisitInt32Add(node); |
| 686 case IrOpcode::kInt32AddWithOverflow: | 633 case IrOpcode::kInt32AddWithOverflow: |
| 687 return VisitInt32AddWithOverflow(node); | 634 return MarkAsWord32(node), VisitInt32AddWithOverflow(node); |
| 688 case IrOpcode::kInt32Sub: | 635 case IrOpcode::kInt32Sub: |
| 689 return VisitInt32Sub(node); | 636 return MarkAsWord32(node), VisitInt32Sub(node); |
| 690 case IrOpcode::kInt32SubWithOverflow: | 637 case IrOpcode::kInt32SubWithOverflow: |
| 691 return VisitInt32SubWithOverflow(node); | 638 return VisitInt32SubWithOverflow(node); |
| 692 case IrOpcode::kInt32Mul: | 639 case IrOpcode::kInt32Mul: |
| 693 return VisitInt32Mul(node); | 640 return MarkAsWord32(node), VisitInt32Mul(node); |
| 694 case IrOpcode::kInt32MulHigh: | 641 case IrOpcode::kInt32MulHigh: |
| 695 return VisitInt32MulHigh(node); | 642 return VisitInt32MulHigh(node); |
| 696 case IrOpcode::kInt32Div: | 643 case IrOpcode::kInt32Div: |
| 697 return VisitInt32Div(node); | 644 return MarkAsWord32(node), VisitInt32Div(node); |
| 698 case IrOpcode::kInt32Mod: | 645 case IrOpcode::kInt32Mod: |
| 699 return VisitInt32Mod(node); | 646 return MarkAsWord32(node), VisitInt32Mod(node); |
| 700 case IrOpcode::kInt32LessThan: | 647 case IrOpcode::kInt32LessThan: |
| 701 return VisitInt32LessThan(node); | 648 return VisitInt32LessThan(node); |
| 702 case IrOpcode::kInt32LessThanOrEqual: | 649 case IrOpcode::kInt32LessThanOrEqual: |
| 703 return VisitInt32LessThanOrEqual(node); | 650 return VisitInt32LessThanOrEqual(node); |
| 704 case IrOpcode::kUint32Div: | 651 case IrOpcode::kUint32Div: |
| 705 return VisitUint32Div(node); | 652 return MarkAsWord32(node), VisitUint32Div(node); |
| 706 case IrOpcode::kUint32LessThan: | 653 case IrOpcode::kUint32LessThan: |
| 707 return VisitUint32LessThan(node); | 654 return VisitUint32LessThan(node); |
| 708 case IrOpcode::kUint32LessThanOrEqual: | 655 case IrOpcode::kUint32LessThanOrEqual: |
| 709 return VisitUint32LessThanOrEqual(node); | 656 return VisitUint32LessThanOrEqual(node); |
| 710 case IrOpcode::kUint32Mod: | 657 case IrOpcode::kUint32Mod: |
| 711 return VisitUint32Mod(node); | 658 return MarkAsWord32(node), VisitUint32Mod(node); |
| 712 case IrOpcode::kUint32MulHigh: | 659 case IrOpcode::kUint32MulHigh: |
| 713 return VisitUint32MulHigh(node); | 660 return VisitUint32MulHigh(node); |
| 714 case IrOpcode::kInt64Add: | 661 case IrOpcode::kInt64Add: |
| 715 return VisitInt64Add(node); | 662 return MarkAsWord64(node), VisitInt64Add(node); |
| 716 case IrOpcode::kInt64Sub: | 663 case IrOpcode::kInt64Sub: |
| 717 return VisitInt64Sub(node); | 664 return MarkAsWord64(node), VisitInt64Sub(node); |
| 718 case IrOpcode::kInt64Mul: | 665 case IrOpcode::kInt64Mul: |
| 719 return VisitInt64Mul(node); | 666 return MarkAsWord64(node), VisitInt64Mul(node); |
| 720 case IrOpcode::kInt64Div: | 667 case IrOpcode::kInt64Div: |
| 721 return VisitInt64Div(node); | 668 return MarkAsWord64(node), VisitInt64Div(node); |
| 722 case IrOpcode::kInt64Mod: | 669 case IrOpcode::kInt64Mod: |
| 723 return VisitInt64Mod(node); | 670 return MarkAsWord64(node), VisitInt64Mod(node); |
| 724 case IrOpcode::kInt64LessThan: | 671 case IrOpcode::kInt64LessThan: |
| 725 return VisitInt64LessThan(node); | 672 return VisitInt64LessThan(node); |
| 726 case IrOpcode::kInt64LessThanOrEqual: | 673 case IrOpcode::kInt64LessThanOrEqual: |
| 727 return VisitInt64LessThanOrEqual(node); | 674 return VisitInt64LessThanOrEqual(node); |
| 728 case IrOpcode::kUint64Div: | 675 case IrOpcode::kUint64Div: |
| 729 return VisitUint64Div(node); | 676 return MarkAsWord64(node), VisitUint64Div(node); |
| 730 case IrOpcode::kUint64LessThan: | 677 case IrOpcode::kUint64LessThan: |
| 731 return VisitUint64LessThan(node); | 678 return VisitUint64LessThan(node); |
| 732 case IrOpcode::kUint64Mod: | 679 case IrOpcode::kUint64Mod: |
| 733 return VisitUint64Mod(node); | 680 return MarkAsWord64(node), VisitUint64Mod(node); |
| 734 case IrOpcode::kChangeFloat32ToFloat64: | 681 case IrOpcode::kChangeFloat32ToFloat64: |
| 735 return MarkAsDouble(node), VisitChangeFloat32ToFloat64(node); | 682 return MarkAsFloat64(node), VisitChangeFloat32ToFloat64(node); |
| 736 case IrOpcode::kChangeInt32ToFloat64: | 683 case IrOpcode::kChangeInt32ToFloat64: |
| 737 return MarkAsDouble(node), VisitChangeInt32ToFloat64(node); | 684 return MarkAsFloat64(node), VisitChangeInt32ToFloat64(node); |
| 738 case IrOpcode::kChangeUint32ToFloat64: | 685 case IrOpcode::kChangeUint32ToFloat64: |
| 739 return MarkAsDouble(node), VisitChangeUint32ToFloat64(node); | 686 return MarkAsFloat64(node), VisitChangeUint32ToFloat64(node); |
| 740 case IrOpcode::kChangeFloat64ToInt32: | 687 case IrOpcode::kChangeFloat64ToInt32: |
| 741 return VisitChangeFloat64ToInt32(node); | 688 return MarkAsWord32(node), VisitChangeFloat64ToInt32(node); |
| 742 case IrOpcode::kChangeFloat64ToUint32: | 689 case IrOpcode::kChangeFloat64ToUint32: |
| 743 return VisitChangeFloat64ToUint32(node); | 690 return MarkAsWord32(node), VisitChangeFloat64ToUint32(node); |
| 744 case IrOpcode::kChangeInt32ToInt64: | 691 case IrOpcode::kChangeInt32ToInt64: |
| 745 return VisitChangeInt32ToInt64(node); | 692 return MarkAsWord64(node), VisitChangeInt32ToInt64(node); |
| 746 case IrOpcode::kChangeUint32ToUint64: | 693 case IrOpcode::kChangeUint32ToUint64: |
| 747 return VisitChangeUint32ToUint64(node); | 694 return MarkAsWord64(node), VisitChangeUint32ToUint64(node); |
| 748 case IrOpcode::kTruncateFloat64ToFloat32: | 695 case IrOpcode::kTruncateFloat64ToFloat32: |
| 749 return MarkAsDouble(node), VisitTruncateFloat64ToFloat32(node); | 696 return MarkAsFloat32(node), VisitTruncateFloat64ToFloat32(node); |
| 750 case IrOpcode::kTruncateFloat64ToInt32: | 697 case IrOpcode::kTruncateFloat64ToInt32: |
| 751 return VisitTruncateFloat64ToInt32(node); | 698 return MarkAsWord32(node), VisitTruncateFloat64ToInt32(node); |
| 752 case IrOpcode::kTruncateInt64ToInt32: | 699 case IrOpcode::kTruncateInt64ToInt32: |
| 753 return VisitTruncateInt64ToInt32(node); | 700 return MarkAsWord32(node), VisitTruncateInt64ToInt32(node); |
| 754 case IrOpcode::kFloat32Add: | 701 case IrOpcode::kFloat32Add: |
| 755 return MarkAsDouble(node), VisitFloat32Add(node); | 702 return MarkAsFloat32(node), VisitFloat32Add(node); |
| 756 case IrOpcode::kFloat32Sub: | 703 case IrOpcode::kFloat32Sub: |
| 757 return MarkAsDouble(node), VisitFloat32Sub(node); | 704 return MarkAsFloat32(node), VisitFloat32Sub(node); |
| 758 case IrOpcode::kFloat32Mul: | 705 case IrOpcode::kFloat32Mul: |
| 759 return MarkAsDouble(node), VisitFloat32Mul(node); | 706 return MarkAsFloat32(node), VisitFloat32Mul(node); |
| 760 case IrOpcode::kFloat32Div: | 707 case IrOpcode::kFloat32Div: |
| 761 return MarkAsDouble(node), VisitFloat32Div(node); | 708 return MarkAsFloat32(node), VisitFloat32Div(node); |
| 762 case IrOpcode::kFloat32Min: | 709 case IrOpcode::kFloat32Min: |
| 763 return MarkAsDouble(node), VisitFloat32Min(node); | 710 return MarkAsFloat32(node), VisitFloat32Min(node); |
| 764 case IrOpcode::kFloat32Max: | 711 case IrOpcode::kFloat32Max: |
| 765 return MarkAsDouble(node), VisitFloat32Max(node); | 712 return MarkAsFloat32(node), VisitFloat32Max(node); |
| 766 case IrOpcode::kFloat32Abs: | 713 case IrOpcode::kFloat32Abs: |
| 767 return MarkAsDouble(node), VisitFloat32Abs(node); | 714 return MarkAsFloat32(node), VisitFloat32Abs(node); |
| 768 case IrOpcode::kFloat32Sqrt: | 715 case IrOpcode::kFloat32Sqrt: |
| 769 return MarkAsDouble(node), VisitFloat32Sqrt(node); | 716 return MarkAsFloat32(node), VisitFloat32Sqrt(node); |
| 770 case IrOpcode::kFloat32Equal: | 717 case IrOpcode::kFloat32Equal: |
| 771 return VisitFloat32Equal(node); | 718 return VisitFloat32Equal(node); |
| 772 case IrOpcode::kFloat32LessThan: | 719 case IrOpcode::kFloat32LessThan: |
| 773 return VisitFloat32LessThan(node); | 720 return VisitFloat32LessThan(node); |
| 774 case IrOpcode::kFloat32LessThanOrEqual: | 721 case IrOpcode::kFloat32LessThanOrEqual: |
| 775 return VisitFloat32LessThanOrEqual(node); | 722 return VisitFloat32LessThanOrEqual(node); |
| 776 case IrOpcode::kFloat64Add: | 723 case IrOpcode::kFloat64Add: |
| 777 return MarkAsDouble(node), VisitFloat64Add(node); | 724 return MarkAsFloat64(node), VisitFloat64Add(node); |
| 778 case IrOpcode::kFloat64Sub: | 725 case IrOpcode::kFloat64Sub: |
| 779 return MarkAsDouble(node), VisitFloat64Sub(node); | 726 return MarkAsFloat64(node), VisitFloat64Sub(node); |
| 780 case IrOpcode::kFloat64Mul: | 727 case IrOpcode::kFloat64Mul: |
| 781 return MarkAsDouble(node), VisitFloat64Mul(node); | 728 return MarkAsFloat64(node), VisitFloat64Mul(node); |
| 782 case IrOpcode::kFloat64Div: | 729 case IrOpcode::kFloat64Div: |
| 783 return MarkAsDouble(node), VisitFloat64Div(node); | 730 return MarkAsFloat64(node), VisitFloat64Div(node); |
| 784 case IrOpcode::kFloat64Mod: | 731 case IrOpcode::kFloat64Mod: |
| 785 return MarkAsDouble(node), VisitFloat64Mod(node); | 732 return MarkAsFloat64(node), VisitFloat64Mod(node); |
| 786 case IrOpcode::kFloat64Min: | 733 case IrOpcode::kFloat64Min: |
| 787 return MarkAsDouble(node), VisitFloat64Min(node); | 734 return MarkAsFloat64(node), VisitFloat64Min(node); |
| 788 case IrOpcode::kFloat64Max: | 735 case IrOpcode::kFloat64Max: |
| 789 return MarkAsDouble(node), VisitFloat64Max(node); | 736 return MarkAsFloat64(node), VisitFloat64Max(node); |
| 790 case IrOpcode::kFloat64Abs: | 737 case IrOpcode::kFloat64Abs: |
| 791 return MarkAsDouble(node), VisitFloat64Abs(node); | 738 return MarkAsFloat64(node), VisitFloat64Abs(node); |
| 792 case IrOpcode::kFloat64Sqrt: | 739 case IrOpcode::kFloat64Sqrt: |
| 793 return MarkAsDouble(node), VisitFloat64Sqrt(node); | 740 return MarkAsFloat64(node), VisitFloat64Sqrt(node); |
| 794 case IrOpcode::kFloat64Equal: | 741 case IrOpcode::kFloat64Equal: |
| 795 return VisitFloat64Equal(node); | 742 return VisitFloat64Equal(node); |
| 796 case IrOpcode::kFloat64LessThan: | 743 case IrOpcode::kFloat64LessThan: |
| 797 return VisitFloat64LessThan(node); | 744 return VisitFloat64LessThan(node); |
| 798 case IrOpcode::kFloat64LessThanOrEqual: | 745 case IrOpcode::kFloat64LessThanOrEqual: |
| 799 return VisitFloat64LessThanOrEqual(node); | 746 return VisitFloat64LessThanOrEqual(node); |
| 800 case IrOpcode::kFloat64RoundDown: | 747 case IrOpcode::kFloat64RoundDown: |
| 801 return MarkAsDouble(node), VisitFloat64RoundDown(node); | 748 return MarkAsFloat64(node), VisitFloat64RoundDown(node); |
| 802 case IrOpcode::kFloat64RoundTruncate: | 749 case IrOpcode::kFloat64RoundTruncate: |
| 803 return MarkAsDouble(node), VisitFloat64RoundTruncate(node); | 750 return MarkAsFloat64(node), VisitFloat64RoundTruncate(node); |
| 804 case IrOpcode::kFloat64RoundTiesAway: | 751 case IrOpcode::kFloat64RoundTiesAway: |
| 805 return MarkAsDouble(node), VisitFloat64RoundTiesAway(node); | 752 return MarkAsFloat64(node), VisitFloat64RoundTiesAway(node); |
| 806 case IrOpcode::kFloat64ExtractLowWord32: | 753 case IrOpcode::kFloat64ExtractLowWord32: |
| 807 return VisitFloat64ExtractLowWord32(node); | 754 return MarkAsWord32(node), VisitFloat64ExtractLowWord32(node); |
| 808 case IrOpcode::kFloat64ExtractHighWord32: | 755 case IrOpcode::kFloat64ExtractHighWord32: |
| 809 return VisitFloat64ExtractHighWord32(node); | 756 return MarkAsWord32(node), VisitFloat64ExtractHighWord32(node); |
| 810 case IrOpcode::kFloat64InsertLowWord32: | 757 case IrOpcode::kFloat64InsertLowWord32: |
| 811 return MarkAsDouble(node), VisitFloat64InsertLowWord32(node); | 758 return MarkAsFloat64(node), VisitFloat64InsertLowWord32(node); |
| 812 case IrOpcode::kFloat64InsertHighWord32: | 759 case IrOpcode::kFloat64InsertHighWord32: |
| 813 return MarkAsDouble(node), VisitFloat64InsertHighWord32(node); | 760 return MarkAsFloat64(node), VisitFloat64InsertHighWord32(node); |
| 814 case IrOpcode::kLoadStackPointer: | 761 case IrOpcode::kLoadStackPointer: |
| 815 return VisitLoadStackPointer(node); | 762 return VisitLoadStackPointer(node); |
| 816 case IrOpcode::kCheckedLoad: { | 763 case IrOpcode::kCheckedLoad: { |
| 817 MachineType rep = OpParameter<MachineType>(node); | 764 MachineType rep = OpParameter<MachineType>(node); |
| 818 MarkAsRepresentation(rep, node); | 765 MarkAsRepresentation(rep, node); |
| 819 return VisitCheckedLoad(node); | 766 return VisitCheckedLoad(node); |
| 820 } | 767 } |
| 821 case IrOpcode::kCheckedStore: | 768 case IrOpcode::kCheckedStore: |
| 822 return VisitCheckedStore(node); | 769 return VisitCheckedStore(node); |
| 823 default: | 770 default: |
| (...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1192 MachineOperatorBuilder::Flags | 1139 MachineOperatorBuilder::Flags |
| 1193 InstructionSelector::SupportedMachineOperatorFlags() { | 1140 InstructionSelector::SupportedMachineOperatorFlags() { |
| 1194 return MachineOperatorBuilder::Flag::kNoFlags; | 1141 return MachineOperatorBuilder::Flag::kNoFlags; |
| 1195 } | 1142 } |
| 1196 | 1143 |
| 1197 #endif // !V8_TURBOFAN_BACKEND | 1144 #endif // !V8_TURBOFAN_BACKEND |
| 1198 | 1145 |
| 1199 } // namespace compiler | 1146 } // namespace compiler |
| 1200 } // namespace internal | 1147 } // namespace internal |
| 1201 } // namespace v8 | 1148 } // namespace v8 |
| OLD | NEW |