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

TI failure due to misplaced import

12db123606a27c01a6988054bdae7c2d12fa854c authored over 7 years ago by Dimo <[email protected]>
Rename Dict[Var, TypeVar] to VarTyping; Add VarMap (Dict[Var,Var]). Add {Ast, Def, Rtl}.{vars(), substitution()} and Def.uses(), Def.definitions() - these enable checking structural equivalence between Rtls and doing variable substitutions between compatible Rtls; Add TypeEnv.permits() routine - allows checking if a given TypeEnv allows a given concrete typing without enumerating all typings (will be useful for determing which semantic transform applies to a given concrete typing).

15a7d50765887277c3edd373e973baa67be52157 authored over 7 years ago by Dimo <[email protected]>
Documentation nits; Sematnics syntax cleanup

9258283e145d6a59dff5f25a503674065d84ad0d authored over 7 years ago by Dimo <[email protected]>
Add insturction semantics. Add semantics for vsplit,vconcat,iadd. Add initial tests

40c86d58b9bc779fad43541054e720913ea97e53 authored over 7 years ago by Dimo <[email protected]>
Add the BVType; Add suport for bitvectors in TypeVar and TypeSet.

bd2e9e5d0b69fc44d2eac12395e2c6432b940f81 authored over 7 years ago by Dimo <[email protected]>
Assert all InstructionGroups are closed in TargetIsa.__init__(); Close x86 group

351d4af4ebf5f0e8770f9ce5636c2b0f7e684540 authored over 7 years ago by Dimo <[email protected]>
Fix CI: Var was only imported when mypy was present.

736b6a44a74d7959e4c14ce121fa4639d013649e authored over 7 years ago by Dimo <[email protected]>
Make legalization actions configurable.

When an instruction doesn't have a valid encoding for the target ISA, it
needs to be legalized. ...

127b22af5f47d1b4d87fd12ae55824637db56c78 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
test-all.sh should print the versions for both python2 and python3 its using

a06964fc0ef4e0e617322f1d6199bef412b8ead5 authored over 7 years ago by Dimo <[email protected]>
Add a PredicateView type to abstract the predicate bit vector a bit.

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]>
Return a Result from constant_hash::probe.

When a hash table probe fails, return the index of the failed entry.
This can be used to store d...

df1bf7d57875da8f700016cf98f4b37025327572 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Intel encodings for floating point bitwise ops.

band, bor, bxor, band_not are all available on XMM registers.

2b41f979cbbd26396f184ac9e717e9b5e850bac4 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add bitwise ops that invert the second operand.

ARM has all of these as scalar integer instructions. Intel has band_not
in SSE and as a scalar i...

6ba604125da4fc767b880bf1cdcea0ec00c066b1 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Intel encodings for fadd, fsub, fmul, fdiv.

014d9a14fe54bb4677b98ae277c56224c650eaeb authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add some signed int to float conversions.

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]>
Intel encodings for trap.

Use a ud2 instruction which generates an undefined instruction
exception.

e8acad5070d668b9e320e1dd747fbbeae74ad83a authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add Intel encodings for sextend and uextend.

b804bc8fbc0eea1ab622ed898cdaa67f20718a90 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add a null encoding for ireduce.i32.i64.

This conversion doesn't require any code, we're just looking at the bits
differently.

444f955466eccbdd6b75b41a7548e5ee20e4b9ad authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add tests for WebAssembly i64 operators.

This only works on 64-bit haswell for now. We need more legalization
patterns for 32-bit ISAs.

13190fd5124615aa1f69a53c45c47b1e1ced5c16 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add tests for WebAssembly i32 comparisons.

One function for each comparison operator.

bd55bd74cc926a8fe8e019f02fb98fe548cfc4c6 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add Intel encodings for the bint instructions.

Convert b1 to i32 or i64 by zero-extending the byte.

265bd351bde107ce3f73ca664e8e709083519b29 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add Intel encodings for the icmp instruction.

This instruction returns a `b1` value which is represented as the output
of a setCC instruction ...

82fbc78f2fb95f7854ef26cad1c469ff0deafade authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Don't require that the fallthrough instruction has an encoding.

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]>
Add Intel encodings for jump and branch instructions.

Just implement jump, brz, and brnz as needed for WebAssembly.

0a7087732e234557780cdc87f0a424b379a2a1fe authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Track regmove instruction during binemit.

Register locations can change throughout an EBB. Make sure the
emit_inst() function considers th...

2927878707b5ba9bf956fb25cadb63302c0b546f authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Begin an Intel-specific instruction group.

Add instructions representing Intel's division instructions which use a
numerator that is twice ...

306ef2095bdce9d0584e1266813b7432ee680946 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add Intel encodings for imul.

02fd83cd5c87866035352ed08afb1022fcd61bd8 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add a Context::emit_to_memory function.

This function will emit the binary machine code into contiguous raw
memory while sending relocat...

28457f82c3ebf06b9d6062546374481914cecc8f authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add Intel BMI1 ctz and clz encodings.

e3ff551c2b63706d614e5a61954b432f4884019b authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add support for setting presets.

Fixes #11.

Presets are groups of settings and values applied at once. This is used
as a shortha...

4bb0e2014c79cc65b9c83577aab9292dcb09a663 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add documentation for immediates with type bool.

This makes the documentation for the new bconst instruction more complete.

89634fa645e4fa8640a2eb0e9698e55a7646b5e4 authored over 7 years ago by Dan Gohman <[email protected]>
CSSA verifier.

During register allocation, the code must be kept in conventional SSA
form. Add a verifier that ...

52dae7c2e2f571cd90d4d6214aed187da59c7f0c authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add a bconst instruction. (#116)

* Add a bconst instruction.

3bcfb103b9da904fac3281a8524b7188151c3d83 authored over 7 years ago by Dan Gohman <[email protected]>
Add some ISA predicates for Intel CPUID features.

Guard the popcnt instruction on the proper CPUID bits.

d8e2cb2b4227747390483846dfe25d3b2f7d8df2 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add Intel encodings for popcnt.

Change the result type for the bit-counting instructions from a fixed i8
to the iB type variable...

b6f2f0d862c3e076255dd19d49fab81ad523a06b authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add Intel encodings for shift and rotate instructions.

5615e4a9e7fdbab545cb3ac9903d7bb86c0e10c9 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add a WebAssembly filetests directory.

Start adding little 'test compile' test cases which check that the full
compilation pipeline wor...

3d738d01bb02bca73da5ef25d815e4c403a469c8 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add a Context::compile() function which runs all compiler passes.

This is the main entry point to the code generator. It returns the
computed size of the function...

6cc729a69b06a887d8c37c6ea6f60f87baab4b5a authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Fix Vim syntax highlighting of numbers.

Cretonne allows '_' in number constants.

07a96e609ef5c9b428134c3a2c396d0f9b0c22f9 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Tag the regmove instruction with other_side_effects.

This instruction moves a value between registers. This counts as a side
effect that is not track...

6e0834eea93be03a758627c965b82a90af8f1559 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Attach encodings to regmove instructions generated during coloring.

All emitted regmove instructions must be materialized as real move
instructions.

abc174348687cd05fae2a15269a8362fe850f973 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add RISC-V regmove encodings.

2ee37784ff19ea78c30ebe6904fa843c3da67604 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add Intel regmove encodings.

Same as a register copy, but different arguments.

edffd848bf4f7c2c53bcd6b6da7c9c572e098225 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add an ISA argument to dfg.display_inst().

Include ISA-specific annotations in tracing and error messages.

b6d4b884ad058f77f40f1783b8e9f0428aac2749 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Include ISA-specific information in verifier errors.

When the test driver reports a verifier error, make sure to include the
TargetIsa when printing ...

71af555e6f6fa094be42e51676492dd04d0c3053 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Enforce encodings for instructions with side effects.

We allow ghost instructions to exist if they have no side effects.
Instructions that affect cont...

24b53efc9d22fde5c18f981ce795704b3f9f5ef6 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add an other_side_effects instruction flag.

This is used to indicate instructions that have some side effect that is
not modelled by the mor...

6ee432329d6f7034fbd1dc3fa879188dbf900d0f authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add fix for #114 (#115)

* Reduce code duplication in TypeConstraint subclasses; Add ConstrainWiderOrEqual to ti and to i...

a9147ebd30808b133ba56279bc8924cad3c93e08 authored over 7 years ago by d1m0 <[email protected]>
Cretonne IL frontend: ILBuilder (#97)

* 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]>
Move Intel recipe_* bodies into intel/recipes.py.

Use a PUT_OP macro in the TailRecipe Python class to replace the code
snippet that emits the pre...

263779ac5649e78a07e559960f0483a1151693ed authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Start adding Intel 64-bit encodings.

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]>
Handle bound instructions in pattern type inference (#113)

c5cddc3eacb17ae50c2184cf7e0b13a0fd171204 authored over 7 years ago by d1m0 <[email protected]>
Emit runtime type checks in legalizer.rs (#112)

* Emit runtime type checks in legalizer.rs

98f822f3476cb600f78b7ff14036a82316f3e9e0 authored over 7 years ago by d1m0 <[email protected]>
Generate instruction unwrapping code for binemit recipes.

Generate code to:

- Unwrap the instruction and generate an error if the instruction format
do...

464f2625d4717686798e66dd744c4371fe598b3e authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add a fmt.multi_line() method to srcgen.Formatter.

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]>
Test a tied operand following a fixed register operand.

The redefined tied value lives in the diverted register.

d8d07a6dfccc2cd6c1f446ce6951d1d23344fd52 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Only print pressure for toprcs containing registers.

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]>
Intel 32-bit encodings for copy.i32.

0f285cb13759596690818cf22b209a1c238c2614 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Handle tied operands that are not killed by their use.

Any tied register uses are interesting enough to be added to the reguses
list if their value is ...

22541086fdf075813826c947f1ff683ab17712f8 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Cleanup typos; Remove SAMEAS; More descriptive rank comments; Introduce explicit sorting in free_typevars() (#111)

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]>
Test two consecutive fixed operands.

We need to move the previous value out of the way first.

fe127ab3eba52314c15591cb7fbd2ad01e117ce3 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Implement fmt::Display for AllocatableSet.

Also add a display() method which accepts a RegInfo reference.

c75004339b7eedd2490e12a97e07033793a99f10 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add a test with a fixed register constraint.

Make sure we use the diverted register location for tied operands.

9a7ee4ca1226c650132f72c42a550a84375dd8b0 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add better type inference and encapsulate it in its own file (#110)

* 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 (#109)

* 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]>
Add support for tied operands.

Include a very basic test using an Intel 'sub' instruction. More to
follow.

8c60555409a36780052f3f1eb706c1f349474dcb authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add Intel call/return encodings.

1a24489a0e185a28b2a265590b8caa1957f84d2a authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add Intel iconst.i32 encoding.

3608be35a95ea81f3dbd26d13792771092b568bc authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Implement the basics of the x86-64 ABI.

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]>
Generate an enum with all the register units in a target.

It is sometimes useful to create constant lists of register units by
name. The generated RU enum...

68ca285507854fba4011bb6899402334ad421134 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Hook up the handling of tied register constraints.

Tests are forthcoming, we need to implement Intel ABI lowering first.

6c5f5e1147a2356532f5c2bd81a89272be6f05f4 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Repair constraint violations during spilling.

The following constraints may need to be resolved during spilling
because the resolution increas...

bf5281ca41a62c8e36917274881f26494fbb79aa authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add an Index<Value> implementation to Liveness.

Use it to access live ranges that are supposed to be there.

51dcabd87c29bf9a57db81ce17e43ca6ca2bd09c authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Spill live-ins and EBB arguments if there are too many.

3fbcdb4ea610a9658f4e4ec9b0beff5dc1dc97a1 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Only color EBB arguments that have register affinity.

It is possible to pass a register value as an argument to an EBB that
expects a "None" affinity....

8c84e2b2aa323430ab11d09d452d37b49f204ac1 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Split spill_from() into spill_candidate() and spill_reg().

We'll need to pick a spill candidate from a set and allow for the search
to fail to find anythin...

66dbf9517b4243a5789ec145415abba715eb6e64 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Propagate affinities for EBB arguments.

A priory, an EBB argument value only gets an affinity if it is used
directly by a non-ghost inst...

6d34476cd695fc9f041f90fdecd9f1090e0fae0e authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Make sure return values are assigned an affinity.

When an EBB argument value is used only as a return value, it still
needs to be given a register...

cd1503eced90a6505662016bc1fa646ef3d458fb authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Don't coalesce incoming stack arguments.

A function parameter in an incoming_arg stack slot should not be
coalesced into any virtual regi...

c4532b901ef4ae61094c0722ae991d84ea31ed70 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Assign stack slots to incoming function arguments.

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]>
Add an offset to StackSlotData.

The offset is relative to the stack pointer in the calling function, so
it excludes the return a...

ed3157f508a90f94e3c62a511650121357f06bf3 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Color EBB arguments.

When coloring registers for a branch instruction, also make sure that
the values passed as EBB a...

1d20c92ffe003ba18dfbfb28677e9a7186ded38a authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Process ghost instruction kills during coloring.

Ghost instructions don't generate code, but they can keep registers
alive. The coloring pass nee...

c24f64de3b93ecac85ca67cb46dc37303890b3b1 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Cleanup ValueType.get_names to with_bits form previous PR; Add computation of inverse image of typeset across a derived function - TypeSet.map_inverse; Change TypeVar.constrain_type to perform a more-general computation using inverse images of TypeSets; Tests for map_inverse;

1fa88991924395d748c425ef0a4d0f74e8d21437 authored over 7 years ago by Dimo <[email protected]>
Add image computation of typesets; Remove TypeVar.singleton_type - instead derive singleton type from typeset; (#104)

6a9438d274fb01357cfa5d5a041aaf431348569a authored over 7 years ago by d1m0 <[email protected]>
Spill whole virtual registers at a time.

When the spiller decides to spill a value, bring along all of the values
in its virtual register...

9487b885da866e7dbe45b18cfd11516c9fb4dd5c authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add rusty-tags.* to .gitignore.

83cc08a457fcf1c03f3330aa63c2ecc27788a601 authored over 7 years ago by Dan Gohman <[email protected]>
Convert interval sets inside TypeSet/ValueTypeSet in general sets (#102)

* 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]>
Add a coalescing pass to the register allocator.

Coalescing means creating virtual registers and transforming the code
into conventional SSA form...

cf967642a3ebf099077392367401a72e550d0066 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Virtual registers.

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]>
Add two interference checking methods to LiveInterval.

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]>
Skip ghost instructions when coloring.

Ghost instructions don't have an encoding, and don't appear in the
output. The values they defin...

0f2459dd21bd8941158b76da47d7e58e33ea9868 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Implement Display and Debug for the program point types.

2a9b8162c8bbacdf01af68de79f9b7102e9e6244 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Add a simple_gvn test that includes some basic control flow.

e094389f121a5ce87dd30c8eec8b8ae824835285 authored over 7 years ago by Dan Gohman <[email protected]>
Encode iconst.i32 for RISC-V.

For large constants with the low 12 bits clear, we already have the
"lui" encoding. Add "addi %x...

9e02b9818f8300fdffd311caaefcd0ac116d1cb1 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Documentation fixes (#103)

* 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]>
Move EntityRef and entity_impl! into a new module.

The EntityRef trait is used by more than just the EntityMap now, so it
should live in its own mo...

b4e785d0f57ddb12d17d22d667a42c53461cb613 authored over 7 years ago by Jakob Stoklund Olesen <[email protected]>
Lint fixes (#99)

* 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 (#96)

* Implement an iterator over encodings

* Implement TargetIsa::legal_encodings

* Exclude no...

1a480a257836e96b8ee2adcd9e335466b5cd7913 authored over 7 years ago by Aleksey Kuznetsov <[email protected]>
Assign spill slots to spilled values.

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]>