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

Coalesce live range intervals in adjacent EBBs

LiveRanges represent the live-in range of a value as a sorted
list of intervals. Each interval s...

73202bb3dc22489af98295c2e20d4704df3851d7 authored almost 8 years ago by Mikko Perttunen <[email protected]>
Compute register affinities during liveness analysis.

Each live range has an affinity hint containing the preferred register
class (or stack slot). Co...

8ca61b2a24bb4739ca96fe6734f7a89c94fcadfd authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Speling.

4ae7fd2a372806cdc1b4cfdcb37512b2071bda0f authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Fix a dead code warning from the new Rust compiler.

On ISAs with no instruction predicates, just emit an unimplemented!()
stub for the check_instp()...

4293bed745ad1e01967648e9263107595e806886 authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add entity lists.

Like a vector, but with a tiny footprint, and allocated from a pool so
all memory can be release...

0ada419fe7eb9bf7c6e1e1fba1f0104a1bfd615c authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Implement value affinities for register allocation.

An SSA value is usually biased towards a specific register class or a
stack slot, depending on t...

3c4d54c4bd2c514fe75134bd3ddb3f2df960e5c2 authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Fix some typos in the documentation

These were found by the spellchecker.

a395f01b3eafe36beeadf744e337ec1f30208eb6 authored almost 8 years ago by Andrea Canciani <[email protected]>
Stop testing on nightly rust

The nightly compiler isn't able to compile rustfmt in 10 minutes. This causes Travis CI to termi...

7e54cdb4f55482d74619f87f54c8cee575db813f authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Make sure we can find rustfmt.

0d3990c3945cd1ef0ceeeeea7b84044de2d96236 authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Install rustfmt when running under Travis CI.

The built rustfmt should be cached.

6e33173fce77d2d1f262f6f1e25a92e6b44a8bd5 authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add pip files to the cache.

5b71ec922a3257190a918af9d5a622859404e685 authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Upgrade to rustfmt 0.7.1

c132b8c328c74687da3b7da38b0ed456559985ad authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Doesn't work with 12.02 LTS's Python 3.2.

Try switching to Trusty to get a newer Python 3.

188ffb9881bdab7b52f6bf853c2e66c93de4bbc1 authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
The python3-pip package does not exist on Ubuntu 12.04 LTS.

Try to go via python3-setuptools instead.

f2b567b83f8e30d94813b1ad14187574e5bbac18 authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Pull in a python3 Ubuntu package for Travis CI.

Then use pip3 to install dependencies.

27e735b028bb6563f736e7df6a97913b887931e3 authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Use Python 3.6 in Travis builds

8635aedc20ee1230511d6a8a22c8070b771ef1a4 authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Install Python packages without Travis root user.

c111361e19ca8b60e9e6d2de46765f87f9cfe76d authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Install mypy and flake8 in Travis environment.

42a0c27b246abca0d79b7db21a8aedba135e30cd authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Run Python checks from test-all.sh

The Python style enforcements are easy to miss otherwise.

2932d41f183a17e7dace0b334232a79df98643ae authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Compute register class intersections.

Ensure that the set of register classes is closed under intersection.

Provide a RegClass::inter...

672e4abd7e619470433a2b286681bdb1a4423b69 authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add operand register constraints.

Every encoding recipe must specify register constraints on input and
output values.

Generate re...

0394f3503480497b346dcf3bbb8781c0527a698a authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add an AllocatableSet for registers.

This set of available register units also manages register aliasing in
an efficient way.

Detect...

58dedb673a09739abc048b21d8a73abb542fef04 authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Generate register class descriptors.

Add a mechanism for defining sub-classes of register classes.

ae926157c29c900621b2e98d07a742a7ab32b67a authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Fix flake8 style issue.

ac798c1aed5227828b578f62261eabe2f660697a authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Remove EntityRef::wrap().

This has been superceded by PackedOption.

8f2ca7c4718a3090dc6d41a82d581fc26aa56c4d authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Remove NO_INST and the Default+Ord impls for Inst.

Clean up comments.

Add an assertion to check that PackedOption is working as designed.

1221d942727196490ca60b69a9f33eddbf2901b7 authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Use PackedOption<Inst> in the dominator tree.

Also rework the algorithm to be more robust against unreachable blocks.

- Add an is_reachable(e...

4aa5c313ea96021e1942e694d7f1dabdd7500691 authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Use PackedOption<Value> instead of NO_VALUE.

- Remove NO_VALUE and ExpandedValue::None.
- Remove the Default implelmentation for Value.
- Ins...

2e6cf219e9a9d7fc8e68632f700750a0ea439c10 authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Avoid using NO_INST in the parser.

This was only used for the comment rewrite mechanism, and we can just
predict the next allocated...

f2b9f62f248995380e894d1e5b347ef2ad4b0198 authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Use PackedOption<Inst> in the Layout implementation.

This also revealed that the last_inst() method should return an Option.

3fc0f802235d623fb0373472418afc9737603639 authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Use PackedOption<Ebb> in the Layout implementation.

The doubly linked lists are terminated with None.

Remove NO_EBB and the Default impl for Ebb.

52db486500c902bd8788994334ca9ab957f1665f authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Use PackedOption<Ebb> to represent jump tables.

Avoid NO_EBB.

5fc222348d3a25db8ccab1402938bebd6dd9965b authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Remove Default implementations from many entity references.

These types can be wrapped in a PackedOption now, so we don't need the
NO_* constants and defaul...

f004f370c5657dcf01821de909cc1fa07ef10326 authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Move duplicated entity code into a macro.

Implement ReservedValue for all the entities.

c041a51e2ea90b6a07db048eb8eba864af244629 authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Implement PackedOption to address #19.

The PackedOption<T> struct uses the same amount of memory as T, but can
represent None via a res...

e8993e79e42eab3a5ff64c4a3205aa165ddee09a authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Update regalloc document to reflect implementation.

7b80bd03e30d74bb408fac150580901a659b5e17 authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add a liveness analysis.

This code is best tested with larger functions with more EBBs.
Perhaps a new file-test category ...

8033deda3ac152d0b95bb0ad80b419625c3f0d58 authored almost 8 years ago by Jakob Stoklund Olesen <[email protected]>
Implement DoubleEndedIterator for the ebb_insts() iterator.

Make it possible to iterate backwards over the instructions in an EBB.

8390c829d353bf1deca9fe02443b951e75e40191 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Allow live ranges to be values in a SparseMap.

This requires the value number to be stored in the live range itself.

29777e26eedf8313ab97bf1b74b65d9a94aa0ad3 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add iteration support to SparseMap.

This is simply the slice iterator for the dense vector.

- map.values() returns an iterator with...

a26a8b5f0d0af9526370db4d268806c732fcaffc authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Implement a SparseMap data structure.

This implements the classic Briggs/Torczon sparse set construct.

Adapt it to our existing Entit...

56177ce351562632e3c428ebeafa6803631dcb1b authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add a LiveRange data structure.

We will track live ranges separately for each SSA value, rather than per
virtual register like L...

94a54eaf3011fcfb4935849e524f4f9e62c1a992 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Encourage better optimization of ProgramOrder::cmp.

The ProgramOrder::cmp() comparison is often used where one or both
arguments are statically know...

27483d93969fd2ab6a0212facefb50e803b2a703 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Implement ProgramOrder for Layout.

Assign sequence numbers to both instructions and EBB headers such that
their relative position c...

f1234003a9de7d08006316bd46c2593bf75431f7 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Upgrade to rustfmt 0.6.3

893a630ca0fe59750819bdf755e583b971dcd776 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add program points.

Program points are used to represent a linear position in a function.
Thus will be used for the ...

3568b93b84bb779d3814026398e2e296bfb5739b authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add a ValueLoc type and the locations table.

This table holds the result of register allocation.

f9af88c49e8c4da64d9bc1e30434aaf050b983df authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Fix Python formatting to keep flake8 happy.

Python coding style is verified by the lib/cretonne/meta/check.sh script
which is not run as par...

3392a2b79ab874a157aaa966c337dd07fefefda3 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
remove old `is_terminating` function

for InstructionData. Use generated `is_terminator()` for `Opcode`
instead. `is_terminator`, `can...

c1ecb29851dc0caa6569d6562dee6f7605accee8 authored about 8 years ago by Dominik Inführ <[email protected]>
added Opcode flags methods

generate `is_branch`, `is_terminator`, `can_trap` methods for `enum
Opcode`.

93aa2b456e32433db793f14b03fd1b389bd433ee authored about 8 years ago by Dominik Inführ <[email protected]>
Fill in boilerplate for Intel and ARM targets.

The intel, arm32, and arm32 targets were only defined in the meta
language previously. Add Rust ...

19ac05577c07cc2485b1ad0abe35c15100007557 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Generate register bank descriptions.

Use the information in the ISA's registers.py files to generate a
RegInfo Rust data structure.

1f6dd0dab7111d0fc0799829abf5bfaa5e3c1d38 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Start a design document for the Cretonne register allocator.

9cdccf66912ebf7db650f774bdaf017c923cce0f authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Fix some typos in the Language Reference

977adddc0ac04f4cc0b56f9e6010bff46a3fbf14 authored about 8 years ago by ranma42 <[email protected]>
Added link to README about nasal demons.

a8cd8bc18bf0da35d9bf2d25552b25cf5998a6ee authored about 8 years ago by Jacob Shaffer <[email protected]>
Define register classes for 4 ISAs.

4192ba0532cfdd0aeea7fe8602493e57f148f606 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Define register banks.

Add a RegBank class for describing CPU register banks.

Define register banks for all the ISA st...

b0b6a8f6935900a34be62f830815709de1c33e66 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Move some utility functions into the cdsl package.

- is_power_of_two
- next_power_of_two

Make sure we run doctests on these functions.

c20d7d8f138ac184e3c82f910d6809a0e6b42bd2 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add stubs for Intel and ARM architectures.

The Intel ISA handles both 32-bit and 64-bit code.

ARM is split into separate arm32 and arm64 I...

77c672a2793afd91c8407a8e1d40c57b7657596d authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Use uppercase for the global riscv.ISA constant.

856b8c99aaa3196fcaa544a7bd0a4e45924305c4 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Emit type arguments to builder methods that need it.

Use the inferred type variables to construct a type argument for builder
methods. This is for th...

a7c58b817c503972d7a4b6d72d9d2169b87b7230 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add expansion patterns for large immediates.

Expand foo_imm into iconst + foo.

d76280afba31afc5571a9e7a9fb4eda885ddeb93 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add TypeVar.rust_expr().

Generate a Rust expression that computes the value of a derived type
variable.

5c9a12f101e9d6288bcc2576172cebaefd7a0f9f authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Infer type constraints on patterns.

Each instruction used in a pattern has constraints on the types of its
operands. These constrain...

bf1568035f63e994792db6171c49ca25bd0473bd authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add a TypeVar.constrain_types() function.

This reduces the set of types a type variable can assume.

This implementation is not complete y...

935da5946f951a8a22f353901022089f1881b11c authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add TypeVar.strip_sameas().

Strips out any type variable copies from an expression.

6fd5c6195d34524415b0e86bdf610fb29d42eba7 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add TypeVar.derived() function.

Add TypeVar constants representing the available type functions, and a
TypeVar.derived() static ...

98b3bd9e092ccff34695b8cfae6887cb4b598a7d authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Fix doc build.

dd326350ffd50b976a632e8a26e8848556fa3416 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Assign a type variable to all VALUE operands.

A few operands have a fixed type assigned. Create a singleton type
variable for these exceptions...

45fd134d3e1d6b4cbdfc3a25695bd9843d64b8cc authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Clean up meta-language reference after module splitup.

9327d567b4474d58ffa37b15536cb0af825835cc authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Move ISA definitions into cdsl.isa.

The cretonne package is now split into two: cdsl and base.

bd7662326649714ca76d5132328540ae7f2415ca authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Split out instruction definitions.

- cdsl.instructions defines the Instruction class.
- base.instructions defines the base instruct...

5fa322f7971cf0873bc2d1054d0facac82677fd3 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Move ast, xform, and legalize modules.

- cdsl.ast defines classes representing abstract syntax trees.
- cdsl.xform defines classes for ...

09204ca14a09c5cdfe20325bacb59364e334af38 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Split out instruction formats.

- cdsl.formats provides classes for describing instruction formats.
- base.formats provides conc...

2a1513051886d117463d6c9d375c26d4f39d14c2 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Move Operand itself into cdsl.operands.

fa7dc6825aab5f167155a2f363837658c87223ea authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Get rid of operand_kind()

This method caused lots of import cycles when type checking.

Use isinstance() in the Operand co...

93a1387f2f9360236784b8888423e46adcd35a9d authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Split out the typevar module.

- cdsl.typevar defines TypeVar and TypeSet classes.

5498169ca0aafad318ca9b3ee911a5112fe94027 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Move formats, entities, and immediates to the base package.

- base.formats defines instruction formats.
- base.entities defines kinds of entity references.
...

6eaa8eb3824e4dcd70c6b8a8eb2f446a5b44baae authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Split out operand descriptions.

- cdsl.operands has the Operand and OperandKind classes.

bb28dc6686171352440a80368daa456f400c0371 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Split out predicates and settings.

- cdsl.predicates defines classes for describing predicates.
- cdsl.settings defines classes for...

2fe61e83f67c802a0a1ea357656c08470f63db48 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Move ValueType into a new cdsl top-level module.

We want to separate the Python classes that make up the DSL used to
define the Cretonne language...

f8545574b5bdd5ea7edd93a071d98e03e3adec93 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Resolve import cycles.

1e1830aaa6108e57cf4c6c22fc1b6837c36d4edd authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add more Python type annotations.

01494b1a47bf23c09a5bf9943f5d43fced501f0d authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Check for unsupported value transformations.

Add an assertion for the value placements that we don't support yet.

1. A primary result in the...

1e2f3c0ed48fe5bddf08f6a29d3ade4d0c16697b authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Resolve value aliases when legalizing instructions.

Since we're deconstructing an instruction anyway, go ahead and resolve
any value aliases on its ...

7bbbe97d2f843d1b149b78d4a6be2dc51780a948 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Create value aliases when necessary.

If a secondary value in the source pattern becomes a primary value in
the destination pattern, i...

6f1a60366f2337f55dadb36f7bce269ab88ba01d authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Fix off-by-one in resolve_values.

When the extended_values table is empty, the value to resolve is
definitely not an alias, but we...

59fd74fb9abcd582b36bb751bac75b2f57575f29 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Write out value aliases when writing instructions.

If an instruction uses any values that are aliases of other values,
print out the alias mappings...

d34ec1bd06f3c27940b3e8cc31c3b79eadb86d1c authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add arguments() and arguments_mut() methods.

Provide a generic way of accessing the value arguments on an
instruction. This is provided as tw...

152aabbfc0166865c9598eb8e4d3fe8da8a790cf authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add a ref_slice module.

Utility functions for converting &T to an &[T] slice with a single
element.

c995cb6f43c30abffcab991b0e776bdefac91e37 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Advance the insertion cursor after replacinf an instruction.

When expanding iadd_cout, the original instruction is replaced with an
iadd, and an icmp is inse...

2b8732ae13ddb430e61596ba1c25e0af93649366 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
TestFile preamble comments apply to all functions.

Include the test file preamble comments when building a filecheck
instance for every function in...

a038279717cbb6d20c7a4cfa6c286929c4e80d01 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Gather comments in the preamble of a test file.

Comments preceding the first function are not associated with any
specific entity in the file. P...

c1b7080bf615bbb36db4e75bf1f4e417bf3220c8 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Revisit expanded instructions for legalization.

When an illegal instruction is replaced with other instructions, back up
and revisit the expande...

1641365f0198017f671cd9b4e11c89378b762f69 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add Cursor::set_position.

Make it possible to move a cursor to a new position.

In the current implementation of Layout an...

63fc81541e90bc4256a2caacb8338ecd7e5edf79 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add narrowing legalization patterns for bitwise ops.

RISC-V 32-bit tests for band.i64, bor.i64, bxor.i64.

9086c6c8f063cd4e724766e726ca40b2eb18eddc authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Return a Result from the TargetIsa::encode() method.

When an instruction can't be encoded, provide a viable legalization
action in the form of a Lega...

e24291fe4cfd7d836e3d7e098b2c73c798aab983 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add a Value::unwrap_direct() method.

When it is known that a value is the first result of an instruction, it
is safe to unwrap the in...

3bb6efba6e127525f60e6dc5bfca5263725d65e3 authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Legalization pattern emission WIP.

Begin emitting legalization patterns in the form of two functions,
'expand' and 'narrow' that ar...

125fe6412130d69268361bbfd1f49eaaeefee6ba authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>
Save a reference from a Var to its src and dst defs.

When a Var is used in an XForm, it can be defined in the src or dst or
both patterns, and it is ...

026c899042ded4b58d41c50b9f49b12686348c1d authored about 8 years ago by Jakob Stoklund Olesen <[email protected]>