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/typer-unittest.cc

Issue 2381523002: [Turbofan] Introduce OtherNumberConstant. (Closed)
Patch Set: Better DCHECK in HeapConstantType(). Created 4 years, 2 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/unittests/compiler/typed-optimization-unittest.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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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 <functional> 5 #include <functional>
6 6
7 #include "src/codegen.h" 7 #include "src/codegen.h"
8 #include "src/compiler/js-operator.h" 8 #include "src/compiler/js-operator.h"
9 #include "src/compiler/node-properties.h" 9 #include "src/compiler/node-properties.h"
10 #include "src/compiler/operator-properties.h" 10 #include "src/compiler/operator-properties.h"
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 for (int width = 0; width < max_width; width++) { 128 for (int width = 0; width < max_width; width++) {
129 for (int lmin = min_min; lmin <= max_min; lmin++) { 129 for (int lmin = min_min; lmin <= max_min; lmin++) {
130 for (int rmin = min_min; rmin <= max_min; rmin++) { 130 for (int rmin = min_min; rmin <= max_min; rmin++) {
131 Type* r1 = NewRange(lmin, lmin + width); 131 Type* r1 = NewRange(lmin, lmin + width);
132 Type* r2 = NewRange(rmin, rmin + width); 132 Type* r2 = NewRange(rmin, rmin + width);
133 Type* expected_type = TypeBinaryOp(op, r1, r2); 133 Type* expected_type = TypeBinaryOp(op, r1, r2);
134 134
135 for (int x1 = lmin; x1 < lmin + width; x1++) { 135 for (int x1 = lmin; x1 < lmin + width; x1++) {
136 for (int x2 = rmin; x2 < rmin + width; x2++) { 136 for (int x2 = rmin; x2 < rmin + width; x2++) {
137 double result_value = opfun(x1, x2); 137 double result_value = opfun(x1, x2);
138 Type* result_type = Type::Constant( 138 Type* result_type = Type::NewConstant(
139 isolate()->factory()->NewNumber(result_value), zone()); 139 isolate()->factory()->NewNumber(result_value), zone());
140 EXPECT_TRUE(result_type->Is(expected_type)); 140 EXPECT_TRUE(result_type->Is(expected_type));
141 } 141 }
142 } 142 }
143 } 143 }
144 } 144 }
145 } 145 }
146 } 146 }
147 147
148 template <class BinaryFunction> 148 template <class BinaryFunction>
149 void TestBinaryArithOp(const Operator* op, BinaryFunction opfun) { 149 void TestBinaryArithOp(const Operator* op, BinaryFunction opfun) {
150 TestBinaryArithOpCloseToZero(op, opfun, 8); 150 TestBinaryArithOpCloseToZero(op, opfun, 8);
151 for (int i = 0; i < 100; ++i) { 151 for (int i = 0; i < 100; ++i) {
152 Type* r1 = RandomRange(); 152 Type* r1 = RandomRange();
153 Type* r2 = RandomRange(); 153 Type* r2 = RandomRange();
154 Type* expected_type = TypeBinaryOp(op, r1, r2); 154 Type* expected_type = TypeBinaryOp(op, r1, r2);
155 for (int i = 0; i < 10; i++) { 155 for (int i = 0; i < 10; i++) {
156 double x1 = RandomInt(r1->AsRange()); 156 double x1 = RandomInt(r1->AsRange());
157 double x2 = RandomInt(r2->AsRange()); 157 double x2 = RandomInt(r2->AsRange());
158 double result_value = opfun(x1, x2); 158 double result_value = opfun(x1, x2);
159 Type* result_type = Type::Constant( 159 Type* result_type = Type::NewConstant(
160 isolate()->factory()->NewNumber(result_value), zone()); 160 isolate()->factory()->NewNumber(result_value), zone());
161 EXPECT_TRUE(result_type->Is(expected_type)); 161 EXPECT_TRUE(result_type->Is(expected_type));
162 } 162 }
163 } 163 }
164 } 164 }
165 165
166 template <class BinaryFunction> 166 template <class BinaryFunction>
167 void TestBinaryCompareOp(const Operator* op, BinaryFunction opfun) { 167 void TestBinaryCompareOp(const Operator* op, BinaryFunction opfun) {
168 for (int i = 0; i < 100; ++i) { 168 for (int i = 0; i < 100; ++i) {
169 Type* r1 = RandomRange(); 169 Type* r1 = RandomRange();
170 Type* r2 = RandomRange(); 170 Type* r2 = RandomRange();
171 Type* expected_type = TypeBinaryOp(op, r1, r2); 171 Type* expected_type = TypeBinaryOp(op, r1, r2);
172 for (int i = 0; i < 10; i++) { 172 for (int i = 0; i < 10; i++) {
173 double x1 = RandomInt(r1->AsRange()); 173 double x1 = RandomInt(r1->AsRange());
174 double x2 = RandomInt(r2->AsRange()); 174 double x2 = RandomInt(r2->AsRange());
175 bool result_value = opfun(x1, x2); 175 bool result_value = opfun(x1, x2);
176 Type* result_type = 176 Type* result_type = Type::NewConstant(
177 Type::Constant(result_value ? isolate()->factory()->true_value() 177 result_value ? isolate()->factory()->true_value()
178 : isolate()->factory()->false_value(), 178 : isolate()->factory()->false_value(),
179 zone()); 179 zone());
180 EXPECT_TRUE(result_type->Is(expected_type)); 180 EXPECT_TRUE(result_type->Is(expected_type));
181 } 181 }
182 } 182 }
183 } 183 }
184 184
185 template <class BinaryFunction> 185 template <class BinaryFunction>
186 void TestBinaryBitOp(const Operator* op, BinaryFunction opfun) { 186 void TestBinaryBitOp(const Operator* op, BinaryFunction opfun) {
187 for (int i = 0; i < 100; ++i) { 187 for (int i = 0; i < 100; ++i) {
188 Type* r1 = RandomRange(true); 188 Type* r1 = RandomRange(true);
189 Type* r2 = RandomRange(true); 189 Type* r2 = RandomRange(true);
190 Type* expected_type = TypeBinaryOp(op, r1, r2); 190 Type* expected_type = TypeBinaryOp(op, r1, r2);
191 for (int i = 0; i < 10; i++) { 191 for (int i = 0; i < 10; i++) {
192 int32_t x1 = static_cast<int32_t>(RandomInt(r1->AsRange())); 192 int32_t x1 = static_cast<int32_t>(RandomInt(r1->AsRange()));
193 int32_t x2 = static_cast<int32_t>(RandomInt(r2->AsRange())); 193 int32_t x2 = static_cast<int32_t>(RandomInt(r2->AsRange()));
194 double result_value = opfun(x1, x2); 194 double result_value = opfun(x1, x2);
195 Type* result_type = Type::Constant( 195 Type* result_type = Type::NewConstant(
196 isolate()->factory()->NewNumber(result_value), zone()); 196 isolate()->factory()->NewNumber(result_value), zone());
197 EXPECT_TRUE(result_type->Is(expected_type)); 197 EXPECT_TRUE(result_type->Is(expected_type));
198 } 198 }
199 } 199 }
200 } 200 }
201 201
202 Type* RandomSubtype(Type* type) { 202 Type* RandomSubtype(Type* type) {
203 Type* subtype; 203 Type* subtype;
204 do { 204 do {
205 subtype = types_.Fuzz(); 205 subtype = types_.Fuzz();
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 for (auto i : values) { 383 for (auto i : values) {
384 Node* c = graph()->NewNode(common()->Int32Constant(i)); 384 Node* c = graph()->NewNode(common()->Int32Constant(i));
385 Type* type = NodeProperties::GetType(c); 385 Type* type = NodeProperties::GetType(c);
386 EXPECT_TRUE(type->Is(NewRange(i, i))); 386 EXPECT_TRUE(type->Is(NewRange(i, i)));
387 } 387 }
388 } 388 }
389 389
390 } // namespace compiler 390 } // namespace compiler
391 } // namespace internal 391 } // namespace internal
392 } // namespace v8 392 } // namespace v8
OLDNEW
« no previous file with comments | « test/unittests/compiler/typed-optimization-unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698