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
12db123606a27c01a6988054bdae7c2d12fa854c authored over 7 years ago by Dimo <[email protected]>
15a7d50765887277c3edd373e973baa67be52157 authored over 7 years ago by Dimo <[email protected]>
9258283e145d6a59dff5f25a503674065d84ad0d authored over 7 years ago by Dimo <[email protected]>
40c86d58b9bc779fad43541054e720913ea97e53 authored over 7 years ago by Dimo <[email protected]>
bd2e9e5d0b69fc44d2eac12395e2c6432b940f81 authored over 7 years ago by Dimo <[email protected]>
351d4af4ebf5f0e8770f9ce5636c2b0f7e684540 authored over 7 years ago by Dimo <[email protected]>
736b6a44a74d7959e4c14ce121fa4639d013649e authored over 7 years ago by Dimo <[email protected]>
When an instruction doesn't have a valid encoding for the target ISA, it
needs to be legalized. ...
a06964fc0ef4e0e617322f1d6199bef412b8ead5 authored over 7 years ago by Dimo <[email protected]>
The encoding tables contain references to numbered ISA predicates.
- Give the ISA Flags types a...
f583511fb669ea5d0b5ac7da5e40f05b15db8d99 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
When a hash table probe fails, return the index of the failed entry.
This can be used to store d...
band, bor, bxor, band_not are all available on XMM registers.
2b41f979cbbd26396f184ac9e717e9b5e850bac4 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
ARM has all of these as scalar integer instructions. Intel has band_not
in SSE and as a scalar i...
014d9a14fe54bb4677b98ae277c56224c650eaeb authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
These map to single Intel instructions.
The i64 to float conversions are not tested yet. The en...
4df6741a904c3101285b0da4354a64ef9f060284 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Use a ud2 instruction which generates an undefined instruction
exception.
b804bc8fbc0eea1ab622ed898cdaa67f20718a90 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
This conversion doesn't require any code, we're just looking at the bits
differently.
This only works on 64-bit haswell for now. We need more legalization
patterns for 32-bit ISAs.
One function for each comparison operator.
bd55bd74cc926a8fe8e019f02fb98fe548cfc4c6 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>Convert b1 to i32 or i64 by zero-extending the byte.
265bd351bde107ce3f73ca664e8e709083519b29 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
This instruction returns a `b1` value which is represented as the output
of a setCC instruction ...
A fallthrough jump is actually represented as 0 bytes, so no encoding is
needed.
Also allow for...
5a81831c698e113d468b780b67105dfc09858d41 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>Just implement jump, brz, and brnz as needed for WebAssembly.
0a7087732e234557780cdc87f0a424b379a2a1fe authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Register locations can change throughout an EBB. Make sure the
emit_inst() function considers th...
Add instructions representing Intel's division instructions which use a
numerator that is twice ...
02fd83cd5c87866035352ed08afb1022fcd61bd8 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
This function will emit the binary machine code into contiguous raw
memory while sending relocat...
e3ff551c2b63706d614e5a61954b432f4884019b authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Fixes #11.
Presets are groups of settings and values applied at once. This is used
as a shortha...
This makes the documentation for the new bconst instruction more complete.
89634fa645e4fa8640a2eb0e9698e55a7646b5e4 authored over 7 years ago by Dan Gohman <[email protected]>
During register allocation, the code must be kept in conventional SSA
form. Add a verifier that ...
* Add a bconst instruction.
3bcfb103b9da904fac3281a8524b7188151c3d83 authored over 7 years ago by Dan Gohman <[email protected]>Guard the popcnt instruction on the proper CPUID bits.
d8e2cb2b4227747390483846dfe25d3b2f7d8df2 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Change the result type for the bit-counting instructions from a fixed i8
to the iB type variable...
5615e4a9e7fdbab545cb3ac9903d7bb86c0e10c9 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Start adding little 'test compile' test cases which check that the full
compilation pipeline wor...
This is the main entry point to the code generator. It returns the
computed size of the function...
Cretonne allows '_' in number constants.
07a96e609ef5c9b428134c3a2c396d0f9b0c22f9 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
This instruction moves a value between registers. This counts as a side
effect that is not track...
All emitted regmove instructions must be materialized as real move
instructions.
2ee37784ff19ea78c30ebe6904fa843c3da67604 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Same as a register copy, but different arguments.
edffd848bf4f7c2c53bcd6b6da7c9c572e098225 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>Include ISA-specific annotations in tracing and error messages.
b6d4b884ad058f77f40f1783b8e9f0428aac2749 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
When the test driver reports a verifier error, make sure to include the
TargetIsa when printing ...
We allow ghost instructions to exist if they have no side effects.
Instructions that affect cont...
This is used to indicate instructions that have some side effect that is
not modelled by the mor...
* Reduce code duplication in TypeConstraint subclasses; Add ConstrainWiderOrEqual to ti and to i...
a9147ebd30808b133ba56279bc8924cad3c93e08 authored over 7 years ago by d1m0 <[email protected]>* API and data structures proposal for the SSA construction module
* Polished API and impleme...
de5501bc47e5488371d8520ab87f32a152c73346 authored over 7 years ago by Denis Merigoux <[email protected]>
Use a PUT_OP macro in the TailRecipe Python class to replace the code
snippet that emits the pre...
Add a TailRecipe.rex() method which creates an encoding recipe with a
REX prefix.
Define I64 en...
6ae4eb82f8815380e768a2da2fae8f149590a05c authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>c5cddc3eacb17ae50c2184cf7e0b13a0fd171204 authored over 7 years ago by d1m0 <[email protected]>
* Emit runtime type checks in legalizer.rs
98f822f3476cb600f78b7ff14036a82316f3e9e0 authored over 7 years ago by d1m0 <[email protected]>Generate code to:
- Unwrap the instruction and generate an error if the instruction format
do...
Write out multiple code lines from a single string after stripping a
common indentation.
Also u...
814d0769362e522cb314ed547211cc27c356fc82 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>The redefined tied value lives in the diverted register.
d8d07a6dfccc2cd6c1f446ce6951d1d23344fd52 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>Many ISAs don't need 4 top-level register classes, so don't print them.
6f8262438b320e485ca32fa96ed6a3f001483d1c authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>0f285cb13759596690818cf22b209a1c238c2614 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Any tied register uses are interesting enough to be added to the reguses
list if their value is ...
As per the comment in TypeEnv.normalize_tv about cancellation, whenever we create a TypeVar we m...
83e55525d6d28f5a28457f6a6206ac404bb3fde8 authored over 7 years ago by d1m0 <[email protected]>We need to move the previous value out of the way first.
fe127ab3eba52314c15591cb7fbd2ad01e117ce3 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>Also add a display() method which accepts a RegInfo reference.
c75004339b7eedd2490e12a97e07033793a99f10 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>Make sure we use the diverted register location for tied operands.
9a7ee4ca1226c650132f72c42a550a84375dd8b0 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>* Add more rigorous type inference and encapsulate the type inferece code in its own file (ti.py...
a5c96ef6bf05ee10468c577f147ae3a5369f211e authored over 7 years ago by d1m0 <[email protected]>
* Fixed bug in verifier
Does not check variable def for unreachable codex
* Check reachabili...
f867ddbf0c1debef2db3b3a9cb3956953677ea0b authored over 7 years ago by Denis Merigoux <[email protected]>
Include a very basic test using an Intel 'sub' instruction. More to
follow.
1a24489a0e185a28b2a265590b8caa1957f84d2a authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
3608be35a95ea81f3dbd26d13792771092b568bc authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
This is just a rough sketch to get us started. There are bound to be
some issues.
This also leg...
9766fc3fcdd9764e800d44b8a98ba0eb8494cf7c authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
It is sometimes useful to create constant lists of register units by
name. The generated RU enum...
Tests are forthcoming, we need to implement Intel ABI lowering first.
6c5f5e1147a2356532f5c2bd81a89272be6f05f4 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
The following constraints may need to be resolved during spilling
because the resolution increas...
Use it to access live ranges that are supposed to be there.
51dcabd87c29bf9a57db81ce17e43ca6ca2bd09c authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>3fbcdb4ea610a9658f4e4ec9b0beff5dc1dc97a1 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
It is possible to pass a register value as an argument to an EBB that
expects a "None" affinity....
We'll need to pick a spill candidate from a set and allow for the search
to fail to find anythin...
A priory, an EBB argument value only gets an affinity if it is used
directly by a non-ghost inst...
When an EBB argument value is used only as a return value, it still
needs to be given a register...
A function parameter in an incoming_arg stack slot should not be
coalesced into any virtual regi...
Function arguments that don't fit in registers are passed on the stack.
Create "incoming_arg" s...
2a600b3632d30536b3352406017831061e0af42c authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
The offset is relative to the stack pointer in the calling function, so
it excludes the return a...
When coloring registers for a branch instruction, also make sure that
the values passed as EBB a...
Ghost instructions don't generate code, but they can keep registers
alive. The coloring pass nee...
1fa88991924395d748c425ef0a4d0f74e8d21437 authored over 7 years ago by Dimo <[email protected]>
6a9438d274fb01357cfa5d5a041aaf431348569a authored over 7 years ago by d1m0 <[email protected]>
When the spiller decides to spill a value, bring along all of the values
in its virtual register...
83cc08a457fcf1c03f3330aa63c2ecc27788a601 authored over 7 years ago by Dan Gohman <[email protected]>
* Convert TypeSet fields to sets; Add BitSet<T> type to rust; Encode ValueTypeSets using BitSet;...
4ebc0e85873bebf5762496fb436be391b04a39da authored over 7 years ago by d1m0 <[email protected]>
Coalescing means creating virtual registers and transforming the code
into conventional SSA form...
Add a VirtRegs collection which tracks virtual registers.
A virtual register is a set of relate...
719fc02c79e3324cd5abe88b692c68e22b4c5d12 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
The overlaps_def() method tests if a definition would conflict with the
live range.
The reaches...
268e8e3114b5a1b3ca66ec8f2b64c0a44e7fbe22 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Ghost instructions don't have an encoding, and don't appear in the
output. The values they defin...
2a9b8162c8bbacdf01af68de79f9b7102e9e6244 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
e094389f121a5ce87dd30c8eec8b8ae824835285 authored over 7 years ago by Dan Gohman <[email protected]>
For large constants with the low 12 bits clear, we already have the
"lui" encoding. Add "addi %x...
* Clarify that extended basic blocks are abbreviated as EBB.
* Fix typo.
* Fix a typo.
...
e83e2ccf173ed6b007049e888bbaee45d2af9cd3 authored over 7 years ago by Dan Gohman <[email protected]>
The EntityRef trait is used by more than just the EntityMap now, so it
should live in its own mo...
* Replace a single-character string literal with a character literal.
* Use is_some() instead...
61a0844b24383bb34364e44a876217c4e5858b0f authored over 7 years ago by Dan Gohman <[email protected]>* Implement an iterator over encodings
* Implement TargetIsa::legal_encodings
* Exclude no...
1a480a257836e96b8ee2adcd9e335466b5cd7913 authored over 7 years ago by Aleksey Kuznetsov <[email protected]>As soon as a value is spilled, also assign it to a spill slot.
For now, create a new spill slot...
342121aba089adba96948c9993d1275ae20c6ba8 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>