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

Side by Side Diff: test/unittests/compiler/change-lowering-unittest.cc

Issue 968773004: [turbofan] Use the typer to statically detect Smis. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 9 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 | « test/cctest/compiler/test-simplified-lowering.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/code-stubs.h" 5 #include "src/code-stubs.h"
6 #include "src/compiler/change-lowering.h" 6 #include "src/compiler/change-lowering.h"
7 #include "src/compiler/js-graph.h" 7 #include "src/compiler/js-graph.h"
8 #include "src/compiler/linkage.h" 8 #include "src/compiler/linkage.h"
9 #include "src/compiler/node-properties.h" 9 #include "src/compiler/node-properties.h"
10 #include "src/compiler/simplified-operator.h" 10 #include "src/compiler/simplified-operator.h"
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 class ChangeLowering32Test : public ChangeLoweringTest { 174 class ChangeLowering32Test : public ChangeLoweringTest {
175 public: 175 public:
176 ~ChangeLowering32Test() OVERRIDE {} 176 ~ChangeLowering32Test() OVERRIDE {}
177 MachineType WordRepresentation() const FINAL { return kRepWord32; } 177 MachineType WordRepresentation() const FINAL { return kRepWord32; }
178 }; 178 };
179 179
180 180
181 TARGET_TEST_F(ChangeLowering32Test, ChangeInt32ToTagged) { 181 TARGET_TEST_F(ChangeLowering32Test, ChangeInt32ToTagged) {
182 Node* val = Parameter(0); 182 Node* val = Parameter(0);
183 Node* node = graph()->NewNode(simplified()->ChangeInt32ToTagged(), val); 183 Node* node = graph()->NewNode(simplified()->ChangeInt32ToTagged(), val);
184 NodeProperties::SetBounds(val, Bounds(Type::None(), Type::Signed32())); 184 NodeProperties::SetBounds(val, Bounds(Type::None(), Type::Integral32()));
185 Reduction reduction = Reduce(node); 185 Reduction reduction = Reduce(node);
186 ASSERT_TRUE(reduction.Changed()); 186 ASSERT_TRUE(reduction.Changed());
187 187
188 Node* phi = reduction.replacement(); 188 Node* phi = reduction.replacement();
189 Capture<Node*> add, branch, heap_number, if_true; 189 Capture<Node*> add, branch, heap_number, if_true;
190 EXPECT_THAT( 190 EXPECT_THAT(
191 phi, 191 phi,
192 IsPhi(kMachAnyTagged, 192 IsPhi(kMachAnyTagged,
193 IsFinish(AllOf(CaptureEq(&heap_number), 193 IsFinish(AllOf(CaptureEq(&heap_number),
194 IsAllocateHeapNumber(_, CaptureEq(&if_true))), 194 IsAllocateHeapNumber(_, CaptureEq(&if_true))),
195 IsStore(StoreRepresentation(kMachFloat64, kNoWriteBarrier), 195 IsStore(StoreRepresentation(kMachFloat64, kNoWriteBarrier),
196 CaptureEq(&heap_number), 196 CaptureEq(&heap_number),
197 IsIntPtrConstant(HeapNumberValueOffset()), 197 IsIntPtrConstant(HeapNumberValueOffset()),
198 IsChangeInt32ToFloat64(val), 198 IsChangeInt32ToFloat64(val),
199 CaptureEq(&heap_number), CaptureEq(&if_true))), 199 CaptureEq(&heap_number), CaptureEq(&if_true))),
200 IsProjection( 200 IsProjection(
201 0, AllOf(CaptureEq(&add), IsInt32AddWithOverflow(val, val))), 201 0, AllOf(CaptureEq(&add), IsInt32AddWithOverflow(val, val))),
202 IsMerge(AllOf(CaptureEq(&if_true), IsIfTrue(CaptureEq(&branch))), 202 IsMerge(AllOf(CaptureEq(&if_true), IsIfTrue(CaptureEq(&branch))),
203 IsIfFalse(AllOf(CaptureEq(&branch), 203 IsIfFalse(AllOf(CaptureEq(&branch),
204 IsBranch(IsProjection(1, CaptureEq(&add)), 204 IsBranch(IsProjection(1, CaptureEq(&add)),
205 graph()->start())))))); 205 graph()->start()))))));
206 } 206 }
207 207
208 208
209 TARGET_TEST_F(ChangeLowering32Test, ChangeInt32ToTaggedSmall) { 209 TARGET_TEST_F(ChangeLowering32Test, ChangeInt32ToTaggedSmall) {
210 Node* val = Parameter(0); 210 Node* val = Parameter(0);
211 Node* node = graph()->NewNode(simplified()->ChangeInt32ToTagged(), val); 211 Node* node = graph()->NewNode(simplified()->ChangeInt32ToTagged(), val);
212 NodeProperties::SetBounds(val, Bounds(Type::None(), Type::Signed31())); 212 NodeProperties::SetBounds(val, Bounds(Type::None(), Type::SignedSmall()));
213 Reduction reduction = Reduce(node); 213 Reduction reduction = Reduce(node);
214 ASSERT_TRUE(reduction.Changed()); 214 ASSERT_TRUE(reduction.Changed());
215 215
216 Node* change = reduction.replacement(); 216 Node* change = reduction.replacement();
217 Capture<Node*> add, branch, heap_number, if_true; 217 Capture<Node*> add, branch, heap_number, if_true;
218 EXPECT_THAT(change, IsWord32Shl(val, IsInt32Constant(SmiShiftAmount()))); 218 EXPECT_THAT(change, IsWord32Shl(val, IsInt32Constant(SmiShiftAmount())));
219 } 219 }
220 220
221 221
222 TARGET_TEST_F(ChangeLowering32Test, ChangeTaggedToFloat64) { 222 TARGET_TEST_F(ChangeLowering32Test, ChangeTaggedToFloat64) {
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 IsIfTrue(AllOf(CaptureEq(&branch), 452 IsIfTrue(AllOf(CaptureEq(&branch),
453 IsBranch(IsUint32LessThanOrEqual( 453 IsBranch(IsUint32LessThanOrEqual(
454 val, IsInt32Constant(SmiMaxValue())), 454 val, IsInt32Constant(SmiMaxValue())),
455 graph()->start()))), 455 graph()->start()))),
456 AllOf(CaptureEq(&if_false), IsIfFalse(CaptureEq(&branch)))))); 456 AllOf(CaptureEq(&if_false), IsIfFalse(CaptureEq(&branch))))));
457 } 457 }
458 458
459 } // namespace compiler 459 } // namespace compiler
460 } // namespace internal 460 } // namespace internal
461 } // namespace v8 461 } // namespace v8
OLDNEW
« no previous file with comments | « test/cctest/compiler/test-simplified-lowering.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698