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

Side by Side Diff: test/unittests/wasm/asm-types-unittest.cc

Issue 2078053002: V8. ASM-2-WASM. Another asm-types.h revision. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: git pull Created 4 years, 6 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
« src/wasm/asm-types.cc ('K') | « src/wasm/asm-types.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 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 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/wasm/asm-types.h" 5 #include "src/wasm/asm-types.h"
6 6
7 #include <unordered_map> 7 #include <unordered_map>
8 #include <unordered_set> 8 #include <unordered_set>
9 9
10 #include "src/base/macros.h" 10 #include "src/base/macros.h"
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 Function(Type::Int)(Type::Int)) 218 Function(Type::Int)(Type::Int))
219 ->Name(), 219 ->Name(),
220 StrEq("(double, float) -> int /\\ (int) -> int")); 220 StrEq("(double, float) -> int /\\ (int) -> int"));
221 221
222 EXPECT_THAT(Type::FroundType(zone())->Name(), StrEq("fround")); 222 EXPECT_THAT(Type::FroundType(zone())->Name(), StrEq("fround"));
223 223
224 EXPECT_THAT(Type::MinMaxType(zone(), Type::Signed(), Type::Int())->Name(), 224 EXPECT_THAT(Type::MinMaxType(zone(), Type::Signed(), Type::Int())->Name(),
225 StrEq("(int, int...) -> signed")); 225 StrEq("(int, int...) -> signed"));
226 EXPECT_THAT(Type::MinMaxType(zone(), Type::Float(), Type::Floatish())->Name(), 226 EXPECT_THAT(Type::MinMaxType(zone(), Type::Float(), Type::Floatish())->Name(),
227 StrEq("(floatish, floatish...) -> float")); 227 StrEq("(floatish, floatish...) -> float"));
228 EXPECT_THAT(Type::MinMaxType(zone(), Type::Double(), Type::Double())->Name(), 228 EXPECT_THAT(Type::MinMaxType(zone(), Type::Double(), Type::DoubleQ())->Name(),
229 StrEq("(double, double...) -> double")); 229 StrEq("(double?, double?...) -> double"));
230
231 EXPECT_THAT(Type::FFIType(zone())->Name(), StrEq("Function"));
232
233 EXPECT_THAT(Type::FunctionTableType(zone(), 4)->Name(),
234 StrEq("[unbound][4]"));
235 auto* ft = Type::FunctionTableType(zone(), 15);
236 ft->AsFunctionTableType()->set_signature(Function(Type::Double)(Type::Int));
237 EXPECT_THAT(ft->Name(), StrEq("(int) -> double[15]"));
230 } 238 }
231 239
232 TEST_F(AsmTypeTest, IsExactly) { 240 TEST_F(AsmTypeTest, IsExactly) {
233 Type* test_types[] = { 241 Type* test_types[] = {
234 #define CREATE(CamelName, string_name, number, parent_types) Type::CamelName(), 242 #define CREATE(CamelName, string_name, number, parent_types) Type::CamelName(),
235 FOR_EACH_ASM_VALUE_TYPE_LIST(CREATE) 243 FOR_EACH_ASM_VALUE_TYPE_LIST(CREATE)
236 #undef CREATE 244 #undef CREATE
237 Function(Type::Int)(Type::Double), 245 Function(Type::Int)(Type::Double),
238 Function(Type::Int)(Type::DoubleQ), 246 Function(Type::Int)(Type::DoubleQ),
239 Overload(Function(Type::Int)(Type::Double)), 247 Overload(Function(Type::Int)(Type::Double)),
240 Function(Type::Int)(Type::Int, Type::Int), 248 Function(Type::Int)(Type::Int, Type::Int),
241 Type::MinMaxType(zone(), Type::Signed(), Type::Int()), 249 Type::MinMaxType(zone(), Type::Signed(), Type::Int()),
242 Function(Type::Int)(Type::Float), Type::FroundType(zone()), 250 Function(Type::Int)(Type::Float), Type::FroundType(zone()),
251 Type::FFIType(zone()), Type::FunctionTableType(zone(), 10),
243 }; 252 };
244 253
245 for (size_t ii = 0; ii < arraysize(test_types); ++ii) { 254 for (size_t ii = 0; ii < arraysize(test_types); ++ii) {
246 for (size_t jj = 0; jj < arraysize(test_types); ++jj) { 255 for (size_t jj = 0; jj < arraysize(test_types); ++jj) {
247 EXPECT_EQ(ii == jj, test_types[ii]->IsExactly(test_types[jj])) 256 EXPECT_EQ(ii == jj, test_types[ii]->IsExactly(test_types[jj]))
248 << test_types[ii]->Name() 257 << test_types[ii]->Name()
249 << ((ii == jj) ? " is not exactly " : " is exactly ") 258 << ((ii == jj) ? " is not exactly " : " is exactly ")
250 << test_types[jj]->Name(); 259 << test_types[jj]->Name();
251 } 260 }
252 } 261 }
253 } 262 }
254 263
255 TEST_F(AsmTypeTest, IsA) { 264 TEST_F(AsmTypeTest, IsA) {
256 Type* test_types[] = { 265 Type* test_types[] = {
257 #define CREATE(CamelName, string_name, number, parent_types) Type::CamelName(), 266 #define CREATE(CamelName, string_name, number, parent_types) Type::CamelName(),
258 FOR_EACH_ASM_VALUE_TYPE_LIST(CREATE) 267 FOR_EACH_ASM_VALUE_TYPE_LIST(CREATE)
259 #undef CREATE 268 #undef CREATE
260 Function(Type::Int)(Type::Double), 269 Function(Type::Int)(Type::Double),
261 Function(Type::Int)(Type::DoubleQ), 270 Function(Type::Int)(Type::DoubleQ),
262 Overload(Function(Type::Int)(Type::Double)), 271 Overload(Function(Type::Int)(Type::Double)),
263 Function(Type::Int)(Type::Int, Type::Int), 272 Function(Type::Int)(Type::Int, Type::Int),
264 Type::MinMaxType(zone(), Type::Signed(), Type::Int()), 273 Type::MinMaxType(zone(), Type::Signed(), Type::Int()),
265 Function(Type::Int)(Type::Float), Type::FroundType(zone()), 274 Function(Type::Int)(Type::Float), Type::FroundType(zone()),
275 Type::FFIType(zone()), Type::FunctionTableType(zone(), 10),
266 }; 276 };
267 277
268 for (size_t ii = 0; ii < arraysize(test_types); ++ii) { 278 for (size_t ii = 0; ii < arraysize(test_types); ++ii) {
269 for (size_t jj = 0; jj < arraysize(test_types); ++jj) { 279 for (size_t jj = 0; jj < arraysize(test_types); ++jj) {
270 const bool Expected = 280 const bool Expected =
271 (ii == jj) || ParentsOf(test_types[ii]).count(test_types[jj]) != 0; 281 (ii == jj) || ParentsOf(test_types[ii]).count(test_types[jj]) != 0;
272 EXPECT_EQ(Expected, test_types[ii]->IsA(test_types[jj])) 282 EXPECT_EQ(Expected, test_types[ii]->IsA(test_types[jj]))
273 << test_types[ii]->Name() << (Expected ? " is not a " : " is a ") 283 << test_types[ii]->Name() << (Expected ? " is not a " : " is a ")
274 << test_types[jj]->Name(); 284 << test_types[jj]->Name();
275 } 285 }
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 auto* fi2d = Function(Type::Double)(Type::Float, Type::Int); 360 auto* fi2d = Function(Type::Double)(Type::Float, Type::Int);
351 auto* idif2i = 361 auto* idif2i =
352 Function(Type::Int)(Type::Int, Type::Double, Type::Int, Type::Float); 362 Function(Type::Int)(Type::Int, Type::Double, Type::Int, Type::Float);
353 auto* overload = Overload(idf2v, i2f, /*i2d missing, */ fi2d, idif2i); 363 auto* overload = Overload(idf2v, i2f, /*i2d missing, */ fi2d, idif2i);
354 EXPECT_EQ(Type::Void(), overload->AsCallableType()->ValidateCall(idf2v)); 364 EXPECT_EQ(Type::Void(), overload->AsCallableType()->ValidateCall(idf2v));
355 EXPECT_EQ(Type::Float(), overload->AsCallableType()->ValidateCall(i2f)); 365 EXPECT_EQ(Type::Float(), overload->AsCallableType()->ValidateCall(i2f));
356 EXPECT_EQ(Type::Double(), overload->AsCallableType()->ValidateCall(fi2d)); 366 EXPECT_EQ(Type::Double(), overload->AsCallableType()->ValidateCall(fi2d));
357 EXPECT_EQ(Type::Int(), overload->AsCallableType()->ValidateCall(idif2i)); 367 EXPECT_EQ(Type::Int(), overload->AsCallableType()->ValidateCall(idif2i));
358 EXPECT_EQ(Type::None(), overload->AsCallableType()->ValidateCall(i2d)); 368 EXPECT_EQ(Type::None(), overload->AsCallableType()->ValidateCall(i2d));
359 EXPECT_EQ(Type::None(), i2f->AsCallableType()->ValidateCall(i2d)); 369 EXPECT_EQ(Type::None(), i2f->AsCallableType()->ValidateCall(i2d));
370
371 auto* ffi = Type::FFIType(zone());
372 AsmType* (*kReturnTypes[])() = {
373 Type::Void, Type::Double, Type::Signed,
374 };
375 AsmType* (*kExternTypes[])() = {
376 Type::Double, Type::Signed, Type::FixNum,
377 };
378 for (size_t ii = 0; ii < arraysize(kReturnTypes); ++ii) {
379 for (size_t jj = 0; jj < arraysize(kExternTypes); ++jj) {
380 auto* f = Function(kReturnTypes[ii])(kExternTypes[jj]);
381 EXPECT_EQ(kReturnTypes[ii](), ffi->AsCallableType()->ValidateCall(f))
382 << kReturnTypes[ii]()->Name();
383
384 // Call with extern type should fail.
bradnelson 2016/06/17 23:38:50 Comment seems off here
John 2016/06/20 15:09:53 Done.
385 f = Function(kReturnTypes[ii])(kExternTypes[jj], Type::Int);
386 EXPECT_EQ(Type::None(), ffi->AsCallableType()->ValidateCall(f))
387 << kReturnTypes[ii]()->Name();
388 }
389 }
390
391 auto* ft0 = Type::FunctionTableType(zone(), 10);
392 ft0->AsFunctionTableType()->set_signature(fi2d);
393 EXPECT_EQ(Type::Double(), ft0->AsCallableType()->ValidateCall(fi2d));
394 EXPECT_EQ(Type::None(), ft0->AsCallableType()->ValidateCall(i2d));
395
396 auto* ft1 = Type::FunctionTableType(zone(), 10);
397 EXPECT_EQ(Type::Double(), ft1->AsCallableType()->ValidateCall(fi2d));
398 EXPECT_EQ(Type::Double(), ft1->AsCallableType()->ValidateCall(fi2d));
399 EXPECT_EQ(Type::None(), ft1->AsCallableType()->ValidateCall(i2d));
400 }
401
402 TEST_F(AsmTypeTest, ToReturnType) {
403 std::unordered_map<AsmType*, AsmType*> kToReturnType = {
404 {Type::Signed(), Type::Signed()}, {Type::FixNum(), Type::Signed()},
405 {Type::Double(), Type::Double()}, {Type::Float(), Type::Float()},
406 {Type::Void(), Type::Void()},
407 };
408
409 Type* test_types[] = {
410 #define CREATE(CamelName, string_name, number, parent_types) Type::CamelName(),
411 FOR_EACH_ASM_VALUE_TYPE_LIST(CREATE)
412 #undef CREATE
413 Function(Type::Int)(Type::Double),
414 Function(Type::Int)(Type::DoubleQ),
415 Overload(Function(Type::Int)(Type::Double)),
416 Function(Type::Int)(Type::Int, Type::Int),
417 Type::MinMaxType(zone(), Type::Signed(), Type::Int()),
418 Function(Type::Int)(Type::Float), Type::FroundType(zone()),
419 Type::FFIType(zone()), Type::FunctionTableType(zone(), 10),
420 };
421
422 for (size_t ii = 0; ii < arraysize(test_types); ++ii) {
423 auto* return_type = Type::None();
424 auto to_return_type_iter = kToReturnType.find(test_types[ii]);
425 if (to_return_type_iter != kToReturnType.end()) {
426 return_type = to_return_type_iter->second;
427 }
428 EXPECT_EQ(return_type, test_types[ii]->ToReturnType())
429 << return_type->Name() << " != " << test_types[ii]->ToReturnType();
430 }
360 } 431 }
361 432
362 TEST_F(AsmTypeTest, IsReturnType) { 433 TEST_F(AsmTypeTest, IsReturnType) {
363 Type* test_types[] = { 434 Type* test_types[] = {
364 #define CREATE(CamelName, string_name, number, parent_types) Type::CamelName(), 435 #define CREATE(CamelName, string_name, number, parent_types) Type::CamelName(),
365 FOR_EACH_ASM_VALUE_TYPE_LIST(CREATE) 436 FOR_EACH_ASM_VALUE_TYPE_LIST(CREATE)
366 #undef CREATE 437 #undef CREATE
367 Function(Type::Int)(Type::Double), 438 Function(Type::Int)(Type::Double),
368 Function(Type::Int)(Type::DoubleQ), 439 Function(Type::Int)(Type::DoubleQ),
369 Overload(Function(Type::Int)(Type::Double)), 440 Overload(Function(Type::Int)(Type::Double)),
370 Function(Type::Int)(Type::Int, Type::Int), 441 Function(Type::Int)(Type::Int, Type::Int),
371 Type::MinMaxType(zone(), Type::Signed(), Type::Int()), 442 Type::MinMaxType(zone(), Type::Signed(), Type::Int()),
372 Function(Type::Int)(Type::Float), Type::FroundType(zone()), 443 Function(Type::Int)(Type::Float), Type::FroundType(zone()),
444 Type::FFIType(zone()), Type::FunctionTableType(zone(), 10),
373 }; 445 };
374 446
375 std::unordered_set<Type*> return_types{ 447 std::unordered_set<Type*> return_types{
376 Type::Double(), Type::Signed(), Type::Float(), Type::Void(), 448 Type::Double(), Type::Signed(), Type::Float(), Type::Void(),
377 }; 449 };
378 450
379 for (size_t ii = 0; ii < arraysize(test_types); ++ii) { 451 for (size_t ii = 0; ii < arraysize(test_types); ++ii) {
380 const bool IsReturnType = return_types.count(test_types[ii]); 452 const bool IsReturnType = return_types.count(test_types[ii]);
381 EXPECT_EQ(IsReturnType, test_types[ii]->IsReturnType()) 453 EXPECT_EQ(IsReturnType, test_types[ii]->IsReturnType())
382 << test_types[ii]->Name() 454 << test_types[ii]->Name()
383 << (IsReturnType ? " is not a return type" : " is a return type"); 455 << (IsReturnType ? " is not a return type" : " is a return type");
384 } 456 }
385 } 457 }
386 458
459 TEST_F(AsmTypeTest, ToParameterType) {
460 std::unordered_map<AsmType*, AsmType*> kToParameterType = {
461 {Type::Int(), Type::Int()}, {Type::Signed(), Type::Int()},
462 {Type::Unsigned(), Type::Int()}, {Type::FixNum(), Type::Int()},
463 {Type::Double(), Type::Double()}, {Type::Float(), Type::Float()},
464 };
465
466 Type* test_types[] = {
467 #define CREATE(CamelName, string_name, number, parent_types) Type::CamelName(),
468 FOR_EACH_ASM_VALUE_TYPE_LIST(CREATE)
469 #undef CREATE
470 Function(Type::Int)(Type::Double),
471 Function(Type::Int)(Type::DoubleQ),
472 Overload(Function(Type::Int)(Type::Double)),
473 Function(Type::Int)(Type::Int, Type::Int),
474 Type::MinMaxType(zone(), Type::Signed(), Type::Int()),
475 Function(Type::Int)(Type::Float), Type::FroundType(zone()),
476 Type::FFIType(zone()), Type::FunctionTableType(zone(), 10),
477 };
478
479 for (size_t ii = 0; ii < arraysize(test_types); ++ii) {
480 auto* parameter_type = Type::None();
481 auto to_parameter_type_iter = kToParameterType.find(test_types[ii]);
482 if (to_parameter_type_iter != kToParameterType.end()) {
483 parameter_type = to_parameter_type_iter->second;
484 }
485 EXPECT_EQ(parameter_type, test_types[ii]->ToParameterType())
486 << parameter_type->Name()
487 << " != " << test_types[ii]->ToParameterType();
488 }
489 }
490
387 TEST_F(AsmTypeTest, IsParameterType) { 491 TEST_F(AsmTypeTest, IsParameterType) {
388 Type* test_types[] = { 492 Type* test_types[] = {
389 #define CREATE(CamelName, string_name, number, parent_types) Type::CamelName(), 493 #define CREATE(CamelName, string_name, number, parent_types) Type::CamelName(),
390 FOR_EACH_ASM_VALUE_TYPE_LIST(CREATE) 494 FOR_EACH_ASM_VALUE_TYPE_LIST(CREATE)
391 #undef CREATE 495 #undef CREATE
392 Function(Type::Int)(Type::Double), 496 Function(Type::Int)(Type::Double),
393 Function(Type::Int)(Type::DoubleQ), 497 Function(Type::Int)(Type::DoubleQ),
394 Overload(Function(Type::Int)(Type::Double)), 498 Overload(Function(Type::Int)(Type::Double)),
395 Function(Type::Int)(Type::Int, Type::Int), 499 Function(Type::Int)(Type::Int, Type::Int),
396 Type::MinMaxType(zone(), Type::Signed(), Type::Int()), 500 Type::MinMaxType(zone(), Type::Signed(), Type::Int()),
397 Function(Type::Int)(Type::Float), Type::FroundType(zone()), 501 Function(Type::Int)(Type::Float), Type::FroundType(zone()),
502 Type::FFIType(zone()), Type::FunctionTableType(zone(), 10),
398 }; 503 };
399 504
400 std::unordered_set<Type*> parameter_types{ 505 std::unordered_set<Type*> parameter_types{
401 Type::Double(), Type::Int(), Type::Float(), 506 Type::Double(), Type::Int(), Type::Float(),
402 }; 507 };
403 508
404 for (size_t ii = 0; ii < arraysize(test_types); ++ii) { 509 for (size_t ii = 0; ii < arraysize(test_types); ++ii) {
405 const bool IsParameterType = parameter_types.count(test_types[ii]); 510 const bool IsParameterType = parameter_types.count(test_types[ii]);
406 EXPECT_EQ(IsParameterType, test_types[ii]->IsParameterType()) 511 EXPECT_EQ(IsParameterType, test_types[ii]->IsParameterType())
407 << test_types[ii]->Name() 512 << test_types[ii]->Name()
408 << (IsParameterType ? " is not a parameter type" 513 << (IsParameterType ? " is not a parameter type"
409 : " is a parameter type"); 514 : " is a parameter type");
410 } 515 }
411 } 516 }
412 517
413 TEST_F(AsmTypeTest, IsComparableType) { 518 TEST_F(AsmTypeTest, IsComparableType) {
414 Type* test_types[] = { 519 Type* test_types[] = {
415 #define CREATE(CamelName, string_name, number, parent_types) Type::CamelName(), 520 #define CREATE(CamelName, string_name, number, parent_types) Type::CamelName(),
416 FOR_EACH_ASM_VALUE_TYPE_LIST(CREATE) 521 FOR_EACH_ASM_VALUE_TYPE_LIST(CREATE)
417 #undef CREATE 522 #undef CREATE
418 Function(Type::Int)(Type::Double), 523 Function(Type::Int)(Type::Double),
419 Function(Type::Int)(Type::DoubleQ), 524 Function(Type::Int)(Type::DoubleQ),
420 Overload(Function(Type::Int)(Type::Double)), 525 Overload(Function(Type::Int)(Type::Double)),
421 Function(Type::Int)(Type::Int, Type::Int), 526 Function(Type::Int)(Type::Int, Type::Int),
422 Type::MinMaxType(zone(), Type::Signed(), Type::Int()), 527 Type::MinMaxType(zone(), Type::Signed(), Type::Int()),
423 Function(Type::Int)(Type::Float), Type::FroundType(zone()), 528 Function(Type::Int)(Type::Float), Type::FroundType(zone()),
529 Type::FFIType(zone()), Type::FunctionTableType(zone(), 10),
424 }; 530 };
425 531
426 std::unordered_set<Type*> comparable_types{ 532 std::unordered_set<Type*> comparable_types{
427 Type::Double(), Type::Signed(), Type::Unsigned(), Type::Float(), 533 Type::Double(), Type::Signed(), Type::Unsigned(), Type::Float(),
428 }; 534 };
429 535
430 for (size_t ii = 0; ii < arraysize(test_types); ++ii) { 536 for (size_t ii = 0; ii < arraysize(test_types); ++ii) {
431 const bool IsComparableType = comparable_types.count(test_types[ii]); 537 const bool IsComparableType = comparable_types.count(test_types[ii]);
432 EXPECT_EQ(IsComparableType, test_types[ii]->IsComparableType()) 538 EXPECT_EQ(IsComparableType, test_types[ii]->IsComparableType())
433 << test_types[ii]->Name() 539 << test_types[ii]->Name()
434 << (IsComparableType ? " is not a comparable type" 540 << (IsComparableType ? " is not a comparable type"
435 : " is a comparable type"); 541 : " is a comparable type");
436 } 542 }
437 } 543 }
438 544
439 TEST_F(AsmTypeTest, ElementSizeInBytes) { 545 TEST_F(AsmTypeTest, ElementSizeInBytes) {
440 Type* test_types[] = { 546 Type* test_types[] = {
441 #define CREATE(CamelName, string_name, number, parent_types) Type::CamelName(), 547 #define CREATE(CamelName, string_name, number, parent_types) Type::CamelName(),
442 FOR_EACH_ASM_VALUE_TYPE_LIST(CREATE) 548 FOR_EACH_ASM_VALUE_TYPE_LIST(CREATE)
443 #undef CREATE 549 #undef CREATE
444 Function(Type::Int)(Type::Double), 550 Function(Type::Int)(Type::Double),
445 Function(Type::Int)(Type::DoubleQ), 551 Function(Type::Int)(Type::DoubleQ),
446 Overload(Function(Type::Int)(Type::Double)), 552 Overload(Function(Type::Int)(Type::Double)),
447 Function(Type::Int)(Type::Int, Type::Int), 553 Function(Type::Int)(Type::Int, Type::Int),
448 Type::MinMaxType(zone(), Type::Signed(), Type::Int()), 554 Type::MinMaxType(zone(), Type::Signed(), Type::Int()),
449 Function(Type::Int)(Type::Float), Type::FroundType(zone()), 555 Function(Type::Int)(Type::Float), Type::FroundType(zone()),
556 Type::FFIType(zone()), Type::FunctionTableType(zone(), 10),
450 }; 557 };
451 558
452 auto ElementSizeInBytesForType = [](Type* type) -> int32_t { 559 auto ElementSizeInBytesForType = [](Type* type) -> int32_t {
453 if (type == Type::Int8Array() || type == Type::Uint8Array()) { 560 if (type == Type::Int8Array() || type == Type::Uint8Array()) {
454 return 1; 561 return 1;
455 } 562 }
456 if (type == Type::Int16Array() || type == Type::Uint16Array()) { 563 if (type == Type::Int16Array() || type == Type::Uint16Array()) {
457 return 2; 564 return 2;
458 } 565 }
459 if (type == Type::Int32Array() || type == Type::Uint32Array() || 566 if (type == Type::Int32Array() || type == Type::Uint32Array() ||
(...skipping 16 matching lines...) Expand all
476 Type* test_types[] = { 583 Type* test_types[] = {
477 #define CREATE(CamelName, string_name, number, parent_types) Type::CamelName(), 584 #define CREATE(CamelName, string_name, number, parent_types) Type::CamelName(),
478 FOR_EACH_ASM_VALUE_TYPE_LIST(CREATE) 585 FOR_EACH_ASM_VALUE_TYPE_LIST(CREATE)
479 #undef CREATE 586 #undef CREATE
480 Function(Type::Int)(Type::Double), 587 Function(Type::Int)(Type::Double),
481 Function(Type::Int)(Type::DoubleQ), 588 Function(Type::Int)(Type::DoubleQ),
482 Overload(Function(Type::Int)(Type::Double)), 589 Overload(Function(Type::Int)(Type::Double)),
483 Function(Type::Int)(Type::Int, Type::Int), 590 Function(Type::Int)(Type::Int, Type::Int),
484 Type::MinMaxType(zone(), Type::Signed(), Type::Int()), 591 Type::MinMaxType(zone(), Type::Signed(), Type::Int()),
485 Function(Type::Int)(Type::Float), Type::FroundType(zone()), 592 Function(Type::Int)(Type::Float), Type::FroundType(zone()),
593 Type::FFIType(zone()), Type::FunctionTableType(zone(), 10),
486 }; 594 };
487 595
488 auto LoadTypeForType = [](Type* type) -> Type* { 596 auto LoadTypeForType = [](Type* type) -> Type* {
489 if (type == Type::Int8Array() || type == Type::Uint8Array() || 597 if (type == Type::Int8Array() || type == Type::Uint8Array() ||
490 type == Type::Int16Array() || type == Type::Uint16Array() || 598 type == Type::Int16Array() || type == Type::Uint16Array() ||
491 type == Type::Int32Array() || type == Type::Uint32Array()) { 599 type == Type::Int32Array() || type == Type::Uint32Array()) {
492 return Type::Intish(); 600 return Type::Intish();
493 } 601 }
494 602
495 if (type == Type::Float32Array()) { 603 if (type == Type::Float32Array()) {
(...skipping 16 matching lines...) Expand all
512 Type* test_types[] = { 620 Type* test_types[] = {
513 #define CREATE(CamelName, string_name, number, parent_types) Type::CamelName(), 621 #define CREATE(CamelName, string_name, number, parent_types) Type::CamelName(),
514 FOR_EACH_ASM_VALUE_TYPE_LIST(CREATE) 622 FOR_EACH_ASM_VALUE_TYPE_LIST(CREATE)
515 #undef CREATE 623 #undef CREATE
516 Function(Type::Int)(Type::Double), 624 Function(Type::Int)(Type::Double),
517 Function(Type::Int)(Type::DoubleQ), 625 Function(Type::Int)(Type::DoubleQ),
518 Overload(Function(Type::Int)(Type::Double)), 626 Overload(Function(Type::Int)(Type::Double)),
519 Function(Type::Int)(Type::Int, Type::Int), 627 Function(Type::Int)(Type::Int, Type::Int),
520 Type::MinMaxType(zone(), Type::Signed(), Type::Int()), 628 Type::MinMaxType(zone(), Type::Signed(), Type::Int()),
521 Function(Type::Int)(Type::Float), Type::FroundType(zone()), 629 Function(Type::Int)(Type::Float), Type::FroundType(zone()),
630 Type::FFIType(zone()), Type::FunctionTableType(zone(), 10),
522 }; 631 };
523 632
524 auto StoreTypeForType = [](Type* type) -> Type* { 633 auto StoreTypeForType = [](Type* type) -> Type* {
525 if (type == Type::Int8Array() || type == Type::Uint8Array() || 634 if (type == Type::Int8Array() || type == Type::Uint8Array() ||
526 type == Type::Int16Array() || type == Type::Uint16Array() || 635 type == Type::Int16Array() || type == Type::Uint16Array() ||
527 type == Type::Int32Array() || type == Type::Uint32Array()) { 636 type == Type::Int32Array() || type == Type::Uint32Array()) {
528 return Type::Intish(); 637 return Type::Intish();
529 } 638 }
530 639
531 if (type == Type::Float32Array()) { 640 if (type == Type::Float32Array()) {
(...skipping 10 matching lines...) Expand all
542 for (size_t ii = 0; ii < arraysize(test_types); ++ii) { 651 for (size_t ii = 0; ii < arraysize(test_types); ++ii) {
543 EXPECT_EQ(StoreTypeForType(test_types[ii]), test_types[ii]->StoreType()) 652 EXPECT_EQ(StoreTypeForType(test_types[ii]), test_types[ii]->StoreType())
544 << test_types[ii]->Name(); 653 << test_types[ii]->Name();
545 } 654 }
546 } 655 }
547 656
548 } // namespace 657 } // namespace
549 } // namespace wasm 658 } // namespace wasm
550 } // namespace internal 659 } // namespace internal
551 } // namespace v8 660 } // namespace v8
OLDNEW
« src/wasm/asm-types.cc ('K') | « src/wasm/asm-types.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698