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

Side by Side Diff: src/compiler/wasm-compiler.cc

Issue 2729943002: [WASM] Implement remaining F32x4 operations for ARM. (Closed)
Patch Set: All FP operations except MinNum, MaxNum, Div, Sqrt. Created 3 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 | « src/compiler/opcodes.h ('k') | src/wasm/wasm-opcodes.h » ('j') | 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 "src/compiler/wasm-compiler.h" 5 #include "src/compiler/wasm-compiler.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "src/assembler-inl.h" 9 #include "src/assembler-inl.h"
10 #include "src/base/platform/elapsed-timer.h" 10 #include "src/base/platform/elapsed-timer.h"
(...skipping 3366 matching lines...) Expand 10 before | Expand all | Expand 10 after
3377 inputs[0]); 3377 inputs[0]);
3378 case wasm::kExprF32x4UConvertI32x4: 3378 case wasm::kExprF32x4UConvertI32x4:
3379 return graph()->NewNode(jsgraph()->machine()->Float32x4FromUint32x4(), 3379 return graph()->NewNode(jsgraph()->machine()->Float32x4FromUint32x4(),
3380 inputs[0]); 3380 inputs[0]);
3381 case wasm::kExprF32x4Abs: 3381 case wasm::kExprF32x4Abs:
3382 return graph()->NewNode(jsgraph()->machine()->Float32x4Abs(), inputs[0]); 3382 return graph()->NewNode(jsgraph()->machine()->Float32x4Abs(), inputs[0]);
3383 case wasm::kExprF32x4Neg: 3383 case wasm::kExprF32x4Neg:
3384 return graph()->NewNode(jsgraph()->machine()->Float32x4Neg(), inputs[0]); 3384 return graph()->NewNode(jsgraph()->machine()->Float32x4Neg(), inputs[0]);
3385 case wasm::kExprF32x4Sqrt: 3385 case wasm::kExprF32x4Sqrt:
3386 return graph()->NewNode(jsgraph()->machine()->Float32x4Sqrt(), inputs[0]); 3386 return graph()->NewNode(jsgraph()->machine()->Float32x4Sqrt(), inputs[0]);
3387 case wasm::kExprF32x4RecipApprox:
3388 return graph()->NewNode(jsgraph()->machine()->Float32x4RecipApprox(),
3389 inputs[0]);
3390 case wasm::kExprF32x4RecipSqrtApprox:
3391 return graph()->NewNode(jsgraph()->machine()->Float32x4RecipSqrtApprox(),
3392 inputs[0]);
3387 case wasm::kExprF32x4Add: 3393 case wasm::kExprF32x4Add:
3388 return graph()->NewNode(jsgraph()->machine()->Float32x4Add(), inputs[0], 3394 return graph()->NewNode(jsgraph()->machine()->Float32x4Add(), inputs[0],
3389 inputs[1]); 3395 inputs[1]);
3390 case wasm::kExprF32x4Sub: 3396 case wasm::kExprF32x4Sub:
3391 return graph()->NewNode(jsgraph()->machine()->Float32x4Sub(), inputs[0], 3397 return graph()->NewNode(jsgraph()->machine()->Float32x4Sub(), inputs[0],
3392 inputs[1]); 3398 inputs[1]);
3393 case wasm::kExprF32x4Mul: 3399 case wasm::kExprF32x4Mul:
3394 return graph()->NewNode(jsgraph()->machine()->Float32x4Mul(), inputs[0], 3400 return graph()->NewNode(jsgraph()->machine()->Float32x4Mul(), inputs[0],
3395 inputs[1]); 3401 inputs[1]);
3396 case wasm::kExprF32x4Div: 3402 case wasm::kExprF32x4Div:
3397 return graph()->NewNode(jsgraph()->machine()->Float32x4Div(), inputs[0], 3403 return graph()->NewNode(jsgraph()->machine()->Float32x4Div(), inputs[0],
3398 inputs[1]); 3404 inputs[1]);
3399 case wasm::kExprF32x4Min: 3405 case wasm::kExprF32x4Min:
3400 return graph()->NewNode(jsgraph()->machine()->Float32x4Min(), inputs[0], 3406 return graph()->NewNode(jsgraph()->machine()->Float32x4Min(), inputs[0],
3401 inputs[1]); 3407 inputs[1]);
3402 case wasm::kExprF32x4Max: 3408 case wasm::kExprF32x4Max:
3403 return graph()->NewNode(jsgraph()->machine()->Float32x4Max(), inputs[0], 3409 return graph()->NewNode(jsgraph()->machine()->Float32x4Max(), inputs[0],
3404 inputs[1]); 3410 inputs[1]);
3411 case wasm::kExprF32x4RecipRefine:
3412 return graph()->NewNode(jsgraph()->machine()->Float32x4RecipRefine(),
3413 inputs[0], inputs[1]);
3414 case wasm::kExprF32x4RecipSqrtRefine:
3415 return graph()->NewNode(jsgraph()->machine()->Float32x4RecipSqrtRefine(),
3416 inputs[0], inputs[1]);
3405 case wasm::kExprF32x4Eq: 3417 case wasm::kExprF32x4Eq:
3406 return graph()->NewNode(jsgraph()->machine()->Float32x4Equal(), inputs[0], 3418 return graph()->NewNode(jsgraph()->machine()->Float32x4Equal(), inputs[0],
3407 inputs[1]); 3419 inputs[1]);
3408 case wasm::kExprF32x4Ne: 3420 case wasm::kExprF32x4Ne:
3409 return graph()->NewNode(jsgraph()->machine()->Float32x4NotEqual(), 3421 return graph()->NewNode(jsgraph()->machine()->Float32x4NotEqual(),
3410 inputs[0], inputs[1]); 3422 inputs[0], inputs[1]);
3411 // TODO(aseemgarg): Get rid of GreaterThan and GreaterThanEquals machine ops
3412 // for all SIMD types.
3413 case wasm::kExprF32x4Gt:
3414 return graph()->NewNode(jsgraph()->machine()->Float32x4GreaterThan(),
3415 inputs[0], inputs[1]);
3416 case wasm::kExprF32x4Ge:
3417 return graph()->NewNode(
3418 jsgraph()->machine()->Float32x4GreaterThanOrEqual(), inputs[0],
3419 inputs[1]);
3420 case wasm::kExprF32x4Lt: 3423 case wasm::kExprF32x4Lt:
3421 return graph()->NewNode(jsgraph()->machine()->Float32x4LessThan(), 3424 return graph()->NewNode(jsgraph()->machine()->Float32x4LessThan(),
3422 inputs[0], inputs[1]); 3425 inputs[0], inputs[1]);
3423 case wasm::kExprF32x4Le: 3426 case wasm::kExprF32x4Le:
3424 return graph()->NewNode(jsgraph()->machine()->Float32x4LessThanOrEqual(), 3427 return graph()->NewNode(jsgraph()->machine()->Float32x4LessThanOrEqual(),
3425 inputs[0], inputs[1]); 3428 inputs[0], inputs[1]);
3429 case wasm::kExprF32x4Gt:
3430 return graph()->NewNode(jsgraph()->machine()->Float32x4LessThan(),
3431 inputs[1], inputs[0]);
3432 case wasm::kExprF32x4Ge:
3433 return graph()->NewNode(jsgraph()->machine()->Float32x4LessThanOrEqual(),
3434 inputs[1], inputs[0]);
3426 case wasm::kExprI32x4Splat: 3435 case wasm::kExprI32x4Splat:
3427 return graph()->NewNode(jsgraph()->machine()->Int32x4Splat(), inputs[0]); 3436 return graph()->NewNode(jsgraph()->machine()->Int32x4Splat(), inputs[0]);
3428 case wasm::kExprI32x4SConvertF32x4: 3437 case wasm::kExprI32x4SConvertF32x4:
3429 return graph()->NewNode(jsgraph()->machine()->Int32x4FromFloat32x4(), 3438 return graph()->NewNode(jsgraph()->machine()->Int32x4FromFloat32x4(),
3430 inputs[0]); 3439 inputs[0]);
3431 case wasm::kExprI32x4UConvertF32x4: 3440 case wasm::kExprI32x4UConvertF32x4:
3432 return graph()->NewNode(jsgraph()->machine()->Uint32x4FromFloat32x4(), 3441 return graph()->NewNode(jsgraph()->machine()->Uint32x4FromFloat32x4(),
3433 inputs[0]); 3442 inputs[0]);
3434 case wasm::kExprI32x4Neg: 3443 case wasm::kExprI32x4Neg:
3435 return graph()->NewNode(jsgraph()->machine()->Int32x4Neg(), inputs[0]); 3444 return graph()->NewNode(jsgraph()->machine()->Int32x4Neg(), inputs[0]);
(...skipping 12 matching lines...) Expand all
3448 case wasm::kExprI32x4MaxS: 3457 case wasm::kExprI32x4MaxS:
3449 return graph()->NewNode(jsgraph()->machine()->Int32x4Max(), inputs[0], 3458 return graph()->NewNode(jsgraph()->machine()->Int32x4Max(), inputs[0],
3450 inputs[1]); 3459 inputs[1]);
3451 case wasm::kExprI32x4Eq: 3460 case wasm::kExprI32x4Eq:
3452 return graph()->NewNode(jsgraph()->machine()->Int32x4Equal(), inputs[0], 3461 return graph()->NewNode(jsgraph()->machine()->Int32x4Equal(), inputs[0],
3453 inputs[1]); 3462 inputs[1]);
3454 case wasm::kExprI32x4Ne: 3463 case wasm::kExprI32x4Ne:
3455 return graph()->NewNode(jsgraph()->machine()->Int32x4NotEqual(), 3464 return graph()->NewNode(jsgraph()->machine()->Int32x4NotEqual(),
3456 inputs[0], inputs[1]); 3465 inputs[0], inputs[1]);
3457 case wasm::kExprI32x4LtS: 3466 case wasm::kExprI32x4LtS:
3458 return graph()->NewNode(jsgraph()->machine()->Int32x4GreaterThan(), 3467 return graph()->NewNode(jsgraph()->machine()->Int32x4LessThan(),
3468 inputs[0], inputs[1]);
3469 case wasm::kExprI32x4LeS:
3470 return graph()->NewNode(jsgraph()->machine()->Int32x4LessThanOrEqual(),
3471 inputs[0], inputs[1]);
3472 case wasm::kExprI32x4GtS:
3473 return graph()->NewNode(jsgraph()->machine()->Int32x4LessThan(),
3459 inputs[1], inputs[0]); 3474 inputs[1], inputs[0]);
3460 case wasm::kExprI32x4LeS: 3475 case wasm::kExprI32x4GeS:
3461 return graph()->NewNode(jsgraph()->machine()->Int32x4GreaterThanOrEqual(), 3476 return graph()->NewNode(jsgraph()->machine()->Int32x4LessThanOrEqual(),
3462 inputs[1], inputs[0]); 3477 inputs[1], inputs[0]);
3463 case wasm::kExprI32x4GtS:
3464 return graph()->NewNode(jsgraph()->machine()->Int32x4GreaterThan(),
3465 inputs[0], inputs[1]);
3466 case wasm::kExprI32x4GeS:
3467 return graph()->NewNode(jsgraph()->machine()->Int32x4GreaterThanOrEqual(),
3468 inputs[0], inputs[1]);
3469 case wasm::kExprI32x4MinU: 3478 case wasm::kExprI32x4MinU:
3470 return graph()->NewNode(jsgraph()->machine()->Uint32x4Min(), inputs[0], 3479 return graph()->NewNode(jsgraph()->machine()->Uint32x4Min(), inputs[0],
3471 inputs[1]); 3480 inputs[1]);
3472 case wasm::kExprI32x4MaxU: 3481 case wasm::kExprI32x4MaxU:
3473 return graph()->NewNode(jsgraph()->machine()->Uint32x4Max(), inputs[0], 3482 return graph()->NewNode(jsgraph()->machine()->Uint32x4Max(), inputs[0],
3474 inputs[1]); 3483 inputs[1]);
3475 case wasm::kExprI32x4LtU: 3484 case wasm::kExprI32x4LtU:
3476 return graph()->NewNode(jsgraph()->machine()->Uint32x4GreaterThan(), 3485 return graph()->NewNode(jsgraph()->machine()->Uint32x4LessThan(),
3486 inputs[0], inputs[1]);
3487 case wasm::kExprI32x4LeU:
3488 return graph()->NewNode(jsgraph()->machine()->Uint32x4LessThanOrEqual(),
3489 inputs[0], inputs[1]);
3490 case wasm::kExprI32x4GtU:
3491 return graph()->NewNode(jsgraph()->machine()->Uint32x4LessThan(),
3477 inputs[1], inputs[0]); 3492 inputs[1], inputs[0]);
3478 case wasm::kExprI32x4LeU:
3479 return graph()->NewNode(
3480 jsgraph()->machine()->Uint32x4GreaterThanOrEqual(), inputs[1],
3481 inputs[0]);
3482 case wasm::kExprI32x4GtU:
3483 return graph()->NewNode(jsgraph()->machine()->Uint32x4GreaterThan(),
3484 inputs[0], inputs[1]);
3485 case wasm::kExprI32x4GeU: 3493 case wasm::kExprI32x4GeU:
3486 return graph()->NewNode( 3494 return graph()->NewNode(jsgraph()->machine()->Uint32x4LessThanOrEqual(),
3487 jsgraph()->machine()->Uint32x4GreaterThanOrEqual(), inputs[0], 3495 inputs[1], inputs[0]);
3488 inputs[1]);
3489 case wasm::kExprI16x8Splat: 3496 case wasm::kExprI16x8Splat:
3490 return graph()->NewNode(jsgraph()->machine()->Int16x8Splat(), inputs[0]); 3497 return graph()->NewNode(jsgraph()->machine()->Int16x8Splat(), inputs[0]);
3491 case wasm::kExprI16x8Neg: 3498 case wasm::kExprI16x8Neg:
3492 return graph()->NewNode(jsgraph()->machine()->Int16x8Neg(), inputs[0]); 3499 return graph()->NewNode(jsgraph()->machine()->Int16x8Neg(), inputs[0]);
3493 case wasm::kExprI16x8Add: 3500 case wasm::kExprI16x8Add:
3494 return graph()->NewNode(jsgraph()->machine()->Int16x8Add(), inputs[0], 3501 return graph()->NewNode(jsgraph()->machine()->Int16x8Add(), inputs[0],
3495 inputs[1]); 3502 inputs[1]);
3496 case wasm::kExprI16x8AddSaturateS: 3503 case wasm::kExprI16x8AddSaturateS:
3497 return graph()->NewNode(jsgraph()->machine()->Int16x8AddSaturate(), 3504 return graph()->NewNode(jsgraph()->machine()->Int16x8AddSaturate(),
3498 inputs[0], inputs[1]); 3505 inputs[0], inputs[1]);
(...skipping 12 matching lines...) Expand all
3511 case wasm::kExprI16x8MaxS: 3518 case wasm::kExprI16x8MaxS:
3512 return graph()->NewNode(jsgraph()->machine()->Int16x8Max(), inputs[0], 3519 return graph()->NewNode(jsgraph()->machine()->Int16x8Max(), inputs[0],
3513 inputs[1]); 3520 inputs[1]);
3514 case wasm::kExprI16x8Eq: 3521 case wasm::kExprI16x8Eq:
3515 return graph()->NewNode(jsgraph()->machine()->Int16x8Equal(), inputs[0], 3522 return graph()->NewNode(jsgraph()->machine()->Int16x8Equal(), inputs[0],
3516 inputs[1]); 3523 inputs[1]);
3517 case wasm::kExprI16x8Ne: 3524 case wasm::kExprI16x8Ne:
3518 return graph()->NewNode(jsgraph()->machine()->Int16x8NotEqual(), 3525 return graph()->NewNode(jsgraph()->machine()->Int16x8NotEqual(),
3519 inputs[0], inputs[1]); 3526 inputs[0], inputs[1]);
3520 case wasm::kExprI16x8LtS: 3527 case wasm::kExprI16x8LtS:
3521 return graph()->NewNode(jsgraph()->machine()->Int16x8GreaterThan(), 3528 return graph()->NewNode(jsgraph()->machine()->Int16x8LessThan(),
3529 inputs[0], inputs[1]);
3530 case wasm::kExprI16x8LeS:
3531 return graph()->NewNode(jsgraph()->machine()->Int16x8LessThanOrEqual(),
3532 inputs[0], inputs[1]);
3533 case wasm::kExprI16x8GtS:
3534 return graph()->NewNode(jsgraph()->machine()->Int16x8LessThan(),
3522 inputs[1], inputs[0]); 3535 inputs[1], inputs[0]);
3523 case wasm::kExprI16x8LeS: 3536 case wasm::kExprI16x8GeS:
3524 return graph()->NewNode(jsgraph()->machine()->Int16x8GreaterThanOrEqual(), 3537 return graph()->NewNode(jsgraph()->machine()->Int16x8LessThanOrEqual(),
3525 inputs[1], inputs[0]); 3538 inputs[1], inputs[0]);
3526 case wasm::kExprI16x8GtS:
3527 return graph()->NewNode(jsgraph()->machine()->Int16x8GreaterThan(),
3528 inputs[0], inputs[1]);
3529 case wasm::kExprI16x8GeS:
3530 return graph()->NewNode(jsgraph()->machine()->Int16x8GreaterThanOrEqual(),
3531 inputs[0], inputs[1]);
3532 case wasm::kExprI16x8AddSaturateU: 3539 case wasm::kExprI16x8AddSaturateU:
3533 return graph()->NewNode(jsgraph()->machine()->Uint16x8AddSaturate(), 3540 return graph()->NewNode(jsgraph()->machine()->Uint16x8AddSaturate(),
3534 inputs[0], inputs[1]); 3541 inputs[0], inputs[1]);
3535 case wasm::kExprI16x8SubSaturateU: 3542 case wasm::kExprI16x8SubSaturateU:
3536 return graph()->NewNode(jsgraph()->machine()->Uint16x8SubSaturate(), 3543 return graph()->NewNode(jsgraph()->machine()->Uint16x8SubSaturate(),
3537 inputs[0], inputs[1]); 3544 inputs[0], inputs[1]);
3538 case wasm::kExprI16x8MinU: 3545 case wasm::kExprI16x8MinU:
3539 return graph()->NewNode(jsgraph()->machine()->Uint16x8Min(), inputs[0], 3546 return graph()->NewNode(jsgraph()->machine()->Uint16x8Min(), inputs[0],
3540 inputs[1]); 3547 inputs[1]);
3541 case wasm::kExprI16x8MaxU: 3548 case wasm::kExprI16x8MaxU:
3542 return graph()->NewNode(jsgraph()->machine()->Uint16x8Max(), inputs[0], 3549 return graph()->NewNode(jsgraph()->machine()->Uint16x8Max(), inputs[0],
3543 inputs[1]); 3550 inputs[1]);
3544 case wasm::kExprI16x8LtU: 3551 case wasm::kExprI16x8LtU:
3545 return graph()->NewNode(jsgraph()->machine()->Uint16x8GreaterThan(), 3552 return graph()->NewNode(jsgraph()->machine()->Uint16x8LessThan(),
3553 inputs[0], inputs[1]);
3554 case wasm::kExprI16x8LeU:
3555 return graph()->NewNode(jsgraph()->machine()->Uint16x8LessThanOrEqual(),
3556 inputs[0], inputs[1]);
3557 case wasm::kExprI16x8GtU:
3558 return graph()->NewNode(jsgraph()->machine()->Uint16x8LessThan(),
3546 inputs[1], inputs[0]); 3559 inputs[1], inputs[0]);
3547 case wasm::kExprI16x8LeU:
3548 return graph()->NewNode(
3549 jsgraph()->machine()->Uint16x8GreaterThanOrEqual(), inputs[1],
3550 inputs[0]);
3551 case wasm::kExprI16x8GtU:
3552 return graph()->NewNode(jsgraph()->machine()->Uint16x8GreaterThan(),
3553 inputs[0], inputs[1]);
3554 case wasm::kExprI16x8GeU: 3560 case wasm::kExprI16x8GeU:
3555 return graph()->NewNode( 3561 return graph()->NewNode(jsgraph()->machine()->Uint16x8LessThanOrEqual(),
3556 jsgraph()->machine()->Uint16x8GreaterThanOrEqual(), inputs[0], 3562 inputs[1], inputs[0]);
3557 inputs[1]);
3558 case wasm::kExprI8x16Splat: 3563 case wasm::kExprI8x16Splat:
3559 return graph()->NewNode(jsgraph()->machine()->Int8x16Splat(), inputs[0]); 3564 return graph()->NewNode(jsgraph()->machine()->Int8x16Splat(), inputs[0]);
3560 case wasm::kExprI8x16Neg: 3565 case wasm::kExprI8x16Neg:
3561 return graph()->NewNode(jsgraph()->machine()->Int8x16Neg(), inputs[0]); 3566 return graph()->NewNode(jsgraph()->machine()->Int8x16Neg(), inputs[0]);
3562 case wasm::kExprI8x16Add: 3567 case wasm::kExprI8x16Add:
3563 return graph()->NewNode(jsgraph()->machine()->Int8x16Add(), inputs[0], 3568 return graph()->NewNode(jsgraph()->machine()->Int8x16Add(), inputs[0],
3564 inputs[1]); 3569 inputs[1]);
3565 case wasm::kExprI8x16AddSaturateS: 3570 case wasm::kExprI8x16AddSaturateS:
3566 return graph()->NewNode(jsgraph()->machine()->Int8x16AddSaturate(), 3571 return graph()->NewNode(jsgraph()->machine()->Int8x16AddSaturate(),
3567 inputs[0], inputs[1]); 3572 inputs[0], inputs[1]);
(...skipping 12 matching lines...) Expand all
3580 case wasm::kExprI8x16MaxS: 3585 case wasm::kExprI8x16MaxS:
3581 return graph()->NewNode(jsgraph()->machine()->Int8x16Max(), inputs[0], 3586 return graph()->NewNode(jsgraph()->machine()->Int8x16Max(), inputs[0],
3582 inputs[1]); 3587 inputs[1]);
3583 case wasm::kExprI8x16Eq: 3588 case wasm::kExprI8x16Eq:
3584 return graph()->NewNode(jsgraph()->machine()->Int8x16Equal(), inputs[0], 3589 return graph()->NewNode(jsgraph()->machine()->Int8x16Equal(), inputs[0],
3585 inputs[1]); 3590 inputs[1]);
3586 case wasm::kExprI8x16Ne: 3591 case wasm::kExprI8x16Ne:
3587 return graph()->NewNode(jsgraph()->machine()->Int8x16NotEqual(), 3592 return graph()->NewNode(jsgraph()->machine()->Int8x16NotEqual(),
3588 inputs[0], inputs[1]); 3593 inputs[0], inputs[1]);
3589 case wasm::kExprI8x16LtS: 3594 case wasm::kExprI8x16LtS:
3590 return graph()->NewNode(jsgraph()->machine()->Int8x16GreaterThan(), 3595 return graph()->NewNode(jsgraph()->machine()->Int8x16LessThan(),
3596 inputs[0], inputs[1]);
3597 case wasm::kExprI8x16LeS:
3598 return graph()->NewNode(jsgraph()->machine()->Int8x16LessThanOrEqual(),
3599 inputs[0], inputs[1]);
3600 case wasm::kExprI8x16GtS:
3601 return graph()->NewNode(jsgraph()->machine()->Int8x16LessThan(),
3591 inputs[1], inputs[0]); 3602 inputs[1], inputs[0]);
3592 case wasm::kExprI8x16LeS: 3603 case wasm::kExprI8x16GeS:
3593 return graph()->NewNode(jsgraph()->machine()->Int8x16GreaterThanOrEqual(), 3604 return graph()->NewNode(jsgraph()->machine()->Int8x16LessThanOrEqual(),
3594 inputs[1], inputs[0]); 3605 inputs[1], inputs[0]);
3595 case wasm::kExprI8x16GtS:
3596 return graph()->NewNode(jsgraph()->machine()->Int8x16GreaterThan(),
3597 inputs[0], inputs[1]);
3598 case wasm::kExprI8x16GeS:
3599 return graph()->NewNode(jsgraph()->machine()->Int8x16GreaterThanOrEqual(),
3600 inputs[0], inputs[1]);
3601 case wasm::kExprI8x16AddSaturateU: 3606 case wasm::kExprI8x16AddSaturateU:
3602 return graph()->NewNode(jsgraph()->machine()->Uint8x16AddSaturate(), 3607 return graph()->NewNode(jsgraph()->machine()->Uint8x16AddSaturate(),
3603 inputs[0], inputs[1]); 3608 inputs[0], inputs[1]);
3604 case wasm::kExprI8x16SubSaturateU: 3609 case wasm::kExprI8x16SubSaturateU:
3605 return graph()->NewNode(jsgraph()->machine()->Uint8x16SubSaturate(), 3610 return graph()->NewNode(jsgraph()->machine()->Uint8x16SubSaturate(),
3606 inputs[0], inputs[1]); 3611 inputs[0], inputs[1]);
3607 case wasm::kExprI8x16MinU: 3612 case wasm::kExprI8x16MinU:
3608 return graph()->NewNode(jsgraph()->machine()->Uint8x16Min(), inputs[0], 3613 return graph()->NewNode(jsgraph()->machine()->Uint8x16Min(), inputs[0],
3609 inputs[1]); 3614 inputs[1]);
3610 case wasm::kExprI8x16MaxU: 3615 case wasm::kExprI8x16MaxU:
3611 return graph()->NewNode(jsgraph()->machine()->Uint8x16Max(), inputs[0], 3616 return graph()->NewNode(jsgraph()->machine()->Uint8x16Max(), inputs[0],
3612 inputs[1]); 3617 inputs[1]);
3613 case wasm::kExprI8x16LtU: 3618 case wasm::kExprI8x16LtU:
3614 return graph()->NewNode(jsgraph()->machine()->Uint8x16GreaterThan(), 3619 return graph()->NewNode(jsgraph()->machine()->Uint8x16LessThan(),
3620 inputs[0], inputs[1]);
3621 case wasm::kExprI8x16LeU:
3622 return graph()->NewNode(jsgraph()->machine()->Uint8x16LessThanOrEqual(),
3623 inputs[0], inputs[1]);
3624 case wasm::kExprI8x16GtU:
3625 return graph()->NewNode(jsgraph()->machine()->Uint8x16LessThan(),
3615 inputs[1], inputs[0]); 3626 inputs[1], inputs[0]);
3616 case wasm::kExprI8x16LeU:
3617 return graph()->NewNode(
3618 jsgraph()->machine()->Uint8x16GreaterThanOrEqual(), inputs[1],
3619 inputs[0]);
3620 case wasm::kExprI8x16GtU:
3621 return graph()->NewNode(jsgraph()->machine()->Uint8x16GreaterThan(),
3622 inputs[0], inputs[1]);
3623 case wasm::kExprI8x16GeU: 3627 case wasm::kExprI8x16GeU:
Mircea Trofin 2017/03/07 22:09:30 Do you think we could do some preprocessor magic w
bbudge 2017/03/07 23:35:20 Yes, very likely, though it would require a "Great
3624 return graph()->NewNode( 3628 return graph()->NewNode(jsgraph()->machine()->Uint8x16LessThanOrEqual(),
3625 jsgraph()->machine()->Uint8x16GreaterThanOrEqual(), inputs[0], 3629 inputs[1], inputs[0]);
3626 inputs[1]);
3627 case wasm::kExprS128And: 3630 case wasm::kExprS128And:
3628 return graph()->NewNode(jsgraph()->machine()->Simd128And(), inputs[0], 3631 return graph()->NewNode(jsgraph()->machine()->Simd128And(), inputs[0],
3629 inputs[1]); 3632 inputs[1]);
3630 case wasm::kExprS128Or: 3633 case wasm::kExprS128Or:
3631 return graph()->NewNode(jsgraph()->machine()->Simd128Or(), inputs[0], 3634 return graph()->NewNode(jsgraph()->machine()->Simd128Or(), inputs[0],
3632 inputs[1]); 3635 inputs[1]);
3633 case wasm::kExprS128Xor: 3636 case wasm::kExprS128Xor:
3634 return graph()->NewNode(jsgraph()->machine()->Simd128Xor(), inputs[0], 3637 return graph()->NewNode(jsgraph()->machine()->Simd128Xor(), inputs[0],
3635 inputs[1]); 3638 inputs[1]);
3636 case wasm::kExprS128Not: 3639 case wasm::kExprS128Not:
(...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after
4237 wasm::ErrorThrower* thrower, Isolate* isolate, 4240 wasm::ErrorThrower* thrower, Isolate* isolate,
4238 wasm::ModuleBytesEnv* module_env, const wasm::WasmFunction* function) { 4241 wasm::ModuleBytesEnv* module_env, const wasm::WasmFunction* function) {
4239 WasmCompilationUnit unit(isolate, module_env, function); 4242 WasmCompilationUnit unit(isolate, module_env, function);
4240 unit.ExecuteCompilation(); 4243 unit.ExecuteCompilation();
4241 return unit.FinishCompilation(thrower); 4244 return unit.FinishCompilation(thrower);
4242 } 4245 }
4243 4246
4244 } // namespace compiler 4247 } // namespace compiler
4245 } // namespace internal 4248 } // namespace internal
4246 } // namespace v8 4249 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/opcodes.h ('k') | src/wasm/wasm-opcodes.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698