Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge SIMD proposal #1391

Merged
merged 463 commits into from
Nov 18, 2021
Merged

Merge SIMD proposal #1391

merged 463 commits into from
Nov 18, 2021
This pull request is big! We’re only showing the most recent 250 commits.

Commits on Jun 25, 2020

  1. Configuration menu
    Copy the full SHA
    89d1040 View commit details
    Browse the repository at this point in the history

Commits on Jun 30, 2020

  1. Configuration menu
    Copy the full SHA
    d516baa View commit details
    Browse the repository at this point in the history
  2. Merge pull request WebAssembly#260 from ngzhian/i16x8

    Implement i16x8 operations
    ngzhian authored Jun 30, 2020
    Configuration menu
    Copy the full SHA
    f372599 View commit details
    Browse the repository at this point in the history

Commits on Jul 1, 2020

  1. Add i8x16 support (WebAssembly#263)

    Implement add sub neg for i8x16, this passes simd_i8x16_arith.wast.
    ngzhian authored Jul 1, 2020
    Configuration menu
    Copy the full SHA
    6987f8f View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    729c635 View commit details
    Browse the repository at this point in the history
  3. Merge pull request WebAssembly#264 from ngzhian/master

    Merge upstream
    ngzhian authored Jul 1, 2020
    Configuration menu
    Copy the full SHA
    9f1295a View commit details
    Browse the repository at this point in the history

Commits on Jul 14, 2020

  1. Implement 8x16 abs, min_{s,u}, max_{s,u}, avgr_u (WebAssembly#265)

    This passes simd_i8x16_arith2.wast.
    ngzhian authored Jul 14, 2020
    Configuration menu
    Copy the full SHA
    225a9b2 View commit details
    Browse the repository at this point in the history
  2. Support I64x2 (WebAssembly#266)

    Add i64x2.{neg,add,sub,mul}, now simd/simd_i64x2_arith.wast passes.
    ngzhian authored Jul 14, 2020
    Configuration menu
    Copy the full SHA
    7ac7d92 View commit details
    Browse the repository at this point in the history
  3. Update v128.const implementation status for v8 (WebAssembly#268)

    * Update v128.const implementation status for v8
    
    * Add note about Chrome version
    ngzhian authored Jul 14, 2020
    Configuration menu
    Copy the full SHA
    f65d981 View commit details
    Browse the repository at this point in the history

Commits on Jul 24, 2020

  1. Implement v128 bitwise operations (WebAssembly#267)

    Not, and, or, xor, andnot.
    
    Create V128 submodule for vector bitwise ops, converting to i64x2 for the actual operations
    ngzhian authored Jul 24, 2020
    Configuration menu
    Copy the full SHA
    b82988e View commit details
    Browse the repository at this point in the history
  2. Implement v128 boolean operations (WebAssembly#270)

    {i8x16,i16x8,i32x4}_{any_true,all_true}
    
    v128.bitselect is used in the tests (simd_boolean.wast) so implemented
    here using a new AST node, Ternary. Bitselect is the only ternary
    instruction now.
    ngzhian authored Jul 24, 2020
    Configuration menu
    Copy the full SHA
    c8d539e View commit details
    Browse the repository at this point in the history
  3. Add SIMD type and value (WebAssembly#269)

    Packed data is not defined anywhere. We can specify SIMD as a i128
    (128-bit integer). Later when specifying the SIMD instructions, we can
    use some "expansions" to expand i128 into the required lane shapes.
    
    Also, use v128 instead of s128, v128 is already commonly used in many
    places in this proposal, in the BinarySIMD.md, SIMD.md, and reference
    interpreter.
    ngzhian authored Jul 24, 2020
    Configuration menu
    Copy the full SHA
    5247c98 View commit details
    Browse the repository at this point in the history

Commits on Jul 27, 2020

  1. Implement SIMD splats using Convert (WebAssembly#274)

    i8x16, i16x8, i32x4, i64x2, f32x4, f64x2 splats.
    
    Implemented using Convert ast as a splat essentially takes a value of
    every other type to V128.
    ngzhian authored Jul 27, 2020
    Configuration menu
    Copy the full SHA
    129da6c View commit details
    Browse the repository at this point in the history
  2. Implement shl and shr_s for v128 (WebAssembly#272)

    shr_u is a bit more tricky due for I8 and I16. E.g. -128 in I8 has all
    top bits set (sign extended) in an int32, and shr_u using Int's
    implementation will result in 0xffffffc0, instead of 0x000000c0. But we
    can't simply change the implementation, since parsing relies on this
    behavior. I'll figure that out in a later patch.
    ngzhian authored Jul 27, 2020
    Configuration menu
    Copy the full SHA
    5ef6087 View commit details
    Browse the repository at this point in the history
  3. Fix parsing of splat (WebAssembly#277)

    Lost the token in the parser during rebases.
    ngzhian authored Jul 27, 2020
    Configuration menu
    Copy the full SHA
    0419529 View commit details
    Browse the repository at this point in the history
  4. Implement SIMD integer comparisons (WebAssembly#275)

    i8x16, i16x8, i32x4, i64x2 eq, ne, lt_s, lt_u, le_s, le_u, gt_s, gt_u,
    ge_s, ge_u.
    
    Implemented in terms of Binary operations, since they return the same
    v128 type, rather than a boolean like for I32 and I64.
    
    Lanes that compare true return all 1s, otherwise all 0s.
    ngzhian authored Jul 27, 2020
    Configuration menu
    Copy the full SHA
    14772e3 View commit details
    Browse the repository at this point in the history
  5. Implement SIMD float comparisons (WebAssembly#276)

    f32x4, f64x2 eq, ne, lt, le, gt, ge. Similar to integer comparisons,
    this is implemented with the Binary ast node.
    ngzhian authored Jul 27, 2020
    Configuration menu
    Copy the full SHA
    da8e260 View commit details
    Browse the repository at this point in the history
  6. Setup Travis

    binji committed Jul 27, 2020
    Configuration menu
    Copy the full SHA
    5d24c2c View commit details
    Browse the repository at this point in the history
  7. Fix missing parser non-terminal rule for splat (WebAssembly#280)

    This got lost in the rebase too, and WebAssembly#277 only partially fixed it.
    ngzhian authored Jul 27, 2020
    Configuration menu
    Copy the full SHA
    ea4e9e0 View commit details
    Browse the repository at this point in the history
  8. Set OCaml version to 4.08.1 (WebAssembly#279)

    The Bytes [0] functions we use require 4.08.1. This should only be set
    on SIMD repo, since bytes is only used for SIMD implementation. By the
    time we would like to merge this back into main spec, 4.08.1 should
    hopefully be widespread enough for us to bump minimum version of OCaml
    for spec to 4.08.1 too.
    
    [0] https://caml.inria.fr/pub/docs/manual-ocaml/libref/Bytes.html see
    "Binary encoding/decoding of integers"
    ngzhian authored Jul 27, 2020
    Configuration menu
    Copy the full SHA
    0e85e92 View commit details
    Browse the repository at this point in the history

Commits on Aug 3, 2020

  1. Implement extract lane for the remaining shapes (WebAssembly#281)

    i8x16, i16x8, i64x2, f64x2.
    
    Created a new extractop that is based on v128op. Use extension type to
    determine signed or unsigned extract (only used for i8x16 and i16x8).
    ngzhian authored Aug 3, 2020
    Configuration menu
    Copy the full SHA
    766d7aa View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    2bab880 View commit details
    Browse the repository at this point in the history

Commits on Aug 4, 2020

  1. Implement v8x16.swizzle (WebAssembly#283)

    Decided to cheat a little bit, and squeeze v8x16.swizzle into the i8x16
    ast node, so that we don't have to create a new v8x16 data type.
    Semantically it means the same thing, v8x16 is called that way since it
    doesn't treat the underlying data as any particular type, so treating it
    as int will work too.
    ngzhian authored Aug 4, 2020
    Configuration menu
    Copy the full SHA
    c75ca82 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    686463e View commit details
    Browse the repository at this point in the history

Commits on Aug 5, 2020

  1. Implement replace_lane for all shapes (WebAssembly#288)

    The error messages don't match the tests yet (simd_lane.wast), that
    still needs to be worked out in WebAssembly#287.
    ngzhian authored Aug 5, 2020
    Configuration menu
    Copy the full SHA
    377390a View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    21b691f View commit details
    Browse the repository at this point in the history

Commits on Aug 6, 2020

  1. Update lane index errors (WebAssembly#289)

    - lane indices are u8 (nats), negative values are now parse errors ("unexpected token"), as are values with a positive sign +0x1
    - changed a bunch of "expected i8 literal" to "unexpected token", in order to differentiate these syntax errors we probably need to change the parser to match on a bunch of EXTRACT_LANE <token we don't care about>
    - some "type mismatch" are now unexpected token
    
    Fixed WebAssembly#287
    ngzhian authored Aug 6, 2020
    Configuration menu
    Copy the full SHA
    d51c515 View commit details
    Browse the repository at this point in the history
  2. Merge pull request WebAssembly#294 from ngzhian/master

    Merge upstream
    ngzhian authored Aug 6, 2020
    Configuration menu
    Copy the full SHA
    53e783e View commit details
    Browse the repository at this point in the history

Commits on Aug 10, 2020

  1. Fix SIMD trunc sat (WebAssembly#295)

    It was incorrectly using the non-saturing versions, leading to runtime
    traps.
    ngzhian authored Aug 10, 2020
    Configuration menu
    Copy the full SHA
    3426204 View commit details
    Browse the repository at this point in the history

Commits on Aug 12, 2020

  1. Validate lane index (WebAssembly#291)

    * Extract lane, parse error for i8x16 and i16x8
    * Parse error if simd lane index cannot fit in u8
    * Validate lane index in extract and replace
    ngzhian authored Aug 12, 2020
    Configuration menu
    Copy the full SHA
    44e9f89 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    1f035fc View commit details
    Browse the repository at this point in the history
  3. Fix some of the shuffle related error messages (WebAssembly#299)

    - some test cases were not written in the correct text format
    - no more "expected i8 literal", it is now "malformed lane index"
    - "v8x16.shuffle (v128.const)" is parsed as shuffle with no literals, so
    the error is "invalid lane length"
    ngzhian authored Aug 12, 2020
    Configuration menu
    Copy the full SHA
    49eda2a View commit details
    Browse the repository at this point in the history

Commits on Aug 13, 2020

  1. Implement SIMD narrow and widen (WebAssembly#296)

    * Implement SIMD narrow and widen
    
    These are the operations implemented:
    
    - i8x16.narrow_i16x8_s(a: v128, b: v128) -> v128
    - i8x16.narrow_i16x8_u(a: v128, b: v128) -> v128
    - i16x8.narrow_i32x4_s(a: v128, b: v128) -> v128
    - i16x8.narrow_i32x4_u(a: v128, b: v128) -> v128
    - i16x8.widen_low_i8x16_s(a: v128) -> v128
    - i16x8.widen_high_i8x16_s(a: v128) -> v128
    - i16x8.widen_low_i8x16_u(a: v128) -> v128
    - i16x8.widen_high_i8x16_u(a: v128) -> v128
    - i32x4.widen_low_i16x8_s(a: v128) -> v128
    - i32x4.widen_high_i16x8_s(a: v128) -> v128
    - i32x4.widen_low_i16x8_u(a: v128) -> v128
    - i32x4.widen_high_i16x8_u(a: v128) -> v128
    
    This now passes test/core/simd/simd_conversions.wast.
    
    * Fix formatting and ordering of definitions
    
    * Apply suggestions from code review
    
    - Remove unnecessary parens
    - use 0xffl for int32
    - inline the masks
    
    Co-authored-by: Andreas Rossberg <rossberg@mpi-sws.org>
    
    * Have widen take a mask instead of function
    
    * Pass param as int32 to avoid conversions
    
    * Remove _using suffix
    
    Co-authored-by: Andreas Rossberg <rossberg@mpi-sws.org>
    ngzhian and rossberg authored Aug 13, 2020
    Configuration menu
    Copy the full SHA
    3abad5d View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    b9fcded View commit details
    Browse the repository at this point in the history
  3. Implement add_saturate_{sx} and sub_saturate_{sx} (WebAssembly#300)

    These operations are implemented:
    
    - i8x16.add_saturate_s(a: v128, b: v128) -> v128
    - i8x16.add_saturate_u(a: v128, b: v128) -> v128
    - i16x8.add_saturate_s(a: v128, b: v128) -> v128
    - i16x8.add_saturate_u(a: v128, b: v128) -> v128
    - i8x16.sub_saturate_s(a: v128, b: v128) -> v128
    - i8x16.sub_saturate_u(a: v128, b: v128) -> v128
    - i16x8.sub_saturate_s(a: v128, b: v128) -> v128
    - i16x8.sub_saturate_u(a: v128, b: v128) -> v128
    
    This passes simd_i8x16_sat_arith.wast and simd_i16x8_sat_arith.wast.
    ngzhian authored Aug 13, 2020
    Configuration menu
    Copy the full SHA
    06bf5d7 View commit details
    Browse the repository at this point in the history
  4. Implement some binary<->text support for SIMD (WebAssembly#298)

    This is sufficient to pass test/core/simd/simd_i32x4_arith.wast.
    ngzhian authored Aug 13, 2020
    Configuration menu
    Copy the full SHA
    c8be84a View commit details
    Browse the repository at this point in the history

Commits on Aug 14, 2020

  1. Implement binary<->text support for SIMD i8x16 i16x8 i32x4 arithmetic…

    … ops (WebAssembly#303)
    
    This is sufficient to pass:
    - test/core/simd/simd_i32x4_arith2.wast
    - test/core/simd/simd_i8x16_arith.wast
    - test/core/simd/simd_i8x16_arith2.wast
    - test/core/simd/simd_i16x8_arith.wast.
    - test/core/simd/simd_i16x8_arith2.wast
    ngzhian authored Aug 14, 2020
    Configuration menu
    Copy the full SHA
    0bed616 View commit details
    Browse the repository at this point in the history

Commits on Aug 17, 2020

  1. Implement more binary<->text support for SIMD (WebAssembly#304)

    This is sufficient to pass test/core/simd/simd_i64x2_arith.wast.
    ngzhian authored Aug 17, 2020
    Configuration menu
    Copy the full SHA
    6d60a67 View commit details
    Browse the repository at this point in the history
  2. Implement more binary<->text support for SIMD (WebAssembly#305)

    This is sufficient to pass simd_f32x4.wast, simd_f32x4_arith.wast, and
    simd_f32x4_cmp.wast.
    ngzhian authored Aug 17, 2020
    Configuration menu
    Copy the full SHA
    25462e6 View commit details
    Browse the repository at this point in the history
  3. Implement binary<->text support for SIMD f64x2 ops (WebAssembly#308)

    This is sufficient to pass simd_f64x2.wast, simd_f64x2_arith.wast, and
    simd_f64x2_cmp.wast.
    ngzhian authored Aug 17, 2020
    Configuration menu
    Copy the full SHA
    e57649a View commit details
    Browse the repository at this point in the history
  4. Implement more binary<->text support for SIMD (WebAssembly#309)

    This is sufficient to pass simd_i8x16_cmp.wast, simd_i16x8_cmp.wast, and
    simd_i32x4_cmp.wast.
    ngzhian authored Aug 17, 2020
    Configuration menu
    Copy the full SHA
    61eb66c View commit details
    Browse the repository at this point in the history
  5. Implement more binary<->text support for SIMD (WebAssembly#310)

    This is sufficient to pass simd_bitwise.wast.
    ngzhian authored Aug 17, 2020
    Configuration menu
    Copy the full SHA
    d1d2214 View commit details
    Browse the repository at this point in the history
  6. Implement more binary<->text support for SIMD (WebAssembly#312)

    This is sufficient to pass simd_boolean.wast.
    ngzhian authored Aug 17, 2020
    Configuration menu
    Copy the full SHA
    33b5210 View commit details
    Browse the repository at this point in the history

Commits on Aug 18, 2020

  1. Implement more binary<->text support for SIMD (WebAssembly#313)

    This is sufficient to pass simd_load.wast and simd_store.wast. There are
    some extra instructions, like swizzle and i8x16.shl that is implemented
    here, because simd_load.wast uses them.
    ngzhian authored Aug 18, 2020
    Configuration menu
    Copy the full SHA
    5e03088 View commit details
    Browse the repository at this point in the history
  2. Implement binary<->text support for SIMD lane operations (WebAssembly…

    …#314)
    
    This is sufficient to pass simd_lane.wast.
    ngzhian authored Aug 18, 2020
    Configuration menu
    Copy the full SHA
    7ac3c74 View commit details
    Browse the repository at this point in the history

Commits on Aug 19, 2020

  1. Implement binary<->text support for SIMD conversion operations (WebAs…

    …sembly#315)
    
    This is sufficient to pass simd_conversions.wast.
    ngzhian authored Aug 19, 2020
    Configuration menu
    Copy the full SHA
    d1c7783 View commit details
    Browse the repository at this point in the history

Commits on Aug 21, 2020

  1. Implement binary<->text support for SIMD saturating ops and some shif…

    …ts (WebAssembly#317)
    
    This is sufficient to pass simd_splat.wast.
    ngzhian authored Aug 21, 2020
    Configuration menu
    Copy the full SHA
    2d0868d View commit details
    Browse the repository at this point in the history
  2. Implement SIMD shr_u (WebAssembly#311)

    Shifting requires masking i8 and i16 top bits first, since we store them
    sign-extended.
    
    Implement `needs_extend` correctly, previously it was implementing the
    opposite, but it was used by callers correctly, so change all callers
    to use `not needs_extend`.
    ngzhian authored Aug 21, 2020
    Configuration menu
    Copy the full SHA
    b81310b View commit details
    Browse the repository at this point in the history

Commits on Aug 24, 2020

  1. Configuration menu
    Copy the full SHA
    b89087d View commit details
    Browse the repository at this point in the history

Commits on Aug 25, 2020

  1. Implement bitmask for SIMD (WebAssembly#319)

    i8x16.bitmask, i16x8.bitmask, i32x4.bitmask. Add some tests to
    simd_boolean.wast (just a simple correctness check, future work is to
    generate the test, move it into a python script.)
    
    This introduces a new AST, SimdBitmask, since it doesn't really fit in
    with any existing AST (Test returns a bool).
    ngzhian authored Aug 25, 2020
    Configuration menu
    Copy the full SHA
    e2e7006 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    91fe007 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    e06fca2 View commit details
    Browse the repository at this point in the history
  4. Fix to_hex_string for I8 and I16 (WebAssembly#320)

    Print out the full i32 hex string, then extract the lower 2 or 4 chars.
    ngzhian authored Aug 25, 2020
    Configuration menu
    Copy the full SHA
    b7aea06 View commit details
    Browse the repository at this point in the history

Commits on Aug 26, 2020

  1. Complete binary<->text for SIMD shifts (WebAssembly#325)

    Adding all shr_u and also i64x2 shifts.
    ngzhian authored Aug 26, 2020
    Configuration menu
    Copy the full SHA
    6c852bb View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    9f36f3c View commit details
    Browse the repository at this point in the history
  3. Implement SIMD load splat and load extend

    Add more pack types for SIMD load splat and load extends.
    ngzhian committed Aug 26, 2020
    Configuration menu
    Copy the full SHA
    d051fb6 View commit details
    Browse the repository at this point in the history

Commits on Aug 27, 2020

  1. Merge pull request WebAssembly#329 from ngzhian/master

    Merge from upstream spec
    ngzhian authored Aug 27, 2020
    Configuration menu
    Copy the full SHA
    e24bf43 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    9303b60 View commit details
    Browse the repository at this point in the history
  3. Reorder functions

    ngzhian committed Aug 27, 2020
    Configuration menu
    Copy the full SHA
    c5d59f5 View commit details
    Browse the repository at this point in the history
  4. Formatting

    ngzhian committed Aug 27, 2020
    Configuration menu
    Copy the full SHA
    38045d7 View commit details
    Browse the repository at this point in the history
  5. Simplify simd packed loads

    ngzhian committed Aug 27, 2020
    Configuration menu
    Copy the full SHA
    0f07076 View commit details
    Browse the repository at this point in the history

Commits on Aug 28, 2020

  1. Configuration menu
    Copy the full SHA
    e8b2f1f View commit details
    Browse the repository at this point in the history
  2. Implement JS output for SIMD (WebAssembly#331)

    * Implement JS output for SIMD
    
    V128 is not exposed to JS at all, so transform all functions with V128
    in the signatures into consts, compare with the expected value, and
    reduce it to a int32.
    
    An assertion against a SimdResult needs to be converted into a plain
    Const containing a v128. This conversion is tricky since SimdResult can
    contain both LitPat and NanPat. NaNs need special treatment to mask and
    compare to a canonical value. For simplicity, we build a mask for all
    the patterns in a SimdResult (even for literals, which will have a mask
    with all bits set). That way the test is consistent:
    
    - v128.const(mask)
    - v128.and
    - v128.const(expected)
    - i8x16.eq
    - i8x16.all_true
    - br_if 0 to unreachable
    
    * Formatting fixes
    
    Co-authored-by: Andreas Rossberg <rossberg@mpi-sws.org>
    
    * Remove redundant prefixes
    
    Co-authored-by: Andreas Rossberg <rossberg@mpi-sws.org>
    ngzhian and rossberg authored Aug 28, 2020
    Configuration menu
    Copy the full SHA
    403859f View commit details
    Browse the repository at this point in the history

Commits on Aug 31, 2020

  1. Implement SIMD load splat and load extend (WebAssembly#307)

    * Implement SIMD load splat and load extend
    
    Add more pack types for SIMD load splat and load extends.
    
    * Create new pack_simd type and SimdLoad AST
    
    * Reorder functions
    
    * Formatting
    
    * Simplify simd packed loads
    
    * Add SimdStore and make simd_loadop more consistent
    New AST nodes SimdLoad and SimdStore.
    ngzhian authored Aug 31, 2020
    Configuration menu
    Copy the full SHA
    b295c5d View commit details
    Browse the repository at this point in the history
  2. Implement binary<->text support for SIMD load splats and extends

    The names are still pre WebAssembly#297, once that's finalize I can fix this up
    (after the sync WebAssembly#323).
    
    With this change, test/core/run.py passes on all test cases in simd/.
    ngzhian committed Aug 31, 2020
    Configuration menu
    Copy the full SHA
    61085bd View commit details
    Browse the repository at this point in the history
  3. Merge pull request WebAssembly#334 from ngzhian/simd-loads-binary-encode

    Implement binary<->text support for SIMD load splats and extends
    ngzhian authored Aug 31, 2020
    Configuration menu
    Copy the full SHA
    ab14709 View commit details
    Browse the repository at this point in the history
  4. Fix SIMD bitmask (WebAssembly#335)

    Bitmask was confused about endianness. The text format for v128.const is
    little endian, so the lowest lane set translates to the least
    significant bit set.
    ngzhian authored Aug 31, 2020
    Configuration menu
    Copy the full SHA
    bd0f5af View commit details
    Browse the repository at this point in the history

Commits on Sep 1, 2020

  1. Run SIMD tests (WebAssembly#326)

    This enables running all the SIMD tests (in test/core/simd) whenever we
    do `make test`.
    ngzhian authored Sep 1, 2020
    Configuration menu
    Copy the full SHA
    7076939 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    71d4fa7 View commit details
    Browse the repository at this point in the history

Commits on Sep 8, 2020

  1. Rename shuffle and swizzle to i8x16 prefix (WebAssembly#321)

    v8x16.shuffle and v8x16.swizzle is now i8x16.shuffle and i8x16.swizzle
    respectively.
    
    Fixed WebAssembly#316.
    ngzhian authored Sep 8, 2020
    Configuration menu
    Copy the full SHA
    13da962 View commit details
    Browse the repository at this point in the history
  2. Rename SIMD load splats and load extends. (WebAssembly#322)

    Following suggestions in WebAssembly#297, renaming load splats and load extends to
    something more consistent.
    
    Fixed WebAssembly#297.
    ngzhian authored Sep 8, 2020
    Configuration menu
    Copy the full SHA
    3e652c3 View commit details
    Browse the repository at this point in the history
  3. Specify text format for SIMD (WebAssembly#336)

    * Specify text format for SIMD
    
    * Reword description of SIMD memory instructions
    
    Co-authored-by: Ben Smith <binjimin@gmail.com>
    ngzhian and binji authored Sep 8, 2020
    Configuration menu
    Copy the full SHA
    163e122 View commit details
    Browse the repository at this point in the history

Commits on Sep 10, 2020

  1. Shorten saturating instructions to sat (WebAssembly#341)

    Also update the test generation script, and regenerate all test files.
    
    Adressess WebAssembly#332 (not closing so other tools can also use it to track their rename progress).
    ngzhian authored Sep 10, 2020
    Configuration menu
    Copy the full SHA
    e7c2002 View commit details
    Browse the repository at this point in the history

Commits on Sep 11, 2020

  1. Pseudo-Minimum and Pseudo-Maximum instructions (WebAssembly#122)

    Introduce Pseudo-Minimum (`f32x4.pmin` and `f64x2.pmin`) and Pseudo-Maximum (`f32x4.pmax` and `f64x2.pmax`) instructions, which implement Pseudo-Minimum and Pseudo-Maximum operations with slightly different semantics than the Minimum and Maximum in the current spec. Pseudo-Minimum is defined as `pmin(a, b) := b < a ? b : a` and Pseudo-Maximum is defined as `pmax(a, b) := a < b ? b : a`. "Pseudo" in the name refers to the fact that these operations may not return the minimum in case of signed zero inputs, in particular:
    - `pmin(+0.0, -0.0) == +0.0`
    - `pmax(-0.0, +0.0) == -0.0`
    Maratyszcza authored Sep 11, 2020
    Configuration menu
    Copy the full SHA
    e1ff82e View commit details
    Browse the repository at this point in the history
  2. Floating-point rounding instructions (WebAssembly#232)

    New floating-point rounding instructions:
    
    - Round to nearest integer, ties to even: `f32x4.nearest`/`f64x2.nearest`
    - Round to integer towards zero (truncate to integer): `f32x4.trunc`/`f64x2.trunc`
    - Round to integer above (ceiling): `f32x4.ceil`/`f64x2.ceil`
    - Round to integer below (floor): `f32x4.floor`/`f64x2.floor`
    Maratyszcza authored Sep 11, 2020
    Configuration menu
    Copy the full SHA
    8e87db7 View commit details
    Browse the repository at this point in the history

Commits on Sep 17, 2020

  1. Configuration menu
    Copy the full SHA
    1167507 View commit details
    Browse the repository at this point in the history
  2. Inline bytes expansion into text format (WebAssembly#347)

    Also formatting of SIMD instructions
    ngzhian authored Sep 17, 2020
    Configuration menu
    Copy the full SHA
    9576fd0 View commit details
    Browse the repository at this point in the history
  3. Implement floating-point rounding in interpreter (WebAssembly#344)

    Implement f32x4 and f64x2 ceil, floor, trunc, nearest. They have the
    same behavior as the f32 and f64 instructions.
    
    Also implemented to encoding and decoding.
    
    These new instructions were added to simd_f32x4.wast test case, and the
    test generation script is updated with these new instructions.
    ngzhian authored Sep 17, 2020
    Configuration menu
    Copy the full SHA
    da4f63b View commit details
    Browse the repository at this point in the history

Commits on Sep 21, 2020

  1. Configuration menu
    Copy the full SHA
    34a5da5 View commit details
    Browse the repository at this point in the history

Commits on Sep 22, 2020

  1. Configuration menu
    Copy the full SHA
    bbb88f2 View commit details
    Browse the repository at this point in the history
  2. Update implementation status (WebAssembly#355)

    Add pmin/pmax and mark pmin/pmax and floating-point rounding
    instructions as implemented on both V8 and SM (based on this
    mozilla/gecko-dev@8070228).
    ngzhian authored Sep 22, 2020
    Configuration menu
    Copy the full SHA
    65d3504 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    e0fff32 View commit details
    Browse the repository at this point in the history
  4. Implement pmin/pmax in interpreter (WebAssembly#349)

    Implement f32x4 pmin, pmax, and f64x2 pmin, pmax.
    
    Encoding/decoding is included.
    
    Added new test generation scripts and generated tests.
    ngzhian authored Sep 22, 2020
    Configuration menu
    Copy the full SHA
    f49eb17 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    334a923 View commit details
    Browse the repository at this point in the history

Commits on Sep 23, 2020

  1. Configuration menu
    Copy the full SHA
    43825a2 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    9579d43 View commit details
    Browse the repository at this point in the history

Commits on Sep 24, 2020

  1. Configuration menu
    Copy the full SHA
    09a621b View commit details
    Browse the repository at this point in the history

Commits on Sep 28, 2020

  1. Merge pull request WebAssembly#362 from ngzhian/master

    Merge upstream/master
    ngzhian authored Sep 28, 2020
    Configuration menu
    Copy the full SHA
    b00d926 View commit details
    Browse the repository at this point in the history

Commits on Sep 29, 2020

  1. Clean up some SIMD TODOs (WebAssembly#367)

    Replace them with assert false, to indicate that those aren't supposed
    to happen, rather than unimplemented.
    ngzhian authored Sep 29, 2020
    Configuration menu
    Copy the full SHA
    d9e9d22 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    1a08547 View commit details
    Browse the repository at this point in the history

Commits on Oct 5, 2020

  1. Configuration menu
    Copy the full SHA
    8a7c145 View commit details
    Browse the repository at this point in the history

Commits on Oct 6, 2020

  1. Configuration menu
    Copy the full SHA
    9c0aaec View commit details
    Browse the repository at this point in the history

Commits on Oct 8, 2020

  1. Configuration menu
    Copy the full SHA
    1839dc1 View commit details
    Browse the repository at this point in the history
  2. Move simd operations out into a new file (WebAssembly#377)

    * Move simd operations out into a new file
    
    * Rename Ternary to SimdTernary
    ngzhian authored Oct 8, 2020
    Configuration menu
    Copy the full SHA
    73bbae8 View commit details
    Browse the repository at this point in the history

Commits on Oct 15, 2020

  1. Configuration menu
    Copy the full SHA
    8af851e View commit details
    Browse the repository at this point in the history

Commits on Oct 19, 2020

  1. Configuration menu
    Copy the full SHA
    a5eb71a View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    b9b54b0 View commit details
    Browse the repository at this point in the history
  3. i32x4.dot_i16x8_s instruction (WebAssembly#127)

    * i32x4.dot_i16x8_s instruction
    
    * Update proposals/simd/ImplementationStatus.md
    
    Co-authored-by: Thomas Lively <7121787+tlively@users.noreply.github.com>
    
    Co-authored-by: Thomas Lively <7121787+tlively@users.noreply.github.com>
    Maratyszcza and tlively authored Oct 19, 2020
    Configuration menu
    Copy the full SHA
    1cfd484 View commit details
    Browse the repository at this point in the history

Commits on Nov 2, 2020

  1. Implement v128.load32_zero and v128.load64_zero (WebAssembly#388)

    The tests are adapted from load_extend tests.
    ngzhian authored Nov 2, 2020
    Configuration menu
    Copy the full SHA
    2e2e494 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    2f4dc50 View commit details
    Browse the repository at this point in the history

Commits on Nov 4, 2020

  1. Configuration menu
    Copy the full SHA
    4686958 View commit details
    Browse the repository at this point in the history
  2. Update SpiderMonkey implementation status

    Dot and LoadZero landed a while back, should be in FF83.
    lars-t-hansen authored Nov 4, 2020
    Configuration menu
    Copy the full SHA
    9d6d59d View commit details
    Browse the repository at this point in the history
  3. Merge pull request WebAssembly#394 from WebAssembly/ff-impl-status-20…

    …201104
    
    Update SpiderMonkey implementation status
    lars-t-hansen authored Nov 4, 2020
    Configuration menu
    Copy the full SHA
    599b20d View commit details
    Browse the repository at this point in the history
  4. Implement i32x4.dot_i16x8_s (WebAssembly#393)

    It multiplies respective lanes from the 2 input operands, then adds
    adjacent lanes.
    
    This was merged into the proposal in WebAssembly#127.
    ngzhian authored Nov 4, 2020
    Configuration menu
    Copy the full SHA
    d154084 View commit details
    Browse the repository at this point in the history

Commits on Dec 2, 2020

  1. Configuration menu
    Copy the full SHA
    8551a32 View commit details
    Browse the repository at this point in the history

Commits on Dec 8, 2020

  1. Execution semantics (WebAssembly#340)

    - Add execution semantics for SIMD instructions.
    - Add new numeric primitives required for SIMD instructions.
    - Rename auxiliary lanes function to dim (number of elements in a shape)
    - Define auxiliary lanes function to interpret i128 as a sequence of numeric values
    - Define auxiliary saturation operators, and use it for existing trunc sat
    - Fix definition of trunc and convert in SIMD instruction syntax, pull them out into their own production, and add validation for them.
    ngzhian authored Dec 8, 2020
    Configuration menu
    Copy the full SHA
    890c043 View commit details
    Browse the repository at this point in the history

Commits on Dec 11, 2020

  1. Small cleanup of simd exec/instructions (WebAssembly#401)

    - `extend` can have types as params, we don't need to take the bitwidth
    - bunch of places using `i_1^N` or `i_2^N` can be changed to `i^\ast`
    ngzhian authored Dec 11, 2020
    Configuration menu
    Copy the full SHA
    c46c5cf View commit details
    Browse the repository at this point in the history

Commits on Dec 14, 2020

  1. Configuration menu
    Copy the full SHA
    20e914b View commit details
    Browse the repository at this point in the history

Commits on Dec 21, 2020

  1. Fix typo in SIMD.md (WebAssembly#409)

    Anonymous authored Dec 21, 2020
    Configuration menu
    Copy the full SHA
    2fd21c0 View commit details
    Browse the repository at this point in the history

Commits on Jan 11, 2021

  1. i16x8.q15rmul_sat_s instruction (WebAssembly#365)

    Merging with TBD opcodes.
    Maratyszcza authored Jan 11, 2021
    Configuration menu
    Copy the full SHA
    df999c8 View commit details
    Browse the repository at this point in the history
  2. Merge from upstream spec (WebAssembly#407)

    * [spec] automate instruction index rebuild (WebAssembly#1259)
    
    * [test] Add test for malformed functype (WebAssembly#1254)
    
    * [test] Correct tests for missing elements (WebAssembly#1251)
    
    Remove the code section in tests for malformed element section.
    Otherwise the code section id (0x0a) is taken as an element's table
    index what is a validation error.
    
    This is similar to the previously reported issue:
    WebAssembly#1170.
    
    * [test] Add tests for data segment with memidx 1 (WebAssembly#1249)
    
    * [test] Correct i32.store alignment in a LEB128 test (WebAssembly#1261)
    
    In the binary-leb128.wast, change the alignment of an i32.store
    instruction from 3 (invalid) to 2 (the intention suggested by the
    comment).
    
    Co-authored-by: Andreas Rossberg <rossberg@dfinity.org>
    Co-authored-by: Paweł Bylica <chfast@gmail.com>
    3 people authored Jan 11, 2021
    Configuration menu
    Copy the full SHA
    364e89f View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    dc1646a View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    daa35f5 View commit details
    Browse the repository at this point in the history

Commits on Jan 12, 2021

  1. Configuration menu
    Copy the full SHA
    c0a5dde View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    32d700a View commit details
    Browse the repository at this point in the history

Commits on Jan 14, 2021

  1. Configuration menu
    Copy the full SHA
    10d3153 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    0813f85 View commit details
    Browse the repository at this point in the history

Commits on Jan 19, 2021

  1. Update v8 implementation status

    For i64x2.bitmask and ext_mul instructions.
    ngzhian committed Jan 19, 2021
    Configuration menu
    Copy the full SHA
    723c967 View commit details
    Browse the repository at this point in the history

Commits on Jan 26, 2021

  1. Rename i8x16.any_true to v128.any_true and remove other variants

    This was accepted in WebAssembly#416.
    
    The test code is manually modified (this is not generated code), to
    always call v128.any_true. The exported function names are unchanged,
    and no tests are removed, since it is useful to test v128 of
    different constants.
    ngzhian committed Jan 26, 2021
    Configuration menu
    Copy the full SHA
    194b993 View commit details
    Browse the repository at this point in the history
  2. Add i64x2.bitmask to text

    This was accepted into this proposal in WebAssembly#410.
    ngzhian committed Jan 26, 2021
    Configuration menu
    Copy the full SHA
    6ff10c8 View commit details
    Browse the repository at this point in the history
  3. Fix some typos

    ngzhian committed Jan 26, 2021
    Configuration menu
    Copy the full SHA
    73c7608 View commit details
    Browse the repository at this point in the history
  4. One more typo

    ngzhian committed Jan 26, 2021
    Configuration menu
    Copy the full SHA
    dfffd0d View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    e6673a7 View commit details
    Browse the repository at this point in the history

Commits on Jan 27, 2021

  1. [spectext] Rename i8x16.any_true to v128.any_true

    The renaming was accepted in WebAssembly#416. Interpreter was changed in WebAssembly#426. This
    makes similar changes to the formal text.
    ngzhian committed Jan 27, 2021
    Configuration menu
    Copy the full SHA
    89f115d View commit details
    Browse the repository at this point in the history

Commits on Jan 28, 2021

  1. Fix labels for SIMD instructions in gen-index-instructions.py

    Drive-by fix a wrong label in exec/instructions.rst.
    ngzhian committed Jan 28, 2021
    Configuration menu
    Copy the full SHA
    ffe1db3 View commit details
    Browse the repository at this point in the history

Commits on Jan 29, 2021

  1. [interpreter] Implement load lane instructions (WebAssembly#428)

    v128.load8_lane
    v128.load16_lane
    v128.load32_lane
    v128.load64_lane
    
    Introduce a new ast type, SimdLoadLane, since it takes a lane index
    immediate, on top of the usual memarg, and also pops a v128 off, in
    addition to the index.
    
    The exact binary opcodes for these instructions are not yet fixed, I've
    used the ones currently implement in V8 and LLVM/Binaryen, we can change
    those later.
    
    Also added a new test generation script, and the generated test files.
    ngzhian authored Jan 29, 2021
    Configuration menu
    Copy the full SHA
    0cd0a20 View commit details
    Browse the repository at this point in the history

Commits on Jan 30, 2021

  1. Configuration menu
    Copy the full SHA
    c8c0de2 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    394330d View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    3d8c870 View commit details
    Browse the repository at this point in the history

Commits on Feb 1, 2021

  1. Configuration menu
    Copy the full SHA
    dae9f6c View commit details
    Browse the repository at this point in the history

Commits on Feb 2, 2021

  1. Add v128 to JS API (WebAssembly#360)

    Following the description given in
    https://github.com/WebAssembly/simd/blob/master/proposals/simd/SIMD.md#javascript-api-and-simd-values
    and also what I64 did before bigint integration.
    ngzhian authored Feb 2, 2021
    Configuration menu
    Copy the full SHA
    f5c5dcc View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    7266523 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    92ee194 View commit details
    Browse the repository at this point in the history

Commits on Feb 3, 2021

  1. Run simd test cases with make partest (WebAssembly#434)

    * Run simd test cases with make partest
    
    We list all simd test cases in simd/* in TESTFILES, then tweak the
    substitution in quiettest to strip quiettest/ from the front of the
    target, rather than match on just the file name (which loses the simd/)
    prefix.
    
    The temp output file name is unchanged, it uses the base file name (no
    simd/ prefix).
    
    * List all subdirs not just simd/
    
    Co-authored-by: Andreas Rossberg <rossberg@mpi-sws.org>
    ngzhian and rossberg authored Feb 3, 2021
    Configuration menu
    Copy the full SHA
    40b255f View commit details
    Browse the repository at this point in the history
  2. [interpreter] Add i64x2.eq and i64x2.ne

    These instructions were added in WebAssembly#381 and WebAssembly#411 respectively.
    
    The binary opcodes for these are still not finalized, I'm using what V8
    is using for now.
    ngzhian committed Feb 3, 2021
    Configuration menu
    Copy the full SHA
    b638fe3 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    98915d5 View commit details
    Browse the repository at this point in the history
  4. [interpreter] Implement SIMD extended multiply instructions (WebAssem…

    …bly#438)
    
    These were accepted into the proposal in WebAssembly#376.
    
    There are 12 instructions in total:
    
    - i16x8.extmul_{low,high}_i8x16_{s,u}
    - i32x4.extmul_{low,high}_i16x8_{s,u}
    - i64x2.extmul_{low,high}_i32x4_{s,u}
    
    The implementation is straightforward, widen (using existing
    operations), then a multiply with the wider shape.
    
    The binary opcodes are not decided yet, they currently follow the ones
    used in V8, when those are finalized, we can change it to match.
    
    Added a test generation script that reuses some logic in the generator
    for arithmetic instructions. Since these instructions have different
    src and dst shapes, I tweaked the base class to allow for having
    different shapes.
    ngzhian authored Feb 3, 2021
    Configuration menu
    Copy the full SHA
    7c37165 View commit details
    Browse the repository at this point in the history
  5. [spectext] Add i64x2.all_true (WebAssembly#444)

    * [spectext] Add i64x2.all_true
    
    This instruction was accepted into the proposal in WebAssembly#415.
    
    * Simplify syntax/instruction bitmask
    ngzhian authored Feb 3, 2021
    Configuration menu
    Copy the full SHA
    b300c7a View commit details
    Browse the repository at this point in the history

Commits on Feb 4, 2021

  1. Implement i64x2.bitmask (WebAssembly#368)

    This was accepted into this proposal in WebAssembly#410.
    ngzhian committed Feb 4, 2021
    Configuration menu
    Copy the full SHA
    ef06db0 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    25f9d41 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    b6ca6b2 View commit details
    Browse the repository at this point in the history

Commits on Feb 5, 2021

  1. Configuration menu
    Copy the full SHA
    c69b8ef View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    961edc4 View commit details
    Browse the repository at this point in the history

Commits on Feb 9, 2021

  1. [spectext] Add i64x2 signed comparisons

    Previously it was included \ishape.\virelop, but it is incorrect, as we
    don't have i64x2 unsigned comparisons.
    
    i64x2 signed comparisons were added in WebAssembly#412.
    ngzhian committed Feb 9, 2021
    Configuration menu
    Copy the full SHA
    7a8190f View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    a2091ba View commit details
    Browse the repository at this point in the history
  3. [spectext] Add i8x16.popcnt to syntax

    It maps nicely to the existing vunop group, so the validation and
    execution semantics are taken care of.
    
    Drive-by fixes:
    
      - was using NEG instead of VNEG for SIMD negation instruction
      - vunop includes neg twice, since viunop already includes neg.
    ngzhian committed Feb 9, 2021
    Configuration menu
    Copy the full SHA
    dd16427 View commit details
    Browse the repository at this point in the history
  4. Skip _output directory when listing wast files for test. (WebAssembly…

    …#449)
    
    * Skip _output directory when listing wast files for test.
    
    Follow-up to WebAssembly#434.
    Now `make partest && make partest` shouldn't fail.
    
    * Use a simpler glob
    
    Co-authored-by: Andreas Rossberg <rossberg@mpi-sws.org>
    ngzhian and rossberg authored Feb 9, 2021
    Configuration menu
    Copy the full SHA
    0fe0ade View commit details
    Browse the repository at this point in the history
  5. Update simd_i64x2_cmp test output

    I think I missed generating these tests in WebAssembly#440.
    ngzhian committed Feb 9, 2021
    Configuration menu
    Copy the full SHA
    01fdbd3 View commit details
    Browse the repository at this point in the history
  6. [spectext] Add i64x2.widen_{low,high}_i32x4_{s,u} to syntax

    This is a simple change, validation and execution is already
    shape-agnostic, so we only need to add it to the syntax.
    
    Instructions were merged in WebAssembly#290.
    ngzhian committed Feb 9, 2021
    Configuration menu
    Copy the full SHA
    52fac1b View commit details
    Browse the repository at this point in the history
  7. [spectext] Load lane and store lane validation and semantics (WebAsse…

    …mbly#445)
    
    Load lane and store lane instructions added in WebAssembly#350.
    ngzhian authored Feb 9, 2021
    Configuration menu
    Copy the full SHA
    34e195c View commit details
    Browse the repository at this point in the history
  8. [interpreter] Implement i64x2.widen_{low,high}_i32x4_{s,u}

    This was merged in WebAssembly#290.
    
    Also tweaked the file generation scripts:
    
    - Make simd_arithmetic more generic (allow different instruction name
    patterns)
    - create a new file simd_int_to_int_widen to generate all integer
    widening operations (including the ones implemented in this PR)
    - remove widening tests from simd_conversions.wast
    ngzhian committed Feb 9, 2021
    Configuration menu
    Copy the full SHA
    634be58 View commit details
    Browse the repository at this point in the history
  9. [interpreter] Implement i8x16.popcnt (WebAssembly#451)

    Small fix to the test generation script, the order of applying operators
    was incorrect.
    
    Includes a fix to popcnt implementation that is upstream
    (WebAssembly#1286).
    ngzhian authored Feb 9, 2021
    Configuration menu
    Copy the full SHA
    ef343cb View commit details
    Browse the repository at this point in the history
  10. [interpreter] Add i64x2 signed comparisons (WebAssembly#454)

    These instructions were merged in WebAssembly#412.
    
    The binary opcodes are temporary, they will be fixed up when we finalize
    the opcodes.
    ngzhian authored Feb 9, 2021
    Configuration menu
    Copy the full SHA
    17f55c3 View commit details
    Browse the repository at this point in the history

Commits on Feb 10, 2021

  1. [interpreter] Implement i64x2.abs

    This was merged in WebAssembly#413.
    ngzhian committed Feb 10, 2021
    Configuration menu
    Copy the full SHA
    fe63095 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    c300b8a View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    14436c0 View commit details
    Browse the repository at this point in the history
  4. [spec-text] Add i64x2.abs

    This was merged in WebAssembly#413.
    ngzhian committed Feb 10, 2021
    Configuration menu
    Copy the full SHA
    ab6a361 View commit details
    Browse the repository at this point in the history
  5. [spectext] Add i64x2 comparisons to text and binary format

    Missed adding these instructions in previous PRs.
    ngzhian committed Feb 10, 2021
    Configuration menu
    Copy the full SHA
    6dcabf6 View commit details
    Browse the repository at this point in the history

Commits on Feb 11, 2021

  1. [spectext] Add extmul instructions to text/binary formats

    Missed them when adding the syntax and semantics previously.
    ngzhian committed Feb 11, 2021
    Configuration menu
    Copy the full SHA
    ebe26fe View commit details
    Browse the repository at this point in the history
  2. [interpreter] Implement store lane instructions (WebAssembly#435)

    v128.store8_lane
    v128.store16_lane
    v128.store32_lane
    v128.store64_lane
    
    Introduce a new ast type, SimdStoreLane.
    
    The exact binary opcodes for these instructions are not yet fixed, I've
    used the ones currently implement in V8 and LLVM/Binaryen, we can change
    those later.
    
    Also added a new test generation script, and the generated test files.
    
    * Fix indent in lexer
    
    * Simplify simd load/store lane validation
    
    * Inline store_simd_lane into eval.ml
    
    * Inline load_simd_lane into eval.ml
    ngzhian authored Feb 11, 2021
    Configuration menu
    Copy the full SHA
    7c43e09 View commit details
    Browse the repository at this point in the history

Commits on Feb 17, 2021

  1. [spectext] Add i16x8.qmulr_sat_s

    This was merged in WebAssembly#365.
    ngzhian committed Feb 17, 2021
    Configuration menu
    Copy the full SHA
    2d191fe View commit details
    Browse the repository at this point in the history
  2. [interpreter] Implement i16x8.qmulr_sat_s (WebAssembly#463)

    * [interpreter] Implement i16x8.qmulr_sat_s
    
    This was merged in WebAssembly#365.
    
    * Update interpreter/exec/int.ml
    
    Co-authored-by: Andreas Rossberg <rossberg@mpi-sws.org>
    
    Co-authored-by: Andreas Rossberg <rossberg@mpi-sws.org>
    ngzhian and rossberg authored Feb 17, 2021
    Configuration menu
    Copy the full SHA
    2eb77e2 View commit details
    Browse the repository at this point in the history
  3. [interpreter] Implement i32x4.trunc_sat_f64x2_{s,u}_zero (WebAssembly…

    …#466)
    
    * [interpreter] Implement i32x4.trunc_sat_f64x2_{s,u}_zero
    
    This converts 2 f64 to 2 i32, then zeroes the top 2 lanes.
    
    These 2 instructions were merged as part of WebAssembly#383.
    
    This change also refactors some test cases from simd_conversions out
    into a script that generates both i32x4.trunc_sat_i32x4_{s,u} and
    i32x4.trunc_sat_f64x2_{s,u}_zero.
    
    * Add encode/decode
    
    * Update interpreter/exec/simd.ml
    
    Co-authored-by: Andreas Rossberg <rossberg@mpi-sws.org>
    
    Co-authored-by: Andreas Rossberg <rossberg@mpi-sws.org>
    ngzhian and rossberg authored Feb 17, 2021
    Configuration menu
    Copy the full SHA
    bf505da View commit details
    Browse the repository at this point in the history
  4. [spectext] Add load/store lane text and binary format

    Drive-by fix for v128.store definition in gen-index-instructions.py.
    ngzhian committed Feb 17, 2021
    Configuration menu
    Copy the full SHA
    4c8378f View commit details
    Browse the repository at this point in the history
  5. [spectext] Add {f32x4,f64x2}.{pmin,pmax}

    We added these instructions to the syntax in WebAssembly#353, this adds them to the
    other sections, numerics, text, binary.
    ngzhian committed Feb 17, 2021
    Configuration menu
    Copy the full SHA
    77b3177 View commit details
    Browse the repository at this point in the history
  6. [interpreter] Add i64x2.all_true

    This was merged in WebAssembly#415.
    ngzhian committed Feb 17, 2021
    Configuration menu
    Copy the full SHA
    4c442ce View commit details
    Browse the repository at this point in the history

Commits on Feb 18, 2021

  1. [interpreter] Add a missing closing parens

    Missed it in WebAssembly#466.
    ngzhian committed Feb 18, 2021
    Configuration menu
    Copy the full SHA
    31efb15 View commit details
    Browse the repository at this point in the history
  2. [interpreter] f64x2.promote_low_f32x4 and f32x4.demote_f64x2_zero

    These 2 instructions were merged as part of WebAssembly#383.
    
    The test cases are add manually to simd_conversions.wast, using
    constants from test/core/conversions.wast.
    ngzhian committed Feb 18, 2021
    Configuration menu
    Copy the full SHA
    b2e0c76 View commit details
    Browse the repository at this point in the history

Commits on Feb 19, 2021

  1. Configuration menu
    Copy the full SHA
    2c28fa8 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    958c09b View commit details
    Browse the repository at this point in the history

Commits on Feb 23, 2021

  1. [spectext] Rename integer widen instructions to integer extend

    Changes to interpreter will come in a follow-up patch.
    
    Fixed WebAssembly#467.
    ngzhian committed Feb 23, 2021
    Configuration menu
    Copy the full SHA
    64b8775 View commit details
    Browse the repository at this point in the history
  2. [interpreter] Implement f64x2.convert_low_i32x4_{s,u}

    These 2 instructions were merged as part of WebAssembly#383.
    ngzhian committed Feb 23, 2021
    Configuration menu
    Copy the full SHA
    a64adb9 View commit details
    Browse the repository at this point in the history
  3. [interpreter] Implement extadd pairwise instructions

    These 4 instructions:
    
    - i32x4.extadd_pairwise_i16x8_s
    - i32x4.extadd_pairwise_i16x8_u
    - i16x8.extadd_pairwise_i8x16_s
    - i16x8.extadd_pairwise_i8x16_u
    
    were merged in WebAssembly#380.
    
    Drive-by cleanup to meta/README.md to list all generated files.
    ngzhian committed Feb 23, 2021
    Configuration menu
    Copy the full SHA
    a041470 View commit details
    Browse the repository at this point in the history

Commits on Feb 24, 2021

  1. [spectext] Add i32x4.dot_i16x8_s (WebAssembly#475)

    This instruction was added in WebAssembly#127.
    
    Co-authored-by: Andreas Rossberg <rossberg@mpi-sws.org>
    ngzhian and rossberg authored Feb 24, 2021
    Configuration menu
    Copy the full SHA
    7c0ca01 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    33ba45f View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    bc618a3 View commit details
    Browse the repository at this point in the history
  4. [spectext] Add double precision conversion

    Instructions were added in WebAssembly#383.
    
    Consolidate conversion operations (vcvtop) more, merging int-int
    widening operations.
    
    Drive-by fix extmul definition in syntax (shouldn't include the shape).
    ngzhian committed Feb 24, 2021
    Configuration menu
    Copy the full SHA
    cd63ede View commit details
    Browse the repository at this point in the history

Commits on Feb 25, 2021

  1. Check in simd_i64x2_arith2.wast test file

    Missed adding this when implementing i64x2.abs.
    ngzhian committed Feb 25, 2021
    Configuration menu
    Copy the full SHA
    f6671c1 View commit details
    Browse the repository at this point in the history
  2. Fix i32x4.trunc_sat_f64x2_zero

    The zeroed lanes should be the upper 2 lanes. Fix test generation script
    and interpreter.
    ngzhian committed Feb 25, 2021
    Configuration menu
    Copy the full SHA
    b4fde03 View commit details
    Browse the repository at this point in the history
  3. Fix q15 saturating mul

    Forgot to saturate the result in both test generation code and
    interpreter. This fixes both cases.
    ngzhian committed Feb 25, 2021
    Configuration menu
    Copy the full SHA
    770ce64 View commit details
    Browse the repository at this point in the history

Commits on Mar 3, 2021

  1. Update interpreter and text with finalized opcodes

    Opcodes were finalized in WebAssembly#452, this updates the interpreter and spec
    text to use these final opcodes.
    ngzhian committed Mar 3, 2021
    Configuration menu
    Copy the full SHA
    e5ce801 View commit details
    Browse the repository at this point in the history

Commits on Mar 5, 2021

  1. Fix a typo in the f64x2.{pmin,pmax} binary spec

    It looks like these have a typo in copying them over from
    `BinarySIMD.md`
    alexcrichton authored and ngzhian committed Mar 5, 2021
    Configuration menu
    Copy the full SHA
    5c9aeed View commit details
    Browse the repository at this point in the history
  2. Fix instructions in gen-index-instructions

    - i8x16.shuffle has wrong signature
    - i16x8.replace_lane has a typo in signature
    - i16x8.narrow has wrong instruction names
    - sqrt has wrong signature
    ngzhian committed Mar 5, 2021
    Configuration menu
    Copy the full SHA
    466ca5a View commit details
    Browse the repository at this point in the history

Commits on Mar 10, 2021

  1. Check in fixed generated index-instructions.rst

    Fixed the script in 466ca5a but forgot
    to check in the generated output.
    ngzhian committed Mar 10, 2021
    Configuration menu
    Copy the full SHA
    6b8204b View commit details
    Browse the repository at this point in the history

Commits on Mar 11, 2021

  1. Comparison instructions should return -1 in lanes (WebAssembly#493)

    SIMD comparisons return -1 (all bits set) in the lanes. Currently as
    specified, they return 1 (since we use the numeric comparison). We fix
    this by extracting these instructions (virelop and vfrelop) into vrelop,
    and in the execution, sign extend them from i1 to iX (which treats the
    1-bit integer "1" as -1).
    
    Drive-by fix for exec-vbinop, some typos in the execution semantics.
    
    Fixed WebAssembly#441.
    ngzhian authored Mar 11, 2021
    Configuration menu
    Copy the full SHA
    22bd78d View commit details
    Browse the repository at this point in the history
  2. Fix usages of \extend in SIMD instructions (WebAssembly#494)

    \extend takes the bitwidth of type, but we have been passing the number
    of lanes, i.e. for i64x2, we should be passing 64, not 2.
    ngzhian authored Mar 11, 2021
    Configuration menu
    Copy the full SHA
    2c59b1d View commit details
    Browse the repository at this point in the history

Commits on Mar 12, 2021

  1. Configuration menu
    Copy the full SHA
    1faf045 View commit details
    Browse the repository at this point in the history
  2. Fix SIMD implementation get tests passing

    Mostly fixes to add Num due to the num_type v.s. value_type change  in
    ref types proposal.
    
    Moved some code from Eval_numeric into Values to avoid circular imports:
    
    - eval_numeric imports eval_simd
    - both needs the I32Num and TypeError
    ngzhian committed Mar 12, 2021
    Configuration menu
    Copy the full SHA
    510b652 View commit details
    Browse the repository at this point in the history
  3. Fix typo in js-api/index.b

    ngzhian committed Mar 12, 2021
    Configuration menu
    Copy the full SHA
    9da8a61 View commit details
    Browse the repository at this point in the history

Commits on Mar 15, 2021

  1. Merge pull request WebAssembly#495 from ngzhian/merging-upstream

    Merge from upstream spec
    ngzhian authored Mar 15, 2021
    Configuration menu
    Copy the full SHA
    acd913d View commit details
    Browse the repository at this point in the history

Commits on Mar 18, 2021

  1. Small cleanup to num_pat to remove redundant Source.phrase

    Took the chance to clean up the matching logic for SimdResult too.
    ngzhian committed Mar 18, 2021
    Configuration menu
    Copy the full SHA
    886123e View commit details
    Browse the repository at this point in the history

Commits on Mar 23, 2021

  1. Update SpiderMonkey implementation status

    Lars T Hansen committed Mar 23, 2021
    Configuration menu
    Copy the full SHA
    01b4127 View commit details
    Browse the repository at this point in the history
  2. Merge pull request WebAssembly#499 from lars-t-hansen/spidermonkey_co…

    …nformance
    
    Update SpiderMonkey implementation status
    lars-t-hansen authored Mar 23, 2021
    Configuration menu
    Copy the full SHA
    bdcc304 View commit details
    Browse the repository at this point in the history

Commits on Mar 24, 2021

  1. Convert simd instructions in index to use hex

    This follows the recent additions of ref types instructions, which uses
    hex. It also makes it more consistent which the opcode prefix, which is
    in hex.
    ngzhian committed Mar 24, 2021
    Configuration menu
    Copy the full SHA
    a65385e View commit details
    Browse the repository at this point in the history

Commits on Mar 26, 2021

  1. Improve simd_i64x2_cmp.wast

    Fixes WebAssembly#487 by flipping the operands of the `ge_s` and `le_s` tests. This change makes immediately clear when an x86 implementation incorrectly uses the XMM registers; without these tests, running the SIMD suite could pass with an incorrect implementation.
    abrown committed Mar 26, 2021
    Configuration menu
    Copy the full SHA
    5580da2 View commit details
    Browse the repository at this point in the history

Commits on Mar 29, 2021

  1. Merge pull request WebAssembly#501 from abrown/fix-487

    Improve simd_i64x2_cmp.wast
    ngzhian authored Mar 29, 2021
    Configuration menu
    Copy the full SHA
    1618b39 View commit details
    Browse the repository at this point in the history

Commits on Apr 6, 2021

  1. Merge pull request WebAssembly#500 from ngzhian/simd-index-instr

    Convert simd instructions in index to use hex
    ngzhian authored Apr 6, 2021
    Configuration menu
    Copy the full SHA
    c972ba6 View commit details
    Browse the repository at this point in the history

Commits on Apr 7, 2021

  1. Merge pull request WebAssembly#497 from ngzhian/script-pat-cleanup

    Small cleanup to num_pat to remove redundant Source.phrase
    ngzhian authored Apr 7, 2021
    Configuration menu
    Copy the full SHA
    291d2ec View commit details
    Browse the repository at this point in the history

Commits on Apr 22, 2021

  1. Configuration menu
    Copy the full SHA
    5fcd0bd View commit details
    Browse the repository at this point in the history

Commits on Apr 26, 2021

  1. Merge pull request WebAssembly#503 from ngzhian/update-v8-impl-status

    Update V8 implementation status
    ngzhian authored Apr 26, 2021
    Configuration menu
    Copy the full SHA
    de4409b View commit details
    Browse the repository at this point in the history

Commits on May 12, 2021

  1. Configuration menu
    Copy the full SHA
    05d0cb6 View commit details
    Browse the repository at this point in the history

Commits on May 13, 2021

  1. Merge pull request WebAssembly#504 from ngzhian/main

    Merge upstream
    ngzhian authored May 13, 2021
    Configuration menu
    Copy the full SHA
    3c70759 View commit details
    Browse the repository at this point in the history

Commits on May 27, 2021

  1. Configuration menu
    Copy the full SHA
    a7404ca View commit details
    Browse the repository at this point in the history
  2. Merge pull request WebAssembly#505 from WebAssembly/lars-t-hansen-pat…

    …ch-1
    
    Update Firefox implementation status
    ngzhian authored May 27, 2021
    Configuration menu
    Copy the full SHA
    c4e4b96 View commit details
    Browse the repository at this point in the history

Commits on Jun 15, 2021

  1. Add simple JS api test for SIMD (WebAssembly#496)

    Global v128 is not supported.
    ngzhian authored Jun 15, 2021
    Configuration menu
    Copy the full SHA
    b0720df View commit details
    Browse the repository at this point in the history

Commits on Jul 31, 2021

  1. Refactor interpreter

    rossberg committed Jul 31, 2021
    Configuration menu
    Copy the full SHA
    d532655 View commit details
    Browse the repository at this point in the history
  2. Refactor simd pack

    rossberg committed Jul 31, 2021
    Configuration menu
    Copy the full SHA
    ca8ea9a View commit details
    Browse the repository at this point in the history

Commits on Aug 2, 2021

  1. Tweaks

    rossberg committed Aug 2, 2021
    Configuration menu
    Copy the full SHA
    576bcab View commit details
    Browse the repository at this point in the history
  2. Separate v128 from lane ops

    rossberg committed Aug 2, 2021
    Configuration menu
    Copy the full SHA
    89e4f59 View commit details
    Browse the repository at this point in the history
  3. Simplify printing

    rossberg committed Aug 2, 2021
    Configuration menu
    Copy the full SHA
    a373625 View commit details
    Browse the repository at this point in the history
  4. Todos

    rossberg committed Aug 2, 2021
    Configuration menu
    Copy the full SHA
    6ffe701 View commit details
    Browse the repository at this point in the history
  5. Merge pull request WebAssembly#510 from WebAssembly/refactor

    Refactor some SIMD code
    rossberg authored Aug 2, 2021
    Configuration menu
    Copy the full SHA
    cc888ba View commit details
    Browse the repository at this point in the history

Commits on Aug 3, 2021

  1. Configuration menu
    Copy the full SHA
    08a82f9 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    da4e926 View commit details
    Browse the repository at this point in the history
  3. Rename Int/Float to Ixx/Fxx

    rossberg committed Aug 3, 2021
    Configuration menu
    Copy the full SHA
    eb515ca View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    2387754 View commit details
    Browse the repository at this point in the history
  5. Merge pull request WebAssembly#512 from WebAssembly/ixx

    Rename Int/Float modules to Ixx/Fxx
    rossberg authored Aug 3, 2021
    Configuration menu
    Copy the full SHA
    4345d4f View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    04ce4a3 View commit details
    Browse the repository at this point in the history

Commits on Aug 5, 2021

  1. Simd -> Vec

    rossberg committed Aug 5, 2021
    Configuration menu
    Copy the full SHA
    e68f37a View commit details
    Browse the repository at this point in the history
  2. Update README

    rossberg committed Aug 5, 2021
    Configuration menu
    Copy the full SHA
    17c4983 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    b61ed92 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    f6c9635 View commit details
    Browse the repository at this point in the history

Commits on Aug 11, 2021

  1. Rename \vs-ops

    rossberg committed Aug 11, 2021
    Configuration menu
    Copy the full SHA
    b3f039b View commit details
    Browse the repository at this point in the history
  2. Eps

    rossberg committed Aug 11, 2021
    Configuration menu
    Copy the full SHA
    47f7b93 View commit details
    Browse the repository at this point in the history
  3. Merge cvtop reduction

    rossberg committed Aug 11, 2021
    Configuration menu
    Copy the full SHA
    d1dc52c View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    9382cc2 View commit details
    Browse the repository at this point in the history

Commits on Aug 12, 2021

  1. Review comments

    rossberg committed Aug 12, 2021
    Configuration menu
    Copy the full SHA
    e2e5b96 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    7794d59 View commit details
    Browse the repository at this point in the history
  3. Review comments

    rossberg committed Aug 12, 2021
    Configuration menu
    Copy the full SHA
    08aeb77 View commit details
    Browse the repository at this point in the history
  4. More comments

    rossberg committed Aug 12, 2021
    Configuration menu
    Copy the full SHA
    6d7e83d View commit details
    Browse the repository at this point in the history

Commits on Aug 17, 2021

  1. Update BinarySIMD.md (WebAssembly#518)

    Add m:memarg to immediate column for v128.load32_zero and v128.load64_zero
    ngzhian authored Aug 17, 2021
    Configuration menu
    Copy the full SHA
    02cf939 View commit details
    Browse the repository at this point in the history

Commits on Sep 8, 2021

  1. Merge pull request WebAssembly#516 from WebAssembly/vec.spec

    [spec] Rename simd->vec types
    rossberg authored Sep 8, 2021
    Configuration menu
    Copy the full SHA
    a288cc7 View commit details
    Browse the repository at this point in the history
  2. Merge pull request WebAssembly#515 from WebAssembly/refactor.spec

    [spec] Refactor spec to align with interpreter
    rossberg authored Sep 8, 2021
    Configuration menu
    Copy the full SHA
    b9fbe20 View commit details
    Browse the repository at this point in the history

Commits on Sep 17, 2021

  1. Merge from upstream spec

    ngzhian committed Sep 17, 2021
    Configuration menu
    Copy the full SHA
    80c0603 View commit details
    Browse the repository at this point in the history
  2. Name memarg arguments

    ngzhian committed Sep 17, 2021
    Configuration menu
    Copy the full SHA
    a19f219 View commit details
    Browse the repository at this point in the history

Commits on Sep 18, 2021

  1. Configuration menu
    Copy the full SHA
    dec105e View commit details
    Browse the repository at this point in the history

Commits on Sep 29, 2021

  1. Merge pull request WebAssembly#520 from ngzhian/fix-memarg

    Name memarg arguments
    ngzhian authored Sep 29, 2021
    Configuration menu
    Copy the full SHA
    32a461f View commit details
    Browse the repository at this point in the history

Commits on Oct 4, 2021

  1. Add Changelog (WebAssembly#522)

    * Add Changelog
    
    * Comments
    
    * Split narrow
    
    * Regroup instructions
    rossberg authored Oct 4, 2021
    Configuration menu
    Copy the full SHA
    a3e4b05 View commit details
    Browse the repository at this point in the history

Commits on Oct 21, 2021

  1. Configuration menu
    Copy the full SHA
    5ef6f0d View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    c1802b6 View commit details
    Browse the repository at this point in the history

Commits on Nov 4, 2021

  1. Configuration menu
    Copy the full SHA
    e86f7ab View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    73af50a View commit details
    Browse the repository at this point in the history

Commits on Nov 11, 2021

  1. Configuration menu
    Copy the full SHA
    eda5421 View commit details
    Browse the repository at this point in the history

Commits on Nov 15, 2021

  1. Make i8 and i16 work correctly on their own (WebAssembly#528)

    Previously, i8 and i16 was careless w.r.t. the top bits,
    because they were only used by v128, which uses Bytes.get/set that
    appropriate masks the top bits when storing into the byte array.
    
    With this change, i8 and i16 are self contained small integers
    implemented using int32. They are always stored signed-extended, e.g.
    INT8_MIN (-128) is stored as 0xffffff80.
    
    This requires adding sign-extension operation (Rep.sx) in a couple of
    places, that will make sure to extend the sign bit to the rest of the
    int32.
    
    Also add a small, non-exhaustive test for these small integers in a new
    file tests/smallint.ml. This is the first ml test we are adding (all
    previous tests are wasm/wast tests that we run using the interpreter),
    so there are some modifications to the Makefile to build and run this
    test (make smallinttest, make test will also run it).
    
    This test is in the tests/ folder to avoid a conflict with a Makefile goal
    test/x to run x.wast in ../test/core, otherwise it tries to run smallint.ml as
    a wast test.
    
    Co-authored-by: Andreas Rossberg <rossberg@mpi-sws.org>
    ngzhian and rossberg authored Nov 15, 2021
    Configuration menu
    Copy the full SHA
    7ce9b41 View commit details
    Browse the repository at this point in the history

Commits on Nov 16, 2021

  1. Configuration menu
    Copy the full SHA
    9468abb View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    4c2d74d View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    a78b98a View commit details
    Browse the repository at this point in the history
  4. Remove simd meeting notes

    ngzhian committed Nov 16, 2021
    Configuration menu
    Copy the full SHA
    dbb6289 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    dc05aa1 View commit details
    Browse the repository at this point in the history

Commits on Nov 18, 2021

  1. Configuration menu
    Copy the full SHA
    c442ee0 View commit details
    Browse the repository at this point in the history