Nick Lewycky
813f6414e0
Remove dead functions, don't leave them commented out.
2019-10-21 11:16:51 -07:00
Nick Lewycky
10dddf9904
Fix repeated typo in comment.
2019-10-18 16:34:45 -07:00
Nick Lewycky
b180a2e14c
Get aggressive about running cargo check over all packages with all features.
...
Fixes the one issue uncovered. The capstone disassembling support in the LLVM backend was broken. Fixed by removing it. Instead, use the `--llvm-object-file` flag to get a finished object file to disassemble with any disassembler.
2019-10-17 15:37:35 -07:00
Nick Lewycky
2c5c1b1c2c
For floating point operations, allow inputs to be arbitrary, including SNaNs.
...
Instead of ensuring outputs are arithmetic NaNs on every function, we tag them as pending such a check, so that a sequence of computation can have a single canonicalization step at the end.
There's an extra wriggle for SIMD. The Wasm type system only indicates them as V128, so it's possible that we might do computations as F32x4Add, I8x16Add, F64x2Add in a row with no other computations in between. Thus, most SIMD functions apply pending canonicalizations to their inputs, even integer SIMD operations.
2019-10-17 11:55:01 -07:00
bors[bot]
2695093a03
Merge #863
...
863: Rewrite Min/Max to handle all cases correctly. Fixes 545 spectest failures. r=nlewycky a=nlewycky
# Description
The llvm backend was not quite following the Wasm spec for {F32,F64,F32x4xF64x2}{Min,Max}. We used the `@llvm.minnum` and `@llvm.maxnum` intrinsics which don't handle the corner cases the same. When we tried to use `@llvm.minimum` and `@llvm.maximum` which do, we get an internal error from the x86 backend. I was hoping that crash would go away with the upgrade to LLVM 9, but it does not.
Reimplement these operations using plain LLVM instructions.
# Review
- [x] Add a short description of the the change to the CHANGELOG.md file
Co-authored-by: Nick Lewycky <nick@wasmer.io>
2019-10-09 22:24:07 +00:00
bors[bot]
88f126a00b
Merge #870
...
870: Fix unused value warning due to inkwell API change. NFC. r=nlewycky a=nlewycky
# Description
Fix unused value warning due to inkwell API change. No functionality change.
Co-authored-by: Nick Lewycky <nick@wasmer.io>
2019-10-08 23:56:10 +00:00
Nick Lewycky
c61cbf6c0b
Add a comment.
2019-10-08 11:25:10 -07:00
Nick Lewycky
afddbb2b2a
Remove unused value warning due to inkwell API change. NFC.
2019-10-07 17:16:52 -07:00
Nick Lewycky
9cdfb48d0c
The i1 argument is actually named "is_zero_undef" which we want to be false.
...
Fixes the test failures that showed up on mac.
2019-10-07 17:11:59 -07:00
Nick Lewycky
749691ca2a
Add a comment explaining why we don't use the intrinsics for these.
2019-10-04 11:50:11 -07:00
Nick Lewycky
1a7f00f0af
Rewrite Min/Max to handle all cases correctly.
...
Fixes 545 spectest failures.
2019-10-03 18:19:12 -07:00
Mark McCaskey
c77cbc1f40
Prepare for 0.8.0 release
2019-10-02 15:40:35 -07:00
Jordan Danford
9be72e6808
Fix some other files too
2019-09-30 22:50:04 -07:00
Brandon Fish
c69cdeca9b
Update cranelift backend to fork version 0.44.0
2019-09-25 23:37:39 -05:00
Syrus
7bf306eb27
Use flat-square style in downloads button
2019-09-24 13:42:17 -07:00
Syrus
621ef56ab6
lmproved READMEs to use Azure Pipelines badges and better lgo
2019-09-24 13:36:31 -07:00
Brandon Fish
a1a88c6eb8
Use the default features for wasmparser
2019-09-21 13:59:08 -05:00
Brandon Fish
f48d6f6690
Cranelift backend update to fork of clif version 0.43.1
2019-09-21 13:06:54 -05:00
Mark McCaskey
bf396ec76d
Remove patch version in deps when not necessary
2019-09-20 16:11:09 -07:00
Patrick Ventuzelo
726269a52c
fix missing info error
2019-09-17 12:05:00 +02:00
Patrick Ventuzelo
4190f01195
remove panic and unimplemented in llvm-backend and runtime-core
2019-09-17 12:03:03 +02:00
Nick Lewycky
59597b9e83
Switch from PIC+Default (small) to Static+Large. Should fix flaky test failures.
2019-09-16 10:49:39 -07:00
Nick Lewycky
8dd82c05e6
Implement atomic load and store instructions with actual atomics in the LLVM backend.
...
Includes a run of `cargo update` to pick up the newer inkwell required.
2019-09-13 12:05:55 -07:00
Mark McCaskey
33811cde37
Fix mistake in version update; generate lock file
2019-09-12 12:49:11 -07:00
Mark McCaskey
0f4d266e4e
Prepare for 0.7.0 release
2019-09-12 12:44:38 -07:00
dependabot-preview[bot]
009bb67686
Bump lazy_static from 1.3.0 to 1.4.0
...
Bumps [lazy_static](https://github.com/rust-lang-nursery/lazy-static.rs ) from 1.3.0 to 1.4.0.
- [Release notes](https://github.com/rust-lang-nursery/lazy-static.rs/releases )
- [Commits](https://github.com/rust-lang-nursery/lazy-static.rs/compare/1.3.0...1.4.0 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-09 23:02:16 +00:00
Syrus
d8471e2b6a
Improved docs with custom logo and favicon
2019-09-03 17:06:31 -07:00
dependabot-preview[bot]
616b768529
Bump winapi from 0.3.7 to 0.3.8
...
Bumps [winapi](https://github.com/retep998/winapi-rs ) from 0.3.7 to 0.3.8.
- [Release notes](https://github.com/retep998/winapi-rs/releases )
- [Commits](https://github.com/retep998/winapi-rs/compare/0.3.7...0.3.8 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-02 09:11:48 +00:00
losfair
212e2be166
Remove -fno-rtti
2019-08-22 22:58:08 -07:00
losfair
613e4de9fc
Fix LLVM object loader exceptions.
2019-08-22 18:57:26 -07:00
losfair
bdcd73cd63
Unblock signals in LLVM trap handler.
2019-08-22 17:45:52 -07:00
losfair
f503764780
Restore previous unwind_state.
2019-08-22 17:22:33 -07:00
losfair
d7c5bb904e
Only disallow dead code in llvm-backend for non-Windows environments.
2019-08-22 13:32:35 -07:00
losfair
6534c28aed
Allow dead code in llvm-backend.
2019-08-22 13:30:50 -07:00
losfair
e89ab43b98
Fix unused 'stackmaps' and 'module_info' on Windows
2019-08-22 13:25:52 -07:00
losfair
d868445d09
Fix unused import 'vm' on Windows
2019-08-22 13:19:46 -07:00
losfair
eef38429fc
Fix unused imports on Windows.
2019-08-22 13:14:05 -07:00
losfair
86814a1920
Merge remote-tracking branch 'origin/master' into feature/llvm-osr
2019-08-22 10:47:39 -07:00
losfair
c7377a465f
Merge remote-tracking branch 'origin/master' into feature/llvm-osr
2019-08-21 15:49:25 -07:00
dependabot-preview[bot]
5d4b78e880
Bump nix from 0.14.1 to 0.15.0
...
Bumps [nix](https://github.com/nix-rust/nix ) from 0.14.1 to 0.15.0.
- [Release notes](https://github.com/nix-rust/nix/releases )
- [Changelog](https://github.com/nix-rust/nix/blob/master/CHANGELOG.md )
- [Commits](https://github.com/nix-rust/nix/commits )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-21 22:36:56 +00:00
losfair
b0beb28ea7
Fix unused import on Windows.
2019-08-21 15:32:20 -07:00
losfair
56e735349d
Format everything
2019-08-21 15:23:56 -07:00
losfair
53ebcc355a
Disable LLVM stackmap on Windows
2019-08-21 15:23:11 -07:00
losfair
08ab8d16e1
Handle SIGILL in LLVM.
2019-08-21 15:05:10 -07:00
losfair
74faaa3be8
Merge branch 'fix/llvm-trap-windows' into feature/llvm-osr
2019-08-21 15:02:17 -07:00
Nick Lewycky
e6ec261cd5
Remove commented out code.
2019-08-21 15:01:21 -07:00
losfair
bf9d915635
Fix a few issues from PR comments.
2019-08-21 14:53:33 -07:00
losfair
bf471fbc24
Cleanup LLVM object loader.
2019-08-21 11:08:23 -07:00
Nick Lewycky
2882c75957
No need to emit any alignment check for byte-aligned accesses.
2019-08-20 11:30:30 -07:00
Nick Lewycky
dcf70167da
Fix i64.atomic.load32_u and all alignment checks.
2019-08-20 11:03:22 -07:00
Nick Lewycky
0ba73ac50c
Correct flipped misalignment test.
2019-08-20 10:39:53 -07:00
losfair
90dcdfec1c
Cargo fmt
2019-08-19 19:17:50 -07:00
losfair
4e6267aa57
Correctly handle more than 5 WASM function parameters when reading state of a LLVM context.
2019-08-19 19:12:33 -07:00
losfair
124ad73e8a
Merge remote-tracking branch 'origin/master' into feature/llvm-osr
2019-08-19 13:06:59 -07:00
Nick Lewycky
c8378329c1
Expound upon Fence's empty implementation being correct.
2019-08-19 10:51:14 -07:00
Nick Lewycky
aecce465c7
Implement atomic.rmw operations including atomic.rmw.cmpxchg.
2019-08-19 10:51:14 -07:00
Nick Lewycky
f2077c204b
Implement fence correctly, atomic load/store as non-atomic.
...
Adds trap for misaligned accesses.
2019-08-19 10:51:14 -07:00
Brandon Fish
bccbbb3d8b
Add deny nonstandard-style and unused-mut lints
2019-08-15 20:18:29 -06:00
losfair
afa0600701
Cargo fmt
2019-08-15 19:13:00 -07:00
losfair
7028df23ef
Allow only integers for LLVM function param/return values.
2019-08-15 19:07:03 -07:00
losfair
98ef9182d7
Run clang-format and cargo fmt
2019-08-14 16:35:40 -07:00
losfair
0e0573c73c
Merge remote-tracking branch 'origin/master' into feature/llvm-osr
2019-08-14 16:33:26 -07:00
Nick Lewycky
2f3c9c3e2f
Mark memory.size VM intrinsics as not modifying state, and throw.trap/breakpoint as functions which do not return.
2019-08-13 21:50:54 -07:00
Brandon Fish
0bf33662d1
Add missing LLVM imported memory functions
2019-08-13 20:07:55 -06:00
Brandon Fish
137ac206af
Return compile error (llvm) for setting immutable global
2019-08-13 17:59:04 -06:00
Brandon Fish
d695bd0c84
Update WABT dep to fixe names spectests
2019-08-12 15:35:32 -06:00
losfair
44f71759f6
Use Vec::with_capacity in various places.
2019-08-10 03:23:29 +08:00
losfair
b8c18215aa
Refactor tier switching code
2019-08-10 02:32:14 +08:00
Syrus
d39d4b5f6d
Remove structopt dependency from LLVM
2019-08-08 19:42:41 -07:00
Nick Lewycky
b2c4501357
Add support for backend flags. Backend flags are opaque to src/bin/wasmer.rs.
...
Use them to implement three features in the LLVM backend, getting a valid ELF object file, the post-optimization LLVM IR and the pre-optimization LLVM IR.
Presently they are also global to the backend which is not ideal.
2019-08-08 17:05:31 -07:00
Nick Lewycky
02f1d73f88
Reformat.
2019-08-08 13:55:44 -07:00
Nick Lewycky
c4d4a6888c
Fix a bug where we would fail to find llvm-config-M or llvm-config-M-N when llvm-sys would.
...
Update to match features in newer llvm-sys.
2019-08-08 13:46:40 -07:00
losfair
c1619026d5
Swap code lazily when tiering up from singlepass to LLVM.
...
Does not handle long-running functions, but should work at least.
2019-08-09 04:26:17 +08:00
losfair
0d604b754b
Commented out code for saving semantics of internal values.
2019-08-08 21:54:39 +08:00
losfair
b113f5a24b
longjmp turns out to work on Windows. Remove custom unwinding code.
2019-08-08 03:19:19 +08:00
losfair
4b1d337ebe
Custom setjmp/longjmp to avoid SEH. (will it work?)
2019-08-07 00:38:42 +08:00
losfair
b50fd31adb
Use setjmp/longjmp to handle LLVM exceptions.
2019-08-07 00:06:35 +08:00
dependabot-preview[bot]
a036a306d5
Bump regex from 1.2.0 to 1.2.1
...
Bumps [regex](https://github.com/rust-lang/regex ) from 1.2.0 to 1.2.1.
- [Release notes](https://github.com/rust-lang/regex/releases )
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/regex/compare/1.2.0...1.2.1 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-05 08:36:27 +00:00
Brandon Fish
2f70a199e4
Add deny dead_code lint and fix one error
2019-08-01 20:46:35 -06:00
Nick Lewycky
83aa9c67c7
Replace throw() with noexcept. Unlike throw(), noexcept indicates that the function does not throw.
...
Before C++17, throw() was equivalent to wrapping the function in a try {} catch
{ std::unexpected(); }. In C++17 throw() was made equivalent to noexcept and
in C++20 throw() was removed.
2019-08-01 17:13:23 -07:00
Nick Lewycky
ac49e57c2d
Run clang-format-8 over the C++ code. No functionality change.
2019-08-01 17:12:46 -07:00
Nick Lewycky
536f9813dc
Implement InternalEvent::Breakpoint in the llvm backend.
...
Enable now-working metering unit tests when run with the llvm backend.
2019-08-01 12:44:25 -07:00
losfair
9ed5094f86
Resolve semantics for more values.
2019-08-01 23:28:39 +08:00
Syrus
0dfa1f68a8
Formatted code
2019-07-31 23:51:12 -07:00
Syrus
ebce7d0371
Updated dependencies
2019-07-31 23:42:54 -07:00
Syrus
a6461c3b14
Removed explicit hashbrown dependency
2019-07-31 23:18:38 -07:00
Syrus
6245daaa84
Update dependencies to latest versions
2019-07-31 23:04:03 -07:00
Mark McCaskey
20e424c11e
update wasmparser and clif-fork dependencies
2019-08-01 10:13:25 +09:00
nlewycky
54b5c642dc
Merge branch 'master' into features/llvm-metering
2019-07-31 13:13:07 -07:00
Nick Lewycky
931d556de1
Add support for internal fields.
2019-07-31 13:10:51 -07:00
Syrus
fccf68c734
Updated version to 0.6.0
2019-07-31 10:28:45 -07:00
Syrus Akbary
0256a6eb88
Merge branch 'master' into features/llvm-windows
2019-07-30 17:38:36 -07:00
Syrus
97c6956d98
Added llvm in windows support to Changelog
2019-07-30 15:56:25 -07:00
Syrus
22f8b3f3dc
Improved LLVM compilation for Unix
2019-07-30 15:32:21 -07:00
Syrus
89178732cc
Fixed unix errors
2019-07-30 15:23:03 -07:00
Nick Lewycky
bdb1c4c44e
Fix inkwell assertion due to treating vector as float. Fix llvm backend fatal error due to missing support for fminimum/fmaximum.
2019-07-30 14:59:04 -07:00
Syrus Akbary
12f8f3d085
First working version of LLVM in Windows
2019-07-30 14:47:53 -07:00
Nick Lewycky
3e7545a278
Fix the Trunc[SU] operations, makes conversions.wast pass.
2019-07-30 12:42:25 -07:00
losfair
0a7f95ee06
Allow a range of instruction offsets to be used in ip lookup.
2019-07-30 22:25:15 +08:00
Nick Lewycky
11f66d287b
Improve NaN handling by canonicalizing NaNs before most operations.
...
Not handled here is @llvm.minnum and @llvm.maxnum which should be replaced with
@llvm.minimum and @llvm.maximum, but using those currently leads to LLVM backend
fatal errors.
2019-07-28 22:53:48 -07:00