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

Initial commit of SIMD support in wasmer. #542

Merged
merged 42 commits into from
Jul 24, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
acbface
Factor out creating wasmparser::ValidatingParserConfig to its own fun…
nlewycky Jun 20, 2019
9579b07
Enable SIMD support in wasmparser.
nlewycky Jul 2, 2019
b8d2aee
Update wabt to 0.8 release.
nlewycky Jul 10, 2019
51556e7
Turn on parsing of SIMD in .wat files.
nlewycky Jul 2, 2019
ea83924
Update to LLVM 8.0.
nlewycky Jul 8, 2019
0a1bdd4
Update to @llvm.minimum/@llvm.maximum which requires LLVM 8.
nlewycky Jul 2, 2019
df5c12c
Add V128 to wasmer runtime. Unimplemented in clif-backend. Other back…
nlewycky Jul 2, 2019
77afcea
Add V128 stubs to allow LLVM backend to build again.
nlewycky Jul 2, 2019
3ba8100
Add V128 stubs to allow singlepass backend to build again.
nlewycky Jul 2, 2019
fdc1356
Initial implementation of SIMD in the LLVM backend.
nlewycky Jul 2, 2019
bb30434
This .into_iter() call is equivalent to .iter() and will not move the…
nlewycky Jul 2, 2019
f4af4e3
Stub out support for V128 in the C API for now.
nlewycky Jul 3, 2019
1ac2416
Add changelog entry.
nlewycky Jul 2, 2019
53907b0
Update inkwell to our own copy until upstream supports LLVM 8.
nlewycky Jul 10, 2019
e412343
Reformat.
nlewycky Jul 10, 2019
702125e
Fill in changelog entry.
nlewycky Jul 10, 2019
a14d2b2
Added simd tests for llvm
syrusakbary Jul 10, 2019
e980931
Added simd spectest file
syrusakbary Jul 10, 2019
eeac6d5
Merge branch 'master' of github.com:wasmerio/wasmer into simd
nlewycky Jul 17, 2019
3be6a02
Fix bugs in V128 support based on results from testing against simd s…
nlewycky Jul 18, 2019
ea93b68
Bump size of global up to 128 bits.
nlewycky Jul 18, 2019
3e009c5
Reformat.
nlewycky Jul 18, 2019
cd25356
Fix shuffle and enable tests. Add support for new load_splat instruct…
nlewycky Jul 19, 2019
fc93571
Merge branch 'master' of github.com:wasmerio/wasmer into simd
nlewycky Jul 19, 2019
775c120
Update to newer wasmerio/wabt-rs.
nlewycky Jul 19, 2019
f8e8b1c
Update to latest wasmer clif branch.
nlewycky Jul 22, 2019
4535274
Update the loader interface for 128 bit types.
nlewycky Jul 22, 2019
18307bb
Improve panic/unreachable/unimplemented usage. Refactor a little.
nlewycky Jul 22, 2019
a301c7a
Updated LLVM to 8.0
syrusakbary Jul 22, 2019
d6546f7
Write out full 128 bit return value.
nlewycky Jul 22, 2019
4b77fae
Temporarily disable kernel-loader by adding a panic! to kwasmd.
nlewycky Jul 22, 2019
fadb975
Fixed macos check
syrusakbary Jul 23, 2019
5ef19b7
Updated README
syrusakbary Jul 23, 2019
fe2bd6a
Add missing names to LLVM instructions.
nlewycky Jul 23, 2019
16fe3ce
Merge branch 'master' into simd
nlewycky Jul 23, 2019
0ed104b
Remove incorrect comment -- wasmer does support mutable globals.
nlewycky Jul 24, 2019
f763de9
Update to wabt 0.9.0.
nlewycky Jul 24, 2019
5c1b7d2
Adds the SIMD tests from binaryren, updated to work with wasmer.
nlewycky Jul 24, 2019
4b1bc24
Update cranelift to the version crates.io.
nlewycky Jul 24, 2019
f624072
Merge branch 'master' into simd
nlewycky Jul 24, 2019
361a027
Only enable SIMD when using the LLVM backend.
nlewycky Jul 24, 2019
624f345
Merge branch 'master' into simd
nlewycky Jul 24, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@ install:
# # Install LLVM
# - mkdir C:\projects\deps
# - cd C:\projects\deps
# - appveyor DownloadFile http://prereleases.llvm.org/win-snapshots/LLVM-7.0.0-r336178-win64.exe -FileName llvm.exe
# - appveyor DownloadFile https://prereleases.llvm.org/win-snapshots/LLVM-8.0.0-r351033-win64.exe -FileName llvm.exe
# - 7z x llvm.exe -oC:\projects\deps\llvm
# # - set "PATH=%PATH%;C:\projects\deps\llvm\bin"
# - set "LLD_LINK=C:\projects\deps\llvm\bin\lld-link.exe"
# - set "LLVM_SYS_70_PREFIX=C:\projects\deps\llvm"
# - set "LLVM_SYS_80_PREFIX=C:\projects\deps\llvm"
# - cd "%APPVEYOR_BUILD_FOLDER%"

# Install Rust
Expand Down
31 changes: 16 additions & 15 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
run_with_build_env_vars: &run_with_build_env_vars
environment:
LLVM_SYS_70_PREFIX: /home/circleci/project/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04/
LLVM_SYS_80_PREFIX: /home/circleci/project/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/

