• bbudge's avatar
    [WASM SIMD] Implement primitive shuffles. · 5806d862
    bbudge authored
    - Adds unary Reverse shuffles (swizzles): S32x2Reverse, S16x4Reverse,
      S16x2Reverse, S8x8Reverse, S8x4Reverse, S8x2Reverse. Reversals are
      done within the sub-vectors that prefix the opcode name, e.g. S8x2
      reverses the 8 consecutive pairs in an S8x16 vector.
    
    - Adds binary Zip (interleave) left and right half-shuffles to return a
      single vector: S32x4ZipLeft, S32x4ZipRightS16x8ZipLeft, S16x8ZipRight,
      S8x16ZipLeft, S8x16ZipRight.
    
    - Adds binary Unzip (de-interleave) left and right half shuffles to return
      a single vector: S32x4UnzipLeft, S32x4UnzipRight, S16x8UnzipLeft,
      S16x8UnzipRight, S8x16UnzipLeft, S8x16UnzipRight.
    
    - Adds binary Transpose left and right half shuffles to return
      a single vector: S32x4TransposeLeft, S32x4TransposeRight,
      S16x8TransposeLeft, S16xTransposeRight, S8x16TransposeLeft,
      S8x16TransposeRight.
    
    - Adds binary Concat (concatenate) byte shuffle: S8x16Concat #bytes to
      paste two vectors together.
    
    LOG=N
    BUG=v8:6020
    
    Review-Url: https://codereview.chromium.org/2801183002
    Cr-Commit-Position: refs/heads/master@{#44734}
    5806d862
instruction-selector.cc 107 KB