Ecosyste.ms: OpenCollective
An open API service for software projects hosted on Open Collective.
github.com/swiftwasm/wasmtime
Standalone JIT-style runtime for WebAsssembly, using Cranelift
https://github.com/swiftwasm/wasmtime
The various entity maps in a function end up being referenced in
multiple places, so create type...
Use a new StackSlots struct to keep track of a function's stack slots
instead of just an entity ...
Add a StackSlotKind enumeration to help keep track of the different
kinds of stack slots support...
An instruction may have fixed operand constraints that make it
impossibly to use a single regist...
9eb0778f9b972975dee66d5b23cb61bfa0ee6122 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
66af915eed294f18046f7184728526f7b2335e9d authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Even if an argument is already in the correct register, make sure that
we detect conflicts by re...
This breaks our depending on two different versions of the regex
library.
This updated docopt u...
e7c6efa31e3e8e76568cc533f7998956228bd404 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Calls clobber many registers, so spill everything that is live across a
call for now.
In the fu...
f2f162f37ed71b94e254bcf08d069c9448571d41 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Make sure that spill instructions are generated in the same way
everywhere, including adding enc...
Values passed as arguments to calls and return instructions may also be
reload candidates.
Add a spilling pass which lowers register pressure by assigning SSA
values to the stack. Importa...
The register pressure tracker now has to separate register counts: base
and transient.
The tran...
96fe287f67e215bd68a6f6aae2611bf20b53fd1c authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add a Stack() class for specifying operand constraints for values on the
stack.
Add encoding re...
00551dbc5fa5071c0298efe099a753e067ee77de authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>This is now subsumed by the generic 'dominates' function.
2875c6ddf95e800c5af1dc0c66c1c76027c54852 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
This is now a generic function that can test arbitrary combinations of
instructions and EBBs for...
When comparing instructions in the same EBB, behave like the RPO visits
instructions in program ...
* Function names should start with %
* Create FunctionName from string
* Implement display...
8b484b1c77d7e267ff1694905fcba252232d378c authored over 7 years ago by Aleksey Kuznetsov <[email protected]>
* Improved DFG API with swap_remove_ebb_args and append_inst_arg
* Implemented EntityList::swap...
dacc4003a3951d43cf3927e440298da8617289a4 authored over 7 years ago by Denis Merigoux <[email protected]>
This is now unused. Use domtree.cfg_postorder() instead.
Also remove the dead cfg.ebbs().
eec980618b7c0acb946440c04fe2750ea0eaafeb authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Switch to the new domtree.cfg_postorder() which returns a reference to a
pre-computed post-order...
The reload pass inserts spill and fill instructions as needed so
instructions that operate on re...
A ValueDef is really no more than a program point plus an
argument/result number.
The create_dead() methods can create a live range for a new value, and
extend_local() can extend...
* LICM pass
* Uses loop analysis to detect loop tree
* For each loop (starting with the inne...
This is analogous to replace_ebb_arg(). It replaces an instruction
result value with a new value...
* Updated the regex crate to 0.2.2 as per issue #88
* Added potential fix for cryptic CI error....
920e32ed49bc9e5209c7b69f89657ea163572846 authored over 7 years ago by Aleksey Kuznetsov <[email protected]>
80d92ccbb5cdd8c98073e889a7bd47d87a9658b7 authored over 7 years ago by Aleksey Kuznetsov <[email protected]>
The DominatorTree has existing DomNodes per EBB that can be used in lieu
of expensive HastSets f...
* Implemented in two passes
* First pass discovers the loops headers (they dominate one of their...
cb35869803728d0f8ed9f8dbdb8844e233b146ae authored over 7 years ago by Aleksey Kuznetsov <[email protected]>
* Fix GVN skipping the instruction after a deleted instruction.
* Teach GVN to resolve aliase...
059845880c18839e6c5519aadeae50f3ec73662f authored over 7 years ago by Dan Gohman <[email protected]>
* Skeleton simple_gvn pass.
* Basic testing infrastructure for simple-gvn.
* Add can_load and ...
The spilling and reload passes need to ensure that the set of live
ranges with register affinity...
The set of available registers in a register class is known ahead of
time. It can be computed wi...
Avoid spreading u32 as a bitmask of register classes throughout the
code.
Enforce the limit of ...
66d2c0a95af604425575f8bbac317d5fe2856e79 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
A top-level register class is one that has no sub-classes. It is
possible to have multiple top-l...
This makes it possible to find the register bank that contains a
register class.
a2fd9cf0cc0579b23ccecfa6cc2023fa84388e3b authored over 7 years ago by Benjamin Bouvier <[email protected]>
Cretonne's encoding recipes need to have a fixed size so we can compute
accurate branch destinat...
We don't support the full set of Intel addressing modes yet. So far we
have:
- Register indirec...
9629867d0cb45c41ceb52b53badd51631c9eb48f authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>Also add versions with 8-bit and 32-bit immediate operands.
c998df6274ea7b94037719e14c3f7c92e1dcc1bb authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
We'll arrange encoding lists such that the first suitable encoding is
the best choice for the le...
This gets rid of the last TargetIsa method with a default
implementation.
We can start adding some real test cases for the move resolver now.
663b50efccfe4e5032ae897e39d0e40ec60fa861 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>The register constraint solver has two kinds of variables:
1. Live values that were already in ...
f8e466d60edb11ed57cdeef7737dc673b4942d75 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
After finding a register solution, it need to be executed as a sequence
of regmove instructions....
It is not necessary to to a second pass over the live values to update
the set of available regi...
The live value tracker expects them to be there.
We may eventually delete dead arguments from i...
9f743cf3a52d54c11b36769e881ccf7790e22de3 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>Provide a drop_dead_args() function which deletes them instead.
We still need to assign a regis...
d03a21746680d325b75a89edb48b3ab6790783ad authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
The live value tracker goes through the trouble of looking up the live
range for each value it t...
* Check for unknown instruction attributes.
* Avoid has_key, at flake8's advice.
* Use Ass...
5ff2257b12056aa44f99296ee0f4bbdb1a2de183 authored over 7 years ago by Dan Gohman <[email protected]>526feb161a682ad681d395a0bf34d8ba4be5a379 authored over 7 years ago by Dan Gohman <[email protected]>
c571975a5c95d61fa61a91e5bcd1c3b051d16f1d authored over 7 years ago by Dan Gohman <[email protected]>
Keep track of the current location of register values as regmove
instructions are encountered th...
Most of the time, register coloring is almost trivial: just pick
available registers for the val...
These instructions have a fixed register constraint; the shift amount is
passed in CL.
Add meta...
cdb3a71dd11eed2f533d52408046ff5af5c625f7 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
This is how remainder is defined in C (as of C99), C++ (as of C++11), Rust,
and WebAssembly, for...
Tabulate the Intel opcode representations and implement an OP() function
which computes the enco...
Most instructions don't have any fixed register constraints. Add boolean
summaries that can be u...
The register constraint for an output operand can be specified as an
integer indicating the inpu...
The coloring algorithm will need to look at the live-through values to
check if they interfere w...
d1d6c626d9cfd3444166271e3de339dc1e7943ab authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Test it with the arm32 register banks which have the most interesting
properties. Most other reg...
This still picks up the 2.7 type annotations in comments.
Fix the compute_quadratic signature t...
673279068fb7b0e94d840fcc8bd003e5fd06a997 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
A recent mypy update started writing the .mypy_cache directory which we
don't want under version...
This will be used to locally change the register locations of values in
order to satisfy instruc...
Multiple passes will need to iterate over EBBs in a
dominator-topological order. Move that funct...
- Add a check-rustfmt.sh script which checks if the right version of
rustfmt is installed.
- R...
15606fa7354d2ba806fa255873ff946c7ed9a31a authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
- Remove some uses of 'static in const and static globals that are no
longer needed.
- Use the...
The arguments to the entry block arrive in registers determined by the
ABI. This information is ...
This gives the target ISA a chance to reserve registers like the stack
pointer or hard-wired 0 r...
This limited RISC-V version only has registers %x0 - %x15.
Make sure the ABI lowering code does...
305de3e73bbd5de17e4ce66a930b3f86f3bfc4e4 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
This value affinity doesn't mean "whatever", it means that the value
does not interact with any ...
Make it possible to display affinities given a RegInfo reference.
2f866171ca7720ae9ac801652c82808d86c6c4f7 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Use the argument types from the function signature to initialize the
affinity of register and st...
The legalize_signature() function will return ArgumentLoc::Reg arguments
that contain a register...
This covers a common pattern for secondary entity maps: Get the value in
the map or the default ...
Fixes #69
100666e3004d6c3c6fbc3bdecac19bda27d31ea2 authored over 7 years ago by Eric Anholt <[email protected]>
If we generated new instructions as part of legalize, and the new
instructions failed to legaliz...
The other legalizer cases have a continue after setting the position
to double back, while this ...
551a91178acc515d321cd802885e834185d44e47 authored over 7 years ago by Eric Anholt <[email protected]>
This means that we can verify the basics with verify_context before
moving on to verifying the l...
The liveness verifier will check that the live ranges are consistent
with the function. It runs ...
The test drivers can stop calling comp_ctx.verify because legalize() and
regalloc() do it themse...
No need for a type parameter.
b6105ab79bf07a16e709b941aab32300a5fc6b6e authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>These are for reporting the overall result of compiling a function.
83381dadc5188de41e69d14baafafcaf680a64fb authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
This is off by default, but enabled by the parser when reading a textual
IL file. Test files can...
Make room for verifier sub-modules in separate files.
c621770507d86edf00efa437a319722c7da2cfb3 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
The return address is now always supplied in %x1, so the return address
predictor will recognize...
RISC architectures that take a return address in a register can use a
special-purpose `link` ret...
These special-purpose arguments and return values are only relevant for
the function being compi...
Iterator tricks.
c040a495c0dfe9e62e3042704007c7139494b5be authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>74595c66234d6ff63fe53187d2b03a54e7dd506f authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Enumerate a set of special purposes for function arguments that general
purpose code needs to kn...
All instruction formats can represent multiple results now, so a few
redundant formats can be re...
- The detach_secondary_results() is a leftover from the two-plane value
representation. Use de...