run_install_dependencies: &run_install_dependencies
run:
name: install dependencies
command: |
sudo apt-get install -y cmake
curl -O https://releases.llvm.org/7.0.0/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz
tar xf clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz
curl -O https://releases.llvm.org/8.0.0/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz
tar xf clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz

version: 2
jobs:
Expand Down Expand Up @@ -149,8 +149,8 @@ jobs:
tar xf cmake-3.4.1-Darwin-x86_64.tar.gz
export PATH="`pwd`/cmake-3.4.1-Darwin-x86_64/CMake.app/Contents/bin:$PATH"
# Installing LLVM outside of brew
curl -O https://releases.llvm.org/7.0.0/clang+llvm-7.0.0-x86_64-apple-darwin.tar.xz
tar xf clang+llvm-7.0.0-x86_64-apple-darwin.tar.xz
curl -O https://releases.llvm.org/8.0.0/clang+llvm-8.0.0-x86_64-apple-darwin.tar.xz
tar xf clang+llvm-8.0.0-x86_64-apple-darwin.tar.xz
- run:
name: Install Rust
command: |
Expand All @@ -162,7 +162,7 @@ jobs:
command: |
export PATH="$HOME/.cargo/bin:$PATH"
export PATH="`pwd`/cmake-3.4.1-Darwin-x86_64/CMake.app/Contents/bin:$PATH"
export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-apple-darwin/"
export LLVM_SYS_80_PREFIX="`pwd`/clang+llvm-8.0.0-x86_64-apple-darwin/"
# We increase the ulimit for fixing cargo unclosed files in mac
ulimit -n 8000
sudo sysctl -w kern.maxfiles=655360 kern.maxfilesperproc=327680
Expand All @@ -171,6 +171,7 @@ jobs:
name: Check
command: |
export PATH="$HOME/.cargo/bin:$PATH"
export LLVM_SYS_80_PREFIX="`pwd`/clang+llvm-8.0.0-x86_64-apple-darwin/"
make check
- run:
name: Release
Expand All @@ -182,7 +183,7 @@ jobs:
command: |
export PATH="$HOME/.cargo/bin:$PATH"
export PATH="`pwd`/cmake-3.4.1-Darwin-x86_64/CMake.app/Contents/bin:$PATH"
export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-apple-darwin/"
export LLVM_SYS_80_PREFIX="`pwd`/clang+llvm-8.0.0-x86_64-apple-darwin/"
make integration-tests
- save_cache:
paths:
Expand Down Expand Up @@ -213,18 +214,18 @@ jobs:
name: Install dependencies
command: |
sudo apt-get install -y cmake
curl -O https://releases.llvm.org/7.0.0/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz
tar xf clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz
curl -O https://releases.llvm.org/8.0.0/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz
tar xf clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz
- run: rustup default nightly-2019-06-10
- run:
name: Tests
command: |
export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04/"
export LLVM_SYS_80_PREFIX="`pwd`/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/"
make test
- run:
name: Release Build
command: |
export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04/"
export LLVM_SYS_80_PREFIX="`pwd`/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/"
make release
cargo build --release --manifest-path wapm-cli/Cargo.toml --features "telemetry update-notifications"
mkdir -p artifacts
Expand Down Expand Up @@ -275,8 +276,8 @@ jobs:
tar xf cmake-3.4.1-Darwin-x86_64.tar.gz
export PATH="`pwd`/cmake-3.4.1-Darwin-x86_64/CMake.app/Contents/bin:$PATH"
# Installing LLVM outside of brew
curl -O https://releases.llvm.org/7.0.0/clang+llvm-7.0.0-x86_64-apple-darwin.tar.xz
tar xf clang+llvm-7.0.0-x86_64-apple-darwin.tar.xz
curl -O https://releases.llvm.org/8.0.0/clang+llvm-8.0.0-x86_64-apple-darwin.tar.xz
tar xf clang+llvm-8.0.0-x86_64-apple-darwin.tar.xz
- run:
name: Install Rust
command: |
Expand All @@ -288,7 +289,7 @@ jobs:
command: |
export PATH="`pwd`/cmake-3.4.1-Darwin-x86_64/CMake.app/Contents/bin:$PATH"
export PATH="$HOME/.cargo/bin:$PATH"
export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-apple-darwin/"
export LLVM_SYS_80_PREFIX="`pwd`/clang+llvm-8.0.0-x86_64-apple-darwin/"
# We increase the ulimit for fixing cargo unclosed files in mac
ulimit -n 8000
sudo sysctl -w kern.maxfiles=655360 kern.maxfilesperproc=327680
Expand All @@ -299,7 +300,7 @@ jobs:
command: |
export PATH="`pwd`/cmake-3.4.1-Darwin-x86_64/CMake.app/Contents/bin:$PATH"
export PATH="$HOME/.cargo/bin:$PATH"
export LLVM_SYS_70_PREFIX="`pwd`/clang+llvm-7.0.0-x86_64-apple-darwin/"
export LLVM_SYS_80_PREFIX="`pwd`/clang+llvm-8.0.0-x86_64-apple-darwin/"
make release
cargo build --release --manifest-path wapm-cli/Cargo.toml --features "telemetry update-notifications"
mkdir -p artifacts
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ All PRs to the Wasmer repository must add to this file.
Blocks of changes will separated by version increments.

## **[Unreleased]**
- [#542](https://github.com/wasmerio/wasmer/pull/542) Add SIMD support to wasmer and implement it in the LLVM backend only.

## 0.5.7
- [#575](https://github.com/wasmerio/wasmer/pull/575) Prepare for release; update wapm to 0.3.6
Expand Down
Loading