Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |