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

Side by Side Diff: src/compiler/ia32/code-generator-ia32.cc

Issue 850653002: [turbofan] Improve code generation for unordered comparisons. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 11 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
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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/compiler/code-generator-impl.h" 7 #include "src/compiler/code-generator-impl.h"
8 #include "src/compiler/gap-resolver.h" 8 #include "src/compiler/gap-resolver.h"
9 #include "src/compiler/node-matchers.h" 9 #include "src/compiler/node-matchers.h"
10 #include "src/compiler/node-properties-inl.h" 10 #include "src/compiler/node-properties-inl.h"
(...skipping 713 matching lines...) Expand 10 before | Expand all | Expand 10 after
724 break; 724 break;
725 case kSignedGreaterThanOrEqual: 725 case kSignedGreaterThanOrEqual:
726 __ j(greater_equal, tlabel); 726 __ j(greater_equal, tlabel);
727 break; 727 break;
728 case kSignedLessThanOrEqual: 728 case kSignedLessThanOrEqual:
729 __ j(less_equal, tlabel); 729 __ j(less_equal, tlabel);
730 break; 730 break;
731 case kSignedGreaterThan: 731 case kSignedGreaterThan:
732 __ j(greater, tlabel); 732 __ j(greater, tlabel);
733 break; 733 break;
734 case kUnorderedLessThan:
735 __ j(parity_even, flabel, flabel_distance);
736 // Fall through.
737 case kUnsignedLessThan: 734 case kUnsignedLessThan:
738 __ j(below, tlabel); 735 __ j(below, tlabel);
739 break; 736 break;
740 case kUnorderedGreaterThanOrEqual:
741 __ j(parity_even, tlabel);
742 // Fall through.
743 case kUnsignedGreaterThanOrEqual: 737 case kUnsignedGreaterThanOrEqual:
744 __ j(above_equal, tlabel); 738 __ j(above_equal, tlabel);
745 break; 739 break;
746 case kUnorderedLessThanOrEqual:
747 __ j(parity_even, flabel, flabel_distance);
748 // Fall through.
749 case kUnsignedLessThanOrEqual: 740 case kUnsignedLessThanOrEqual:
750 __ j(below_equal, tlabel); 741 __ j(below_equal, tlabel);
751 break; 742 break;
752 case kUnorderedGreaterThan:
753 __ j(parity_even, tlabel);
754 // Fall through.
755 case kUnsignedGreaterThan: 743 case kUnsignedGreaterThan:
756 __ j(above, tlabel); 744 __ j(above, tlabel);
757 break; 745 break;
758 case kOverflow: 746 case kOverflow:
759 __ j(overflow, tlabel); 747 __ j(overflow, tlabel);
760 break; 748 break;
761 case kNotOverflow: 749 case kNotOverflow:
762 __ j(no_overflow, tlabel); 750 __ j(no_overflow, tlabel);
763 break; 751 break;
764 } 752 }
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
806 break; 794 break;
807 case kSignedGreaterThanOrEqual: 795 case kSignedGreaterThanOrEqual:
808 cc = greater_equal; 796 cc = greater_equal;
809 break; 797 break;
810 case kSignedLessThanOrEqual: 798 case kSignedLessThanOrEqual:
811 cc = less_equal; 799 cc = less_equal;
812 break; 800 break;
813 case kSignedGreaterThan: 801 case kSignedGreaterThan:
814 cc = greater; 802 cc = greater;
815 break; 803 break;
816 case kUnorderedLessThan:
817 __ j(parity_odd, &check, Label::kNear);
818 __ Move(reg, Immediate(0));
819 __ jmp(&done, Label::kNear);
820 // Fall through.
821 case kUnsignedLessThan: 804 case kUnsignedLessThan:
822 cc = below; 805 cc = below;
823 break; 806 break;
824 case kUnorderedGreaterThanOrEqual:
825 __ j(parity_odd, &check, Label::kNear);
826 __ mov(reg, Immediate(1));
827 __ jmp(&done, Label::kNear);
828 // Fall through.
829 case kUnsignedGreaterThanOrEqual: 807 case kUnsignedGreaterThanOrEqual:
830 cc = above_equal; 808 cc = above_equal;
831 break; 809 break;
832 case kUnorderedLessThanOrEqual:
833 __ j(parity_odd, &check, Label::kNear);
834 __ Move(reg, Immediate(0));
835 __ jmp(&done, Label::kNear);
836 // Fall through.
837 case kUnsignedLessThanOrEqual: 810 case kUnsignedLessThanOrEqual:
838 cc = below_equal; 811 cc = below_equal;
839 break; 812 break;
840 case kUnorderedGreaterThan:
841 __ j(parity_odd, &check, Label::kNear);
842 __ mov(reg, Immediate(1));
843 __ jmp(&done, Label::kNear);
844 // Fall through.
845 case kUnsignedGreaterThan: 813 case kUnsignedGreaterThan:
846 cc = above; 814 cc = above;
847 break; 815 break;
848 case kOverflow: 816 case kOverflow:
849 cc = overflow; 817 cc = overflow;
850 break; 818 break;
851 case kNotOverflow: 819 case kNotOverflow:
852 cc = no_overflow; 820 cc = no_overflow;
853 break; 821 break;
854 } 822 }
(...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after
1266 } 1234 }
1267 } 1235 }
1268 MarkLazyDeoptSite(); 1236 MarkLazyDeoptSite();
1269 } 1237 }
1270 1238
1271 #undef __ 1239 #undef __
1272 1240
1273 } // namespace compiler 1241 } // namespace compiler
1274 } // namespace internal 1242 } // namespace internal
1275 } // namespace v8 1243 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/arm64/instruction-selector-arm64.cc ('k') | src/compiler/ia32/instruction-selector-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698