Alex Crichton
3aeab23bf1
Fix leaking funcrefs in the C API ( #2040 )
...
This commit adds a case to the destructor of `wasm_val_t` to be sure to
deallocate the `Box<wasm_ref_t>`.
2020-07-17 14:45:55 -05:00
Alex Crichton
c3ff0754d4
Fix a panic with Func::new and reference types ( #2039 )
...
Currently `Func::new` will panic if one of the arguments of the function
is a reference type and the `Store` doesn't have reference types
enabled. This happens because cranelift isn't configure to enable stack
maps but the register allocators expects them to exist when reference
types are seen.
The fix here is to always enable reference types in cranelift for our
trampoline generation and `Func::new`. This should hopefully ensure that
trampolines are generated correctly and they'll just not be able to get
hooked up to an `Instance` because validation will prevent reference
types from being used elsewhere.
2020-07-17 12:05:42 -05:00
Nick Fitzgerald
8dd4ab2f1e
Merge pull request #2022 from MaxGraey/peepmatic-bnot
...
peepmatic: Add bnot operation
2020-07-17 09:39:38 -07:00
Nikolay Volf
4f4edc7aef
Remove spam from "do_remove_constant_phis"
2020-07-17 18:14:16 +02:00
Benjamin Bouvier
ead8a835c4
machinst x64: add more FP support
2020-07-17 15:56:44 +02:00
bjorn3
5c5a30f76c
Fix review comments
2020-07-17 12:03:17 +02:00
bjorn3
7b7b1f4997
Rename sarg__ to sarg_t
2020-07-17 12:03:17 +02:00
bjorn3
4971d9ee80
Merge {make_incoming,get_outgoing}_{,struct_}arg
2020-07-17 12:03:17 +02:00
bjorn3
0d4fa6d32a
Fix review comments
2020-07-17 12:03:17 +02:00
bjorn3
4431ac1108
Implement SystemV struct argument passing
2020-07-17 12:03:17 +02:00
Alex Crichton
2f368ed5d6
Fixes needed for 0.19.0 ( #2035 )
...
* Add some more wiggle crates to publish
* Fix build of wasi-common on crates.io
* Bump crates to 0.19.1 to fix crates.io build
2020-07-16 17:27:21 -05:00
MaxGraey
c653c563dd
Merge branch 'main' into peepmatic-bnot
2020-07-16 22:01:18 +03:00
Chris Fallin
5e0268a542
Merge pull request #2034 from cfallin/update-regalloc
...
Update to regalloc.rs 0.0.28.
2020-07-16 11:36:11 -07:00
Alex Crichton
63d5b91930
Wasmtime 0.19.0 and Cranelift 0.66.0 ( #2027 )
...
This commit updates Wasmtime's version to 0.19.0, Cranelift's version to
0.66.0, and updates the release notes as well.
2020-07-16 12:46:21 -05:00
Chris Fallin
756e8b8ea2
Update to regalloc.rs 0.0.28.
...
This version of regalloc.rs includes several bugfixes for
reference-types support used by the new backend framework and the
aarch64 backend (bytecodealliance/regalloc.rs#85 and
bytecodealliance/regalloc.rs#86 ).
2020-07-16 09:42:09 -07:00
Benjamin Bouvier
bab337fc32
Address review comments;
2020-07-16 18:21:06 +02:00
Benjamin Bouvier
5a55646fc3
machinst x64: support out-of-bounds memory accesses;
2020-07-16 18:21:06 +02:00
Benjamin Bouvier
ea33ce9116
machinst x64: basic support for baldrdash
...
+ fix multi-value support
2020-07-16 18:21:06 +02:00
Benjamin Bouvier
00b38c91f6
machinst x64: fix generation of RegMemImm immediate operands;
2020-07-16 18:21:06 +02:00
Benjamin Bouvier
1430c5e436
machinst x64: fix index handling of jump table;
...
The index should be truncated to 32 bits before being used for the jump
table entry computation.
2020-07-16 18:21:06 +02:00
Benjamin Bouvier
55b9059954
machinst x64: remove spurious assertion about FP offset requiring to be 16-bytes aligned
2020-07-16 18:21:06 +02:00
Benjamin Bouvier
3905a1b17b
machinst x64: implement SymbolValue and FuncAddr with a movabsq+reloc;
2020-07-16 18:21:06 +02:00
Benjamin Bouvier
cfa0a0c4e8
machinst x64: lower resumable_trap as trap;
2020-07-16 18:21:06 +02:00
Benjamin Bouvier
311027869b
machinst x64: implement popcnt.i64
2020-07-16 18:21:06 +02:00
Benjamin Bouvier
d9310e8d90
machinst x64: fix checked div sequence
...
- it should mark as clobbering (def) rdx, not modifying it
- the signed-div check requires a temporary to compare against int64_min
2020-07-16 18:21:06 +02:00
Benjamin Bouvier
f932bccaf8
machinst x64: fix sign-extension at boundary
2020-07-16 18:21:06 +02:00
Benjamin Bouvier
6f5403a94b
machinst x64: lower Ctz using the Bsf x86 instruction
2020-07-16 18:21:06 +02:00
Benjamin Bouvier
33e0d05645
machinst x64: have cmov modify its destination operand;
...
This is tricky: the control flow implicitly implied by the operand makes
it so that the output register may be undefined, if we mark it only as a
"def". Make it a "mod" instead, which matches our usage in the codebase,
and will make it crash if the output operand isn't unconditionally
defined before the instruction.
2020-07-16 18:21:06 +02:00
Benjamin Bouvier
aa7db7fd7b
machinst x64: fix JmpUnknown register mapping;
2020-07-16 18:21:06 +02:00
Benjamin Bouvier
fe7dd41435
machinst x64: fix iconst emission
2020-07-16 18:21:06 +02:00
Benjamin Bouvier
ec2209665a
machinst x64: implement bsr and lower Clz;
2020-07-16 18:21:06 +02:00
Benjamin Bouvier
eda2d143ed
machinst x64: add support for umulhi/smulhi;
2020-07-16 18:21:06 +02:00
Benjamin Bouvier
571061fe4c
machinst x64: add support for rotations;
2020-07-16 18:21:06 +02:00
Benjamin Bouvier
22892466e7
machinst x64: fix implementation of *reduce;
...
They should just generate a plain move, since the high bits are then
ignored, and not an extended move.
2020-07-16 18:21:06 +02:00
Alex Crichton
41e1300247
Allow improper_ctypes_definitions in C API
...
This was enabled in rust-lang/rust#72700 but it looks like it's still
too noisy for it to be useful to us.
2020-07-16 17:28:54 +02:00
MaxGraey
4564c396d2
Merge branch 'main' into peepmatic-bnot
2020-07-16 16:13:28 +03:00
MaxGraey
657aea5286
remove rule and tests
2020-07-16 14:56:11 +03:00
Nick Fitzgerald
a9455a8e51
C API tweaks for wasmtime-py ( #2029 )
...
* wasmtime-c-api: Only drop non-null `*mut wasm_ref_t`s
* wasmtime-c-api: Handle null refs in `wasm_val_t` to `Val` conversion
* wasmtime-c-api: Don't unwrap and rewrap `Option`s
The `unwrap` can panic, and there isn't any point to this unwrap+rewrap.
* wasmtime-c-api: Add conversions between `funcref` and `wasm_func_t`
* wasmtime-c-api: More ownership documentation for `wasmtime.h`
2020-07-15 19:55:31 -05:00
Nick Fitzgerald
c3e8a04c90
Merge pull request #2026 from yurydelendik/fix-c-module-new
...
Fix signature of wasmtime_module_new
2020-07-15 13:34:44 -07:00
Yury Delendik
a817470fab
Fix signature of wasmtime_module_new
2020-07-15 14:07:36 -05:00
Andrew Brown
6a01b32474
Enable final SIMD spec tests for x86
2020-07-15 11:32:08 -07:00
Andrew Brown
3576d8c5bb
Translate Wasm's widen instructions to Cranelift's [u|s]widen_[low|high]
2020-07-15 11:32:08 -07:00
Andrew Brown
f0b083c6ad
Legalize [u|s]widen_high for x86
...
Use `x86_palignr` and `[u|s]widen_low` for legalizing this instruction.
2020-07-15 11:32:08 -07:00
Andrew Brown
c8ddf8a34c
Encode [u|s]widen_low for x86
2020-07-15 11:32:08 -07:00
Andrew Brown
fafef7db77
Add x86_palignr instructions
...
This instruction is necessary for implementing `[s|u]widen_high`.
2020-07-15 11:32:08 -07:00
Andrew Brown
0e5e8a62c8
Add DerivedFunction for doubling lane widths and halving the number of lanes (i.e. merging)
...
Certain operations (e.g. widening) will have operands with types like `NxM` but will return results with types like `(N*2)x(M/2)` (double the lane width, halve the number of lanes; maintain the same number of vector bits). This is equivalent to applying two `DerivedFunction`s to the type: `DerivedFunction::DoubleWidth` then `DerivedFunction::HalfVector`. Since there is no easy way to apply multiple `DerivedFunction`s (e.g. most of the logic is one-level deep, 1d5a678124/cranelift/codegen/meta/src/gen_inst.rs (L618-L621) ), I added `DerivedFunction::MergeLanes` to do the necessary type conversion.
2020-07-15 11:32:08 -07:00
Chris Fallin
12a31c88d7
Merge pull request #2021 from akirilov-arm/VectorSize
...
AArch64: Introduce an enum to specify vector instruction operand sizes
2020-07-15 09:43:18 -07:00
Alex Crichton
806d197472
Update platform support docs ( #2023 )
...
Be sure to mention Linux AArch64 as a supported platform of Wasmtime
now.
2020-07-15 10:22:08 -05:00
MaxGraey
67b785d241
refactor: use different sections for this rule
2020-07-15 17:11:27 +03:00
MaxGraey
d04d06d48a
trailling nl
2020-07-15 14:19:08 +03:00