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/arm/macro-assembler-arm.h" | 7 #include "src/arm/macro-assembler-arm.h" |
8 #include "src/compiler/code-generator-impl.h" | 8 #include "src/compiler/code-generator-impl.h" |
9 #include "src/compiler/gap-resolver.h" | 9 #include "src/compiler/gap-resolver.h" |
10 #include "src/compiler/node-matchers.h" | 10 #include "src/compiler/node-matchers.h" |
(...skipping 675 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
686 Label* tlabel = branch->true_label; | 686 Label* tlabel = branch->true_label; |
687 Label* flabel = branch->false_label; | 687 Label* flabel = branch->false_label; |
688 switch (branch->condition) { | 688 switch (branch->condition) { |
689 case kUnorderedEqual: | 689 case kUnorderedEqual: |
690 __ b(vs, flabel); | 690 __ b(vs, flabel); |
691 // Fall through. | 691 // Fall through. |
692 case kEqual: | 692 case kEqual: |
693 __ b(eq, tlabel); | 693 __ b(eq, tlabel); |
694 break; | 694 break; |
695 case kUnorderedNotEqual: | 695 case kUnorderedNotEqual: |
696 __ b(vs, tlabel); | 696 // Unordered or not equal can be tested with "ne" condtion. |
697 // Fall through. | 697 // See ARMv7 manual A8.3 - Conditional execution. |
698 case kNotEqual: | 698 case kNotEqual: |
699 __ b(ne, tlabel); | 699 __ b(ne, tlabel); |
700 break; | 700 break; |
701 case kSignedLessThan: | 701 case kSignedLessThan: |
702 __ b(lt, tlabel); | 702 __ b(lt, tlabel); |
703 break; | 703 break; |
704 case kSignedGreaterThanOrEqual: | 704 case kSignedGreaterThanOrEqual: |
705 __ b(ge, tlabel); | 705 __ b(ge, tlabel); |
706 break; | 706 break; |
707 case kSignedLessThanOrEqual: | 707 case kSignedLessThanOrEqual: |
708 __ b(le, tlabel); | 708 __ b(le, tlabel); |
709 break; | 709 break; |
710 case kSignedGreaterThan: | 710 case kSignedGreaterThan: |
711 __ b(gt, tlabel); | 711 __ b(gt, tlabel); |
712 break; | 712 break; |
713 case kUnorderedLessThan: | 713 case kUnorderedLessThan: |
714 __ b(vs, flabel); | 714 __ b(vs, flabel); |
715 // Fall through. | 715 // Fall through. |
716 case kUnsignedLessThan: | 716 case kUnsignedLessThan: |
717 __ b(lo, tlabel); | 717 __ b(lo, tlabel); |
718 break; | 718 break; |
719 case kUnorderedGreaterThanOrEqual: | 719 case kUnorderedGreaterThanOrEqual: |
720 __ b(vs, tlabel); | 720 // Unordered, greater than or equal can be tested with "hs" condtion. |
721 // Fall through. | 721 // See ARMv7 manual A8.3 - Conditional execution. |
722 case kUnsignedGreaterThanOrEqual: | 722 case kUnsignedGreaterThanOrEqual: |
723 __ b(hs, tlabel); | 723 __ b(hs, tlabel); |
724 break; | 724 break; |
725 case kUnorderedLessThanOrEqual: | 725 case kUnorderedLessThanOrEqual: |
726 __ b(vs, flabel); | 726 __ b(vs, flabel); |
727 // Fall through. | 727 // Fall through. |
728 case kUnsignedLessThanOrEqual: | 728 case kUnsignedLessThanOrEqual: |
729 __ b(ls, tlabel); | 729 __ b(ls, tlabel); |
730 break; | 730 break; |
731 case kUnorderedGreaterThan: | 731 case kUnorderedGreaterThan: |
732 __ b(vs, tlabel); | 732 // Unordered or greater than can be tested with "hi" condtion. |
733 // Fall through. | 733 // See ARMv7 manual A8.3 - Conditional execution. |
734 case kUnsignedGreaterThan: | 734 case kUnsignedGreaterThan: |
735 __ b(hi, tlabel); | 735 __ b(hi, tlabel); |
736 break; | 736 break; |
737 case kOverflow: | 737 case kOverflow: |
738 __ b(vs, tlabel); | 738 __ b(vs, tlabel); |
739 break; | 739 break; |
740 case kNotOverflow: | 740 case kNotOverflow: |
741 __ b(vc, tlabel); | 741 __ b(vc, tlabel); |
742 break; | 742 break; |
743 } | 743 } |
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1102 } | 1102 } |
1103 } | 1103 } |
1104 MarkLazyDeoptSite(); | 1104 MarkLazyDeoptSite(); |
1105 } | 1105 } |
1106 | 1106 |
1107 #undef __ | 1107 #undef __ |
1108 | 1108 |
1109 } // namespace compiler | 1109 } // namespace compiler |
1110 } // namespace internal | 1110 } // namespace internal |
1111 } // namespace v8 | 1111 } // namespace v8 |
OLD | NEW |