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

Side by Side Diff: test/unittests/compiler/machine-operator-reducer-unittest.cc

Issue 2230213002: Revert of [turbofan] Reduces x << y ^ x >>> (32 - y) to x ror (32 - y). (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 4 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
« no previous file with comments | « src/compiler/machine-operator-reducer.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/machine-operator-reducer.h" 5 #include "src/compiler/machine-operator-reducer.h"
6 #include "src/base/bits.h" 6 #include "src/base/bits.h"
7 #include "src/base/division-by-constant.h" 7 #include "src/base/division-by-constant.h"
8 #include "src/base/ieee754.h" 8 #include "src/base/ieee754.h"
9 #include "src/compiler/js-graph.h" 9 #include "src/compiler/js-graph.h"
10 #include "src/compiler/typer.h" 10 #include "src/compiler/typer.h"
(...skipping 711 matching lines...) Expand 10 before | Expand all | Expand 10 after
722 EXPECT_EQ(reduction1.replacement(), node1); 722 EXPECT_EQ(reduction1.replacement(), node1);
723 EXPECT_THAT(reduction1.replacement(), IsWord32Ror(value, sub)); 723 EXPECT_THAT(reduction1.replacement(), IsWord32Ror(value, sub));
724 724
725 // (x >>> (32 - y)) | (x << y) => x ror (32 - y) 725 // (x >>> (32 - y)) | (x << y) => x ror (32 - y)
726 Node* node2 = graph()->NewNode(machine()->Word32Or(), shr_l, shl_l); 726 Node* node2 = graph()->NewNode(machine()->Word32Or(), shr_l, shl_l);
727 Reduction reduction2 = Reduce(node2); 727 Reduction reduction2 = Reduce(node2);
728 EXPECT_TRUE(reduction2.Changed()); 728 EXPECT_TRUE(reduction2.Changed());
729 EXPECT_EQ(reduction2.replacement(), node2); 729 EXPECT_EQ(reduction2.replacement(), node2);
730 EXPECT_THAT(reduction2.replacement(), IsWord32Ror(value, sub)); 730 EXPECT_THAT(reduction2.replacement(), IsWord32Ror(value, sub));
731 731
732 // (x << y) ^ (x >>> (32 - y)) => x ror (32 - y)
733 Node* node3 = graph()->NewNode(machine()->Word32Xor(), shl_l, shr_l);
734 Reduction reduction3 = Reduce(node3);
735 EXPECT_TRUE(reduction3.Changed());
736 EXPECT_EQ(reduction3.replacement(), node3);
737 EXPECT_THAT(reduction3.replacement(), IsWord32Ror(value, sub));
738
739 // (x >>> (32 - y)) ^ (x << y) => x ror (32 - y)
740 Node* node4 = graph()->NewNode(machine()->Word32Xor(), shr_l, shl_l);
741 Reduction reduction4 = Reduce(node4);
742 EXPECT_TRUE(reduction4.Changed());
743 EXPECT_EQ(reduction4.replacement(), node4);
744 EXPECT_THAT(reduction4.replacement(), IsWord32Ror(value, sub));
745
746 // Testing rotate right. 732 // Testing rotate right.
747 Node* shl_r = graph()->NewNode(machine()->Word32Shl(), value, sub); 733 Node* shl_r = graph()->NewNode(machine()->Word32Shl(), value, sub);
748 Node* shr_r = graph()->NewNode(machine()->Word32Shr(), value, shift); 734 Node* shr_r = graph()->NewNode(machine()->Word32Shr(), value, shift);
749 735
750 // (x << (32 - y)) | (x >>> y) => x ror y 736 // (x << (32 - y)) | (x >>> y) => x ror y
751 Node* node5 = graph()->NewNode(machine()->Word32Or(), shl_r, shr_r); 737 Node* node3 = graph()->NewNode(machine()->Word32Or(), shl_r, shr_r);
752 Reduction reduction5 = Reduce(node5); 738 Reduction reduction3 = Reduce(node3);
753 EXPECT_TRUE(reduction5.Changed()); 739 EXPECT_TRUE(reduction3.Changed());
754 EXPECT_EQ(reduction5.replacement(), node5); 740 EXPECT_EQ(reduction3.replacement(), node3);
755 EXPECT_THAT(reduction5.replacement(), IsWord32Ror(value, shift)); 741 EXPECT_THAT(reduction3.replacement(), IsWord32Ror(value, shift));
756 742
757 // (x >>> y) | (x << (32 - y)) => x ror y 743 // (x >>> y) | (x << (32 - y)) => x ror y
758 Node* node6 = graph()->NewNode(machine()->Word32Or(), shr_r, shl_r); 744 Node* node4 = graph()->NewNode(machine()->Word32Or(), shr_r, shl_r);
759 Reduction reduction6 = Reduce(node6); 745 Reduction reduction4 = Reduce(node4);
760 EXPECT_TRUE(reduction6.Changed()); 746 EXPECT_TRUE(reduction4.Changed());
761 EXPECT_EQ(reduction6.replacement(), node6); 747 EXPECT_EQ(reduction4.replacement(), node4);
762 EXPECT_THAT(reduction6.replacement(), IsWord32Ror(value, shift)); 748 EXPECT_THAT(reduction4.replacement(), IsWord32Ror(value, shift));
749 }
763 750
764 // (x << (32 - y)) ^ (x >>> y) => x ror y
765 Node* node7 = graph()->NewNode(machine()->Word32Xor(), shl_r, shr_r);
766 Reduction reduction7 = Reduce(node7);
767 EXPECT_TRUE(reduction7.Changed());
768 EXPECT_EQ(reduction7.replacement(), node7);
769 EXPECT_THAT(reduction7.replacement(), IsWord32Ror(value, shift));
770
771 // (x >>> y) ^ (x << (32 - y)) => x ror y
772 Node* node8 = graph()->NewNode(machine()->Word32Xor(), shr_r, shl_r);
773 Reduction reduction8 = Reduce(node8);
774 EXPECT_TRUE(reduction8.Changed());
775 EXPECT_EQ(reduction8.replacement(), node8);
776 EXPECT_THAT(reduction8.replacement(), IsWord32Ror(value, shift));
777 }
778 751
779 TEST_F(MachineOperatorReducerTest, ReduceToWord32RorWithConstant) { 752 TEST_F(MachineOperatorReducerTest, ReduceToWord32RorWithConstant) {
780 Node* value = Parameter(0); 753 Node* value = Parameter(0);
781 TRACED_FORRANGE(int32_t, k, 0, 31) { 754 TRACED_FORRANGE(int32_t, k, 0, 31) {
782 Node* shl = 755 Node* shl =
783 graph()->NewNode(machine()->Word32Shl(), value, Int32Constant(k)); 756 graph()->NewNode(machine()->Word32Shl(), value, Int32Constant(k));
784 Node* shr = 757 Node* shr =
785 graph()->NewNode(machine()->Word32Shr(), value, Int32Constant(32 - k)); 758 graph()->NewNode(machine()->Word32Shr(), value, Int32Constant(32 - k));
786 759
787 // (x << K) | (x >>> ((32 - K) - y)) => x ror (32 - K) 760 // (x << K) | (x >>> ((32 - K) - y)) => x ror (32 - K)
(...skipping 1288 matching lines...) Expand 10 before | Expand all | Expand 10 after
2076 Reduction r = Reduce(node); 2049 Reduction r = Reduce(node);
2077 ASSERT_TRUE(r.Changed()); 2050 ASSERT_TRUE(r.Changed());
2078 EXPECT_THAT(r.replacement(), 2051 EXPECT_THAT(r.replacement(),
2079 IsStore(rep, base, index, value, effect, control)); 2052 IsStore(rep, base, index, value, effect, control));
2080 } 2053 }
2081 } 2054 }
2082 2055
2083 } // namespace compiler 2056 } // namespace compiler
2084 } // namespace internal 2057 } // namespace internal
2085 } // namespace v8 2058 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/machine-operator-reducer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698