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/code-generator.h" | 5 #include "src/compiler/code-generator.h" |
6 | 6 |
7 #include "src/arm64/frames-arm64.h" | 7 #include "src/arm64/frames-arm64.h" |
8 #include "src/arm64/macro-assembler-arm64.h" | 8 #include "src/arm64/macro-assembler-arm64.h" |
9 #include "src/ast/scopes.h" | 9 #include "src/ast/scopes.h" |
10 #include "src/compiler/code-generator-impl.h" | 10 #include "src/compiler/code-generator-impl.h" |
(...skipping 639 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
650 case kArm64Float64RoundTruncate: | 650 case kArm64Float64RoundTruncate: |
651 __ Frintz(i.OutputDoubleRegister(), i.InputDoubleRegister(0)); | 651 __ Frintz(i.OutputDoubleRegister(), i.InputDoubleRegister(0)); |
652 break; | 652 break; |
653 case kArm64Float32RoundTiesEven: | 653 case kArm64Float32RoundTiesEven: |
654 __ Frintn(i.OutputFloat32Register(), i.InputFloat32Register(0)); | 654 __ Frintn(i.OutputFloat32Register(), i.InputFloat32Register(0)); |
655 break; | 655 break; |
656 case kArm64Float64RoundTiesEven: | 656 case kArm64Float64RoundTiesEven: |
657 __ Frintn(i.OutputDoubleRegister(), i.InputDoubleRegister(0)); | 657 __ Frintn(i.OutputDoubleRegister(), i.InputDoubleRegister(0)); |
658 break; | 658 break; |
659 case kArm64Add: | 659 case kArm64Add: |
| 660 if (FlagsModeField::decode(opcode) != kFlags_none) { |
| 661 __ Adds(i.OutputRegister(), i.InputOrZeroRegister64(0), |
| 662 i.InputOperand2_64(1)); |
| 663 } else { |
660 __ Add(i.OutputRegister(), i.InputOrZeroRegister64(0), | 664 __ Add(i.OutputRegister(), i.InputOrZeroRegister64(0), |
661 i.InputOperand2_64(1)); | 665 i.InputOperand2_64(1)); |
| 666 } |
662 break; | 667 break; |
663 case kArm64Add32: | 668 case kArm64Add32: |
664 if (FlagsModeField::decode(opcode) != kFlags_none) { | 669 if (FlagsModeField::decode(opcode) != kFlags_none) { |
665 __ Adds(i.OutputRegister32(), i.InputOrZeroRegister32(0), | 670 __ Adds(i.OutputRegister32(), i.InputOrZeroRegister32(0), |
666 i.InputOperand2_32(1)); | 671 i.InputOperand2_32(1)); |
667 } else { | 672 } else { |
668 __ Add(i.OutputRegister32(), i.InputOrZeroRegister32(0), | 673 __ Add(i.OutputRegister32(), i.InputOrZeroRegister32(0), |
669 i.InputOperand2_32(1)); | 674 i.InputOperand2_32(1)); |
670 } | 675 } |
671 break; | 676 break; |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
793 break; | 798 break; |
794 case kArm64Eon: | 799 case kArm64Eon: |
795 __ Eon(i.OutputRegister(), i.InputOrZeroRegister64(0), | 800 __ Eon(i.OutputRegister(), i.InputOrZeroRegister64(0), |
796 i.InputOperand2_64(1)); | 801 i.InputOperand2_64(1)); |
797 break; | 802 break; |
798 case kArm64Eon32: | 803 case kArm64Eon32: |
799 __ Eon(i.OutputRegister32(), i.InputOrZeroRegister32(0), | 804 __ Eon(i.OutputRegister32(), i.InputOrZeroRegister32(0), |
800 i.InputOperand2_32(1)); | 805 i.InputOperand2_32(1)); |
801 break; | 806 break; |
802 case kArm64Sub: | 807 case kArm64Sub: |
| 808 if (FlagsModeField::decode(opcode) != kFlags_none) { |
| 809 __ Subs(i.OutputRegister(), i.InputOrZeroRegister64(0), |
| 810 i.InputOperand2_64(1)); |
| 811 } else { |
803 __ Sub(i.OutputRegister(), i.InputOrZeroRegister64(0), | 812 __ Sub(i.OutputRegister(), i.InputOrZeroRegister64(0), |
804 i.InputOperand2_64(1)); | 813 i.InputOperand2_64(1)); |
| 814 } |
805 break; | 815 break; |
806 case kArm64Sub32: | 816 case kArm64Sub32: |
807 if (FlagsModeField::decode(opcode) != kFlags_none) { | 817 if (FlagsModeField::decode(opcode) != kFlags_none) { |
808 __ Subs(i.OutputRegister32(), i.InputOrZeroRegister32(0), | 818 __ Subs(i.OutputRegister32(), i.InputOrZeroRegister32(0), |
809 i.InputOperand2_32(1)); | 819 i.InputOperand2_32(1)); |
810 } else { | 820 } else { |
811 __ Sub(i.OutputRegister32(), i.InputOrZeroRegister32(0), | 821 __ Sub(i.OutputRegister32(), i.InputOrZeroRegister32(0), |
812 i.InputOperand2_32(1)); | 822 i.InputOperand2_32(1)); |
813 } | 823 } |
814 break; | 824 break; |
(...skipping 816 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1631 padding_size -= kInstructionSize; | 1641 padding_size -= kInstructionSize; |
1632 } | 1642 } |
1633 } | 1643 } |
1634 } | 1644 } |
1635 | 1645 |
1636 #undef __ | 1646 #undef __ |
1637 | 1647 |
1638 } // namespace compiler | 1648 } // namespace compiler |
1639 } // namespace internal | 1649 } // namespace internal |
1640 } // namespace v8 | 1650 } // namespace v8 |
OLD | NEW |