Pat Hickey
fe92a8da48
Add deprecation notice to cranelift-faerie README and FaerieBuilder.
2020-06-03 16:20:46 -07:00
Chris Fallin
fe97659813
Address review comments.
2020-06-03 13:31:34 -07:00
Chris Fallin
615362068f
Multi-value return support.
2020-06-03 13:31:34 -07:00
Chris Fallin
b8e31d7c8e
Fix build warnings (errors on CI) due to mmap flag rename and deprecation.
2020-06-03 09:48:22 -07:00
Dan Gohman
a76639c6fb
Wasmtime 0.17.0 and Cranelift 0.64.0. ( #1805 )
2020-06-02 18:51:59 -07:00
Nick Fitzgerald
2a75f6de21
Merge pull request #1781 from fitzgen/externref
...
Initial, partial support for `externref`
2020-06-02 09:47:49 -07:00
Chris Fallin
9fec933056
Merge pull request #1801 from jgouly/cmp-rebase
...
arm64: add support for I8X16 ICmp
2020-06-02 09:35:41 -07:00
Joey Gouly
90a421193f
arm64: add support for I8X16 ICmp
...
Copyright (c) 2020, Arm Limited.
2020-06-02 16:58:09 +01:00
Benjamin Bouvier
67c7a3ed19
mach backend: reduce the size of the Inst enum down to 32 bytes;
2020-06-02 16:29:05 +02:00
Benjamin Bouvier
e227608510
mach backend: use vectors instead of sets to remember set of uses/defs for calls;
...
This avoids the set uniqueness (hashing) test, reduces memory
churn when re-mapping virtual register onto real registers, and is
generally more memory-efficient.
2020-06-02 16:29:05 +02:00
Benjamin Bouvier
cfa0527794
mach backend: have mem_finalize return a SmallVec;
...
This avoids a spurious reallocation of the SmallVec containing the
load_constants result to a Vec, which appeared in dhat profiles.
2020-06-02 16:29:05 +02:00
teapotd
1acbad089a
[bugpoint] Resolve aliases after reduction
2020-06-01 17:13:05 -07:00
teapotd
b3763223ab
[bugpoint] Convert more types to constants
2020-06-01 17:13:05 -07:00
teapotd
e0d7f1a91b
[bugpoint] Try to move instructions to the entry block
2020-06-01 17:13:05 -07:00
Nick Fitzgerald
d5bdce99c7
Remove executable bit from Rust source files
2020-06-01 15:09:51 -07:00
Nick Fitzgerald
137e182750
Update wasmparser to 0.57.0
2020-06-01 14:53:10 -07:00
Nick Fitzgerald
acf8ad0df7
cranelift_wasm: expose the original Wasm function signature
...
In the `ModuleEnvironment::declare_signature` callback, also pass the original
Wasm function signature, so that consumers may associate this information with
each compiled function. This is often necessary because while each Wasm
signature gets compiled down into a single native signature, multiple Wasm
signatures might compile down into the same native signature, and in these cases
the original Wasm signature is required for dynamic type checking of calls.
2020-06-01 14:53:10 -07:00
Nick Fitzgerald
01a92aef95
cranelift_wasm: Use the TableIndex type instead of raw u32
...
About half of the `FuncEnvironment::translate_table_*` methods were using the
`TableIndex` newtype, while the other half were using raw `u32`s. This commit
makes everything use `TableIndex`.
2020-06-01 14:53:10 -07:00
Nick Fitzgerald
7c68a10ed6
Merge pull request #1670 from teapotd/win64-pass-by-ref
...
Implement passing arguments by ref for win64 ABI
2020-06-01 11:13:30 -07:00
Andrew Brown
0dd77d36f8
Rename BinaryImm format to BinaryImm64
2020-05-29 19:56:27 -07:00
Andrew Brown
a27a079d65
Replace ExtractLane format with BinaryImm8
...
Like https://github.com/bytecodealliance/wasmtime/pull/1762 , this change the name of the `ExtractLane` format to the more-general `BinaryImm8` and renames its immediate argument from `lane` to `imm`.
2020-05-29 19:56:27 -07:00
Andrew Brown
7d6e94b952
Replace InsertLane format with TernaryImm8
...
The InsertLane format has an ordering (`value().imm().value()`) and immediate name (`"lane"`) that make it awkward to use for other instructions. This changes the ordering (`value().value().imm()`) and uses the default name (`"imm"`) throughout the codebase.
2020-05-29 19:56:27 -07:00
teapotd
e430984ac4
Improve bitselect codegen with knowledge of operand origin ( #1783 )
...
* Encode vselect using BLEND instructions on x86
* Legalize vselect to bitselect
* Optimize bitselect to vselect for some operands
* Add run tests for bitselect-vselect optimization
* Address review feedback
2020-05-29 19:53:11 -07:00
Andrew Brown
c274efe9c1
Enable SIMD lane spec test on x86 ( #1760 )
...
* Ensure GlobalSet on vectors are cast to Cranelift's I8X16 type
This is a fix related to the decision to use Cranelift's I8X16 type to represent Wasm's V128--it requires casting to maintain type correctness. See https://github.com/bytecodealliance/wasmtime/issues/1147 .
* Enable SIMD spec test: simd_lane.wast
2020-05-29 14:05:35 -07:00
Andrew Brown
8fce8ddefc
[cranelift-interpreter] Add basic floating point arithmetic
2020-05-29 13:20:39 -07:00
Andrew Brown
660c45fe34
[cranelift-interpreter] Add integer multiplication
2020-05-29 13:20:39 -07:00
Andrew Brown
a4e0327128
[cranelift-interpreter] Remove float types from integer instructions
2020-05-29 13:20:39 -07:00
teapotd
759cc3e751
Implement passing arguments by ref for win64 ABI
2020-05-29 20:12:41 +02:00
Nick Fitzgerald
94380bf2b7
Merge pull request #1510 from teapotd/abi-i128-fix
...
Always check if struct-return parameter is needed
2020-05-29 10:02:16 -07:00
whitequark
a180b5b393
x86_32: fix stack_addr encoding.
...
Consider this testcase:
target i686
function u0:0() -> i32 system_v {
ss0 = explicit_slot 0
block0:
v2 = stack_addr.i32 ss0
return v2
}
Before this commit, in 32-bit mode the x86 backend would generate
incorrect code for stack addresses:
0: 55 push ebp
1: 89 e5 mov ebp, esp
3: 83 ec 08 sub esp, 8
6: 8d 44 24 00 lea eax, [esp]
a: 00 00 add byte ptr [eax], al
c: 00 83 c4 08 5d c3 add byte ptr [ebx - 0x3ca2f73c], al
This happened because the ModRM byte indicated a disp8 encoding, but
the instruction actually used a disp32 encoding. After this commit,
correct code is generated:
0: 55 push ebp
1: 89 e5 mov ebp, esp
3: 83 ec 08 sub esp, 8
6: 8d 84 24 00 00 00 00 lea eax, [esp]
d: 83 c4 08 add esp, 8
10: 5d pop ebp
11: c3 ret
2020-05-29 09:17:36 -07:00
Nick Fitzgerald
2e7b3ba8de
cranelift: Implement serialize/deserialize for stack maps
...
When the `enable-serde` feature is set.
2020-05-28 11:34:58 -07:00
Nick Fitzgerald
7d350c673c
Merge pull request #1778 from alexcrichton/disable-peepmatic-macro-tests
...
Disable tests for the peepmatic-macro crate
2020-05-28 08:46:12 -07:00
whitequark
880e692fd4
x86: add encoding for bnot.b1.
...
Fixes #1743 .
Co-authored-by: iximeow <git@iximeow.net >
2020-05-28 08:43:25 -07:00
Andrew Brown
b017844bef
Fix interpreter semantics of 'irsub_imm'
...
Previously it used `arg - imm` but the functionality should be a wrapping `imm - arg` (see `cranelift/codegen/meta/src/shared/instructions.rs`).
2020-05-28 16:28:27 +02:00
Alex Crichton
caada922e8
Disable tests for the peepmatic-macro crate
...
I'm not actually sure that it's possible to write `#[test]` in a
`proc-macro` crate. Regardless I don't think it's too too conventional,
so let's disable this for now.
Closes #1775
2020-05-28 07:07:32 -07:00
teapotd
fbac2e53f9
Make vconst BxN match specification
2020-05-27 09:37:13 -07:00
Andrew Brown
628a9f0eaa
Print more detailed test run failures ( #1764 )
2020-05-27 09:04:46 -05:00
Andrew Brown
4e016afca3
Add trace-level logging to interpreter
2020-05-26 18:45:25 +02:00
Andrew Brown
ca0c24e346
Avoid recursion in Interpreter::block
2020-05-26 18:45:25 +02:00
Chris Fallin
6ead7527af
Merge pull request #1748 from akirilov-arm/simd_store
...
Enable the wast::Cranelift::spec::simd::simd_store test for AArch64
2020-05-26 09:21:36 -07:00
Ömer Sinan Ağacan
c619136752
Remove Eq bound of ReservedValue trait
...
A full Eq implementation is no needed for ReservedValue, as we only need
to check whether a value is the reserved one. For entities (defined with
`entity_impl!`) this doesn't make much difference, but for more
complicated types this avoids generating redundant `Eq`s.
2020-05-26 10:27:55 +02:00
bjorn3
eeb1e141ba
Add some assertions to cranelift_frontend
2020-05-26 10:17:08 +02:00
Andrew Brown
6e7276e48d
Replace single use of Frame::with_parameters with Frame::set_all
2020-05-26 09:56:58 +02:00
Andrew Brown
d73cb48c29
Add logging to frame operations
2020-05-26 09:56:58 +02:00
Andrew Brown
c92917de15
Fix typo in sadd_sat instruction definition
2020-05-26 09:55:26 +02:00
teapotd
9e70a64728
Legalize sret call arguments
2020-05-25 20:03:24 +02:00
teapotd
b18846057f
Add system_v legalizer tests for i128 args
2020-05-25 20:03:24 +02:00
teapotd
6465003899
Run popcnt.i128 legalization test on x86_64
2020-05-25 20:03:24 +02:00
teapotd
0f55bb4b8d
Always check if struct-return parameter is needed
2020-05-25 20:03:24 +02:00
Anton Kirilov
8a928830ac
Enable the wast::Cranelift::spec::simd::simd_store test for AArch64
...
Copyright (c) 2020, Arm Limited.
2020-05-24 22:53:07 +01:00