Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(971)

Side by Side Diff: src/compiler/instruction-selector.cc

Issue 1111323003: Reland: [turbofan] add MachineType to AllocatedOperand (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: fix Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/compiler/instruction-selector.h ('k') | src/compiler/instruction-selector-impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « src/compiler/instruction-selector.h ('k') | src/compiler/instruction-selector-impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698