OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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/representation-change.h" | 5 #include "src/compiler/representation-change.h" |
6 | 6 |
7 #include <sstream> | 7 #include <sstream> |
8 | 8 |
9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/code-factory.h" | 10 #include "src/code-factory.h" |
(...skipping 566 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
577 return machine()->Int32Div(); | 577 return machine()->Int32Div(); |
578 case IrOpcode::kNumberModulus: | 578 case IrOpcode::kNumberModulus: |
579 return machine()->Int32Mod(); | 579 return machine()->Int32Mod(); |
580 case IrOpcode::kNumberBitwiseOr: | 580 case IrOpcode::kNumberBitwiseOr: |
581 return machine()->Word32Or(); | 581 return machine()->Word32Or(); |
582 case IrOpcode::kNumberBitwiseXor: | 582 case IrOpcode::kNumberBitwiseXor: |
583 return machine()->Word32Xor(); | 583 return machine()->Word32Xor(); |
584 case IrOpcode::kNumberBitwiseAnd: | 584 case IrOpcode::kNumberBitwiseAnd: |
585 return machine()->Word32And(); | 585 return machine()->Word32And(); |
586 case IrOpcode::kNumberEqual: | 586 case IrOpcode::kNumberEqual: |
| 587 case IrOpcode::kSpeculativeNumberEqual: |
587 return machine()->Word32Equal(); | 588 return machine()->Word32Equal(); |
588 case IrOpcode::kNumberLessThan: | 589 case IrOpcode::kNumberLessThan: |
| 590 case IrOpcode::kSpeculativeNumberLessThan: |
589 return machine()->Int32LessThan(); | 591 return machine()->Int32LessThan(); |
590 case IrOpcode::kNumberLessThanOrEqual: | 592 case IrOpcode::kNumberLessThanOrEqual: |
| 593 case IrOpcode::kSpeculativeNumberLessThanOrEqual: |
591 return machine()->Int32LessThanOrEqual(); | 594 return machine()->Int32LessThanOrEqual(); |
592 default: | 595 default: |
593 UNREACHABLE(); | 596 UNREACHABLE(); |
594 return nullptr; | 597 return nullptr; |
595 } | 598 } |
596 } | 599 } |
597 | 600 |
598 const Operator* RepresentationChanger::Int32OverflowOperatorFor( | 601 const Operator* RepresentationChanger::Int32OverflowOperatorFor( |
599 IrOpcode::Value opcode) { | 602 IrOpcode::Value opcode) { |
600 switch (opcode) { | 603 switch (opcode) { |
(...skipping 14 matching lines...) Expand all Loading... |
615 return machine()->Int32Add(); | 618 return machine()->Int32Add(); |
616 case IrOpcode::kNumberSubtract: | 619 case IrOpcode::kNumberSubtract: |
617 return machine()->Int32Sub(); | 620 return machine()->Int32Sub(); |
618 case IrOpcode::kNumberMultiply: | 621 case IrOpcode::kNumberMultiply: |
619 return machine()->Int32Mul(); | 622 return machine()->Int32Mul(); |
620 case IrOpcode::kNumberDivide: | 623 case IrOpcode::kNumberDivide: |
621 return machine()->Uint32Div(); | 624 return machine()->Uint32Div(); |
622 case IrOpcode::kNumberModulus: | 625 case IrOpcode::kNumberModulus: |
623 return machine()->Uint32Mod(); | 626 return machine()->Uint32Mod(); |
624 case IrOpcode::kNumberEqual: | 627 case IrOpcode::kNumberEqual: |
| 628 case IrOpcode::kSpeculativeNumberEqual: |
625 return machine()->Word32Equal(); | 629 return machine()->Word32Equal(); |
626 case IrOpcode::kNumberLessThan: | 630 case IrOpcode::kNumberLessThan: |
| 631 case IrOpcode::kSpeculativeNumberLessThan: |
627 return machine()->Uint32LessThan(); | 632 return machine()->Uint32LessThan(); |
628 case IrOpcode::kNumberLessThanOrEqual: | 633 case IrOpcode::kNumberLessThanOrEqual: |
| 634 case IrOpcode::kSpeculativeNumberLessThanOrEqual: |
629 return machine()->Uint32LessThanOrEqual(); | 635 return machine()->Uint32LessThanOrEqual(); |
630 case IrOpcode::kNumberClz32: | 636 case IrOpcode::kNumberClz32: |
631 return machine()->Word32Clz(); | 637 return machine()->Word32Clz(); |
632 case IrOpcode::kNumberImul: | 638 case IrOpcode::kNumberImul: |
633 return machine()->Int32Mul(); | 639 return machine()->Int32Mul(); |
634 default: | 640 default: |
635 UNREACHABLE(); | 641 UNREACHABLE(); |
636 return nullptr; | 642 return nullptr; |
637 } | 643 } |
638 } | 644 } |
639 | 645 |
640 | 646 |
641 const Operator* RepresentationChanger::Float64OperatorFor( | 647 const Operator* RepresentationChanger::Float64OperatorFor( |
642 IrOpcode::Value opcode) { | 648 IrOpcode::Value opcode) { |
643 switch (opcode) { | 649 switch (opcode) { |
644 case IrOpcode::kSpeculativeNumberAdd: | 650 case IrOpcode::kSpeculativeNumberAdd: |
645 case IrOpcode::kNumberAdd: | 651 case IrOpcode::kNumberAdd: |
646 return machine()->Float64Add(); | 652 return machine()->Float64Add(); |
647 case IrOpcode::kSpeculativeNumberSubtract: | 653 case IrOpcode::kSpeculativeNumberSubtract: |
648 case IrOpcode::kNumberSubtract: | 654 case IrOpcode::kNumberSubtract: |
649 return machine()->Float64Sub(); | 655 return machine()->Float64Sub(); |
650 case IrOpcode::kNumberMultiply: | 656 case IrOpcode::kNumberMultiply: |
651 return machine()->Float64Mul(); | 657 return machine()->Float64Mul(); |
652 case IrOpcode::kNumberDivide: | 658 case IrOpcode::kNumberDivide: |
653 return machine()->Float64Div(); | 659 return machine()->Float64Div(); |
654 case IrOpcode::kNumberModulus: | 660 case IrOpcode::kNumberModulus: |
655 return machine()->Float64Mod(); | 661 return machine()->Float64Mod(); |
656 case IrOpcode::kNumberEqual: | 662 case IrOpcode::kNumberEqual: |
| 663 case IrOpcode::kSpeculativeNumberEqual: |
657 return machine()->Float64Equal(); | 664 return machine()->Float64Equal(); |
658 case IrOpcode::kNumberLessThan: | 665 case IrOpcode::kNumberLessThan: |
| 666 case IrOpcode::kSpeculativeNumberLessThan: |
659 return machine()->Float64LessThan(); | 667 return machine()->Float64LessThan(); |
660 case IrOpcode::kNumberLessThanOrEqual: | 668 case IrOpcode::kNumberLessThanOrEqual: |
| 669 case IrOpcode::kSpeculativeNumberLessThanOrEqual: |
661 return machine()->Float64LessThanOrEqual(); | 670 return machine()->Float64LessThanOrEqual(); |
662 case IrOpcode::kNumberLog: | 671 case IrOpcode::kNumberLog: |
663 return machine()->Float64Log(); | 672 return machine()->Float64Log(); |
664 default: | 673 default: |
665 UNREACHABLE(); | 674 UNREACHABLE(); |
666 return nullptr; | 675 return nullptr; |
667 } | 676 } |
668 } | 677 } |
669 | 678 |
670 | 679 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
710 } | 719 } |
711 | 720 |
712 Node* RepresentationChanger::InsertChangeTaggedToFloat64(Node* node) { | 721 Node* RepresentationChanger::InsertChangeTaggedToFloat64(Node* node) { |
713 return jsgraph()->graph()->NewNode(simplified()->ChangeTaggedToFloat64(), | 722 return jsgraph()->graph()->NewNode(simplified()->ChangeTaggedToFloat64(), |
714 node); | 723 node); |
715 } | 724 } |
716 | 725 |
717 } // namespace compiler | 726 } // namespace compiler |
718 } // namespace internal | 727 } // namespace internal |
719 } // namespace v8 | 728 } // namespace v8 |
OLD | NEW |