• Ng Zhi An's avatar
    [wasm-simd][liftoff][x64][ia32] Implement load extend · dd19a400
    Ng Zhi An authored
    The operations are implemented:
    
    - i16x8.load8x8_s
    - i16x8.load8x8_u
    - i32x4.load16x4_s
    - i32x4.load16x4_u
    - i64x2.load32x2_s
    - i64x2.load32x2_u
    
    on x64 and i32. The rest of the arch currently bail out, and will be
    implemented in subsequent patches.
    
    The liftoff-compiler.cc code looks very similar to the one for LoadMem,
    the only difference is special handling of kSplat v.s. kExtend. kExtend
    always loads 8 bytes, so the bounds check and tracing is different.
    Compared to LoadMem there is less need for pinning, since the result is
    always going to be in a SIMD/FP register, which is different from the
    index/addr register.
    
    The enum LoadTransformationKind was moved from
    function-body-decoder-impl.h to function-body-decoder.h so that no
    unncessary header file inclusions were needed to liftoff, and also it's
    a better place for it to live.
    
    Bug: v8:9909
    Change-Id: I926bcc01c0c3c860223e8c08f91bc4ab3b75c399
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2203730
    Commit-Queue: Zhi An Ng <zhin@chromium.org>
    Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#67914}
    dd19a400
liftoff-assembler-arm64.h 80.2 KB