Commit Graph

286 Commits

Author SHA1 Message Date
R2D2
b32b5cfa53 [feat]: Adding the plumbing necessary for the singlepass to choose between different simd instruction sets. Partial work on supporting SSE4.2 2022-01-30 10:55:26 +01:00
Simonas Kazlauskas
a358e84741 x64: fix assert when calling a function 2022-01-24 20:37:28 +02:00
Amanieu d'Antras
ffb9cd33b9 Use trampolines for all libcalls in engine-universal and engine-dylib
In both of these engines, the compiled code may be loaded in memory far
from the Wasmer runtime which means that libcalls may not be reachable
through the normal relocation types. Instead a trampoline is needed to
allow reaching any address in the 64-bit address space.

In the case of engine-dylib, this is even worse since the symbols are
not exported by the executable without some special linker flags. The
solution here is to manually patch in the addresses at load time into
a data table of function pointers.
2022-01-20 11:47:20 +00:00
Amanieu d'Antras
fb7a572415 Use exact version for Wasmer crate dependencies
We don't guarantee API compatibility between internal Wasmer crates when
making minor version bumps.
2022-01-19 21:35:09 +00:00
Amanieu d'Antras
ebcea4a5c4 Release v2.1.1 2021-12-21 12:19:50 +01:00
bors[bot]
75e4cabe9b Merge #2727
2727: fix(compiler) Fix singlpass release_locations function r=Amanieu a=ptitSeb

# Description
Fix a mistake in singlepass refactor


Co-authored-by: ptitSeb <sebastien.chev@gmail.com>
2021-12-15 17:58:47 +00:00
ptitSeb
a8b68bf8a7 fix(compiler) Fix singlpass release_locations function 2021-12-15 13:18:19 +01:00
ptitSeb
3dda0d477f fix #2721, also adding the test in the regression test suite 2021-12-14 11:27:53 +01:00
ptitSeb
1bb284a114 improvement(compiler) Removed commented test 2021-12-09 13:04:11 +01:00
ptitSeb
d29c1c4035 improvement(compiler) Rename Emitter trait to EmitterX64 to avoid name collision with other archs 2021-12-09 12:07:29 +01:00
ptitSeb
e03fe0dac6 improvement(compiler) disabled test_release_locations_keep_state_nopanic, the function are not part of Machine anymore 2021-12-08 11:53:31 +01:00
ptitSeb
6fd9d132b6 improvement(compiler) renammed codeGen_x64 to CodeGen, now that it's archetecture independant 2021-12-08 11:06:04 +01:00
ptitSeb
3e52f770b2 improvement(compiler) CodeGen now completly abstracted, using Machine trait only 2021-12-08 11:01:25 +01:00
ptitSeb
7dea8773be improvement(compiler) Remove CombineRegister from CodeGen 2021-12-07 14:35:06 +01:00
ptitSeb
ab931de708 improvement(compiler) Remove last GPR:: direct access in codegen 2021-12-07 14:20:13 +01:00
ptitSeb
b315ed5a89 Fixed linting 2021-12-06 18:43:47 +01:00
ptitSeb
7771fabe69 improvement(compiler) Remove CombinedRegister from Machine 2021-12-06 17:59:14 +01:00
ptitSeb
517f81b302 improvement(compiler) More x86_64 speicific code removed from CodeGen 2021-12-06 15:38:07 +01:00
ptitSeb
5ed8fbfbcb Fixed linting 2021-12-03 18:57:38 +01:00
ptitSeb
049a1f7d5c improvement(compiler) Fixed some of the later refactoring of memory_op 2021-12-03 18:53:03 +01:00
ptitSeb
5164cb90d2 improvement(compiler) refactored non-atomic load and store Operator 2021-12-03 17:51:40 +01:00
ptitSeb
19691f6fc2 improvement(compiler) refactored atomic cmpxchg again 2021-12-03 17:51:40 +01:00
ptitSeb
6817a2df07 improvement(compiler) refactored atomic exchange again 2021-12-03 17:51:40 +01:00
ptitSeb
d39e7656ef improvement(compiler) refactored atomic access again 2021-12-03 17:51:40 +01:00
ptitSeb
b100880348 improvement(compiler) fix test for machine_x86 2021-12-03 17:51:40 +01:00
ptitSeb
3c2e0ea09f improvement(compiler) fix merge issues 2021-12-03 17:51:40 +01:00
ptitSeb
5660c0935d improvement(compiler) abstraction of logic and math atomic operators 2021-12-03 17:51:40 +01:00
ptitSeb
d49bc4d9b6 improvement(compiler) abstraction of native calls 2021-12-03 17:51:40 +01:00
ptitSeb
dccc6bfa76 improvement(compiler) abstraction of remaining i64 Operators 2021-12-03 17:51:40 +01:00
ptitSeb
f1244acb2c improvement(compiler) abstraction of remaining i32 Operators 2021-12-03 17:51:40 +01:00
ptitSeb
e430851b05 improvement(compiler) abstraction of F64/F32 add/sub/mul/div operators 2021-12-03 17:51:40 +01:00
ptitSeb
c247bf3533 improvement(compiler) abstraction of F32 min/max operators 2021-12-03 17:51:40 +01:00
ptitSeb
cf3eea1f91 improvement(compiler) abstraction of more F32/F64 comparaisons 2021-12-03 17:51:40 +01:00
ptitSeb
a60dda964c improvement(compiler) abstraction of more F32/F64 coversion and operations... 2021-12-03 17:51:40 +01:00
ptitSeb
232a9c044b improvement(compiler) abstraction of Operator I32Convert* and I64Convert* 2021-12-03 17:51:40 +01:00
ptitSeb
8b9535b21e improvement(compiler) abstraction of Operator F32Convert* 2021-12-03 17:51:40 +01:00
ptitSeb
e84ba7a2c7 improvement(compiler) abstraction of Operator F64Convert* 2021-12-03 17:51:40 +01:00
ptitSeb
2b9918894c improvement(compiler) abstraction of Operator Call 2021-12-03 17:51:40 +01:00
ptitSeb
9d751a7117 improvement(compiler) abstraction of Operator CallIndirect 2021-12-03 17:51:40 +01:00
ptitSeb
052351bc7a improvement(compiler) abstraction of Operator Return, Br, BrIf and BrTable 2021-12-03 17:51:40 +01:00
ptitSeb
5ae9c0fdb9 improvement(compiler) abstraction of canonicalization and Operator::End 2021-12-03 17:51:40 +01:00
ptitSeb
0c0d4372ee improvement(compiler) abstraction of relaxed move with zero or sign extension 2021-12-03 17:51:40 +01:00
ptitSeb
5b64a392e2 improvement(compiler) abstraction of atomic store (and a bunch of relaxed opcode too) 2021-12-03 17:51:40 +01:00
ptitSeb
3736eeaae8 improvement(compiler) abstraction of lock add/sub in codegen 2021-12-03 17:51:40 +01:00
ptitSeb
36f947c671 improvement(compiler) abstraction of lock + logic in codegen 2021-12-03 17:51:40 +01:00
ptitSeb
6a33200218 improvement(compiler) abstraction of emit_memory_op 2021-12-03 17:51:40 +01:00
ptitSeb
ace5d51eb5 improvement(compiler) More work on codegen abstraction (atomic xchg) 2021-12-03 17:51:40 +01:00
ptitSeb
443d16ab2b improvement(compiler) More work on codegen abstraction (atomic cmpxchg) 2021-12-03 17:51:40 +01:00
ptitSeb
6c9be49ec9 improvement(compiler) start to make codegen independant from arch (WIP) 2021-12-03 17:51:40 +01:00
ptitSeb
633896e56e improve(compiler) Abstracted Machine on SinglePass (still need more absatraction) 2021-12-03 17:51:40 +01:00