| 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 |