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

Add meta definition for bitcast.

This instruction uses two type variables: input and output. Make sure that our
parser can handle...

4a929f5e41e3d08c4248baa664db674f9b7baee5 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add meta definitions for floating point operations.

Rename the Select instruction format to Ternary since it is also used by the fma
instruction.

2bfb4ca5b7830a67022f9ce4e3e95df102acb6b5 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Define icmp and fcmp comparison instructions.

Add new intcc and floatcc operand types for the immediate condition codes on
these instructions....

86688053a65b6455ffc1bce5743fccabe99ea231 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add enums for condition codes.

The icmp and fmp instructions use different kinds of condition codes because
integers and floati...

90bb2fd27d793b6dd221a7340f372d2d3c0d2642 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Parse insertlane and extractlane instruction formats.

These instruction formats take immediate lane index operands. We store these as
u8 fields and re...

a6c136297579603eb35880b6052659e2d2924c8a authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Parse select instructions.

e5feb864c7e7924d9046b2e0420753086c96e7ec authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Parse branch and jump instructions.

These instruction formats take EBB references with lists of argument values. For
EBBs with no ar...

cdc2638f9687169cca0858f1612bf4674bb0e43b authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Print a type suffix on some polymorphic instructions.

a82554192aabbcdad310b2e17030fa9503bd603c authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add very basic test framework for parser tests.

Start with a shell script that runs .cton files through 'cton-util cat' and
compares the output ...

954fd015e0aacc5b30bf02db7ecf929e6f4fc1c6 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Ignore comments in .cton files.

The lexer still recognizes comments and generates tokens for them. They may be
useful for test a...

74038d153c12468ffc33b016c07c03647e194435 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Don't return any values from inst_results() for VOID instructions.

Instructions that don't produce any result values are marked with first_type() =
VOID. The inst_...

a985bc18bcd7dbfc242082782124b925cdaf7df0 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add a script for reformatting all sources.

This is mostly useful when updating to a new version of rustfmt with different
behavior.

9b5760d54425c9f1f4723ed3100e1175930178d7 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
rustfmt v0.5.0

a981fc5605892a119b8f0e3d8cd56a4d851679be authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Give a better error message for unknown opcodes.

Include the name of the unrecognized opcode along with the line number.

cb4e9fbae02a933bd63ea3178c9a3461eec8f42c authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Parse and write IR in the 'cat' subcommand.

The 'cton-util cat' command parses the given files and writes them out again to
stdout. This has...

7519475f917ae21fcc117119a8d74378355f0201 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Begin a basic command line interface.

Add an external dependency to the docopt package and use it for a scaffold
command line interfac...

96e88893be9bccf55393dde01152508ec69b969b authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Use an err! macro to build parser errors with format! arguments.

8fac050bb5c9650f3f476f6a3c771e1a99784457 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Avoid allocating a temporary Vec in the parser.

Wrangle the borrow checker into allowing us to iterate over function result
values while mutatin...

4eb327d0273946dda4ea79ab99c008942556fc4f authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Parse controlling type variable. Do basic type inference.

Replace the make_multi_inst() function with a make_inst_results() which uses
the constraint syst...

ecd8287eb0c257288b9c214490b0f1a0c3729a76 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Clean up unused-import warnings.

fc8d2f92fd85edbd01861978fcf165bfbdd4bd00 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Generate Value and Ebb references in lexer.

During parsing, it is possible to see instruction operands that reference
values or EBBs that ha...

f0fc9c9477450d39f6cc9741b77fbdf602222808 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add vector instructions.

Use derived type variables with the 'LaneOf' function.

Add u8 immediates to be used for lane in...

b1dd4ad37394e65f4936df90094aed4c1de9047c authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Implement select and vselect instructions.

This gives us the opportunity to use the AsBool derived type variables and a
Select instruction ...

b44d6c6541ff7afc9bba77223866e92391e6fd0e authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Generate value type constraints.

Add an Opcode::constraints() method which returns an OpcodeConstraints object.
This object provi...

692a85d72030941626757b92f218299e24bcee7d authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Verify restrictions on polymorphism.

Add a typevar_operand argument to the InstructionFormat constructor which
determines the operand...

1e631fdbd6dac53fe52a8277c79cf7d8e4b1535a authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add a BinaryOverflow instruction format.

This will eventualy be used for add-with-carry and add-with-overflow type
instructions. For now ...

210139c4bd0e1795443013d50aef4c1f068f5fa6 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Auto-generate boilerplate for 'impl InstructionData'.

Accessors for shared fields and multiple results can be generated automatically.

Add a 'boxed_s...

2ce5f05bed49aadb157ed804a3d82334be7ac7db authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Define control flow instructions.

Rename 'br' to 'jump'. We'll use jump/br to mean unconditional/conditional
control transfer resp...

ebe224a91259b13afaf23765df7e9ff18fe09e3b authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add entity references as a new operand kind.

Define known entities in the cretonne.entities module.

d85fda0346e008c39f91dc173bd9be0990b0bb37 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Reorganize meta language reference.

Separate instruction descriptions from instruction formats which deal with the
Rust representati...

bd221af412cc89213881894abe2af02889993278 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Parse basic blocks and instructions.

Create map entries for ebbs and values as they are defined, but leave ebb and
value operands unr...

1dcac579fb8e49e8bfe0495c86226d53b6c83acb authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add restrictions on polymorphism.

Also introduce the concept of a derived type variable, and provide two
methods for deriving type...

2dc15b78aed67ec19e5f3106baca1f408c28cf44 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Implement write_instruction and write_ebb.

Use the new iterators to write out the contents of a function.

9838a4040e7a04e0e8d4f8d61263ed8559e23eab authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Track instruction order in an EBB.

Place instructions in a doubly linked list and point to the first and last
instruction in an EBB...

5e0e9234642c80fd1b67ac244b890d1ebfd8b1d3 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Synchronize InstructionFormat and InstructionData.

These two enums must have identical variants. One is generated from the
instruction formats in m...

3670f57c408f889069c41e3316aae0344ae750aa authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Break entity references and instruction info out into new modules.

Avoid gathering too much code in repr.rs.

The `entities` module contains entity reference types...

9c9be1cb58f3cf4a0d40dd01bc5ca37e8d81f4ad authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Generate an InstructionFormat enum.

This is a no-payload enum which will have the same variants as InstructionData.
This makes it po...

e3927e205ea3bfe865937028d6cd6d638ce43f86 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Generate recursive meta language dependencies.

Cargo doesn't scan a directory for changed dependencies recursively, so do that
as part of the b...

3909cdbc2d971594c9eba73d9b3713b160a411e4 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add an InstructionFormat class to the meta language.

Define all known instruction formats in the cretonne.formats module.

ef04f4fc40d40a35cbc405bca05ece2ce9b4e655 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add OperandKind to the meta language.

We have a two-level type system: OperandKinds and ValueTypes. The value types
only apply to valu...

814231245c0f168bb9d47d7c5ccca6381619d265 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
PEP8 formatting.

f1e2dffa8180c3ec2c2a51bb2207415f1174287b authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Fix build.

21b0eae044d43dea83dcb71e369a56a61138b661 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Implement value lists.

Values that are defined together are represented as a singly linked list. These
lists appear in:...

1d768ff734212f1159fbed57020da948f3ce12d7 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Implement Index<Inst/StackSlot> for Function.

When Function serves as a container for IL entities, use the Index trait to
translate a referenc...

e026b36db416081ba08015cc64ad08cb951667b7 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Exit test script on errors.

e414ce6315a8e20bf906f9cc8b4e79e6d8c08517 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Build status badge.

3c0e2f6e9d8d5562f3c24289db625603eacd3b70 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Set up Travis CI

4e4c6346668b2fce1789ec2f59eecf9504f06f77 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Rename the 'cretonne' binary.

It soome that 'cargo doc' gets confused when there is both a library crate
and a binary called '...

d34ced543774df694cb849c5a35125cfe70a6570 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Rename libraries

libctonfile -> libreader.

This library will only provide .cton file reading/parsing services wh...

810a90e3222e33af36433a799627098e71df8198 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add a write.rs module.

Convert a function to text.

ddea422cebdeb7c8c678da8e0f901f105afde920 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Use x.to_string() instead of format!("{}", x).

Both use the Display trait.

5c4f3d01e2bd03de9c61e80c0c469fcf0c56182f authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Parse stack slot decls.

Add a stack slot array to repr::Function, use repr::StackSlot to reference them.

Parse stack sl...

88931983a81f574016691171718ee42e8fadff69 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add FunctionName, Signature to repr::Function.

Simplify the uses in parser.rs to avoid too many module qualifiers.

021bde11918e1a25c601ac81284b35bf1f515bba authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Tests for signature parser.

41d95c0342fccbec4ed9a2761f6a62d8f6655a70 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add top-level productions to language reference.

42364fda59804183430aca21495538b565908da7 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Fix documentation badge.

cda7943b0bc22fc09f8b9457670381f735fc43c7 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Begin parser unit tests, add public interface.

The main entry point is Parser::parse().

07afc6e8da8efdd7e4af0692a506657030a74b0b authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Simplify parser.

Use 'if let' instead of 'match' where it makes sense.

Use EBNF notation for the grammar rules. ...

8d0311b6428b12c362cafdb6d0d4afdf06aea3b5 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Parser for .cton files.

Recursive descent parser, although with this simple grammar there won't be any
recursion.

f1a4b28d3f4c9f762e682fe67340df5cd34b24fc authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add function signatures.

Describe function argument and return value types along with flags for passing
values in an ABI-...

04d3b10564de43741fc6af1e0cfdfd47cf0cd961 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Handle value type names in the lexer.

c712ddc7766b0ddc8d5c2de613b3ae39b0892f68 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Type::by() returns an Optional<Type>.

Don't use assertions to enforce the limits on SIMD lanes in a type, Type is too
fundamental for ...

9e00ce5081b2cf77353c3869a71f195ea25dcaf9 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Begin lexer implementation.

Add a lexer module which implements the lexical analysis of .cton files.

ab74770ffeda58cc20bc9855e2b1bfd2f92626b2 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Implement FromStr for Imm64, Ieee32, Ieee64.

These are bitwise exact conversions from string to immediates, implementing the
inverse of the D...

6a1f74125fb641f3007d2fad96a241599efd94f9 authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Migrate to readthedocs.io

f1d43652ad1f4d2fc641aeadb52c43af0849bb3f authored over 8 years ago by Jakob Stoklund Olesen <[email protected]>
Add some scaffolding for building more crates.

The src/tools directory contains the cretonne-tools crate which will build
binaries for testing ...

4f40a2ae797e018ca8b2a899c83a0081724b9dc4 authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Implement std::str::FromStr for matching opcodes.

Replace the home-grown from_str function.

49ae98a1e9f4b5f9d6cacecc092eb92262c0722a authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Typo.

66778dc23cbc9daeb2b7e7841c8de871b731b89c authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Generate a constant hash table for recognizing opcodes.

Use a simple quadratically probed, open addressed hash table. We could use a
parfect hash functi...

24e0828d204e7bce1e44ca0a9f731283f7cf95ad authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Generate an opcode_name() function.

This function returning a &'static str is more primitive that the Display
implementation. It all...

3dcd2f8e58f7cca639b0b4cae905db18c87f40d7 authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Add repr.rs module containing the representation of functions.

A function owns instructions and extended basic blocks. References to these
entities are impleme...

3a570e8b2168364c1c1e97c485aff4fc89dc6aaa authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Include generated Opcode enum in the immediates module.

Generate nice doc comments for the Opcode enum variants that 'cargo doc'
will pick up.

Include ...

d650d551a07e25faa716f15264a3f5a7b45c8b73 authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Begin source generation.

Start out easy by emiting an opcodes.rs file containing an opcode enumeration.

15f39c776c38493280223a4ed197b77e73e2f412 authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Add a RISC-V target.

Flesh out the directory structure for defining target instruction set
architectures. Use RISC-V ...

7bf4570ba1d7e5df07a5a793e963b8a3b711a521 authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Give instructions a CamelCase name.

This will be used as the instruction name in Rust code. By making this a
property of the instruc...

936d6e523a73f8c20fcef0301b4f1ff5e76ce249 authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Collect all instructions into instruction groups.

6f083a310ad267cab38eab45116a49b81eceaeff authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Add scaffolding for a Python build script.

Hook up a Cargo build script that runs a Python script in the meta directory.

d32d78d16c51fc172b19426896738b7177603247 authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Add an autohtml target to docs/Makefile.

This runs the convenient sphinx-autobuild web server for docs development.

d197f8a104e34353d0f8edb08b6bc952a3bdeb42 authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Replace bool with b1, b8, b16, ...

The b1 type is an abstract boolean value. The others are concrete
representations.

043bb1aba546ace26bd383403977df946767d863 authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Display quiet NaNs as 'NaN'.

This is recommended by IEEE 754-2008.

We still distinguish signaling NaNs with 'sNaN'.

79e765a1834964010bdaa13d317eab4951fb341b authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Implement IEEE immediates for binary32 and binary64.

Clarify the textual encoding of floating point numbers.

Don't allow decimal floating point sinc...

5f706b0a1fcd6f4170e0204d864dec52a66d9cf6 authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Add Instruction and Operand classes to the meta language.

a76a0da826407e65615128a734870df7cc37c583 authored almost 9 years ago by Jakob Olesen <[email protected]>
Move instruction definitions into meta.

Use the meta language to define instructions, just insert 'autoinst' references
in langref.

c3233fb332e62581b258f5c728d1eae802898738 authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Move constant instructions into meta.

Add new immediate types for floating point and vector immediates.
Use new immediates to define t...

e5305c249bb2aebbda5f619027e8b360284d7f7c authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Implement Imm64 in an 'immediates.rs' module.

Format larger immediates as hexadecimal with a multiple of 4 digits and '_'
group separators.

38d0f626a7d93cb00238314fcd348972fde41fb8 authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Add ImmediateType for declaring immediate operands.

10903503c48a67f8c022eeb8191afd97b91cc077 authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Add type variables.

29481a5851d234bfeb82b2cfb07588c64f38c679 authored almost 9 years ago by Jakob Olesen <[email protected]>
Make the types module public, add documentation comments.

4ba29e594fc21ba19a828e819ca5dee1c1391b3e authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Implement type representation in Rust.

Start the Cretonne library as a Rust crate.

82e05bcbc90381e3128dadb8a0935eb802e02d46 authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Enable inheritance diagrams.

29cc36c8d93d548496ec84601e6fc27b355a7e9b authored almost 9 years ago by Jakob Olesen <[email protected]>
Add a TypeDocumenter for Cretonne types.

Use the autodoc Sphinx module to add a .. autoctontype:: directive which
generates documentation...

06f9b65e12bea83a974c865dd3e3a70cf63778dc authored almost 9 years ago by Jakob Olesen <[email protected]>
Begin defining the meta language.

The Cretonne meta language is used to describe Cretonne instructions, both the
target independen...

ec918fe33280ea9dabf64f378752eabab9e027ed authored almost 9 years ago by Jakob Olesen <[email protected]>
Add some more type classes.

f66d2a26a2b365ad6086e3c15fa5dcac24abef49 authored almost 9 years ago by Jakob Olesen <[email protected]>
Add ReadTheDocs badge with link to documentation.

d1ed09183b2d6854f83b611d865d725577605097 authored almost 9 years ago by Jakob Olesen <[email protected]>
Update README.

5997554aed237fabe52e9b0b6d93d50231340eff authored almost 9 years ago by Jakob Olesen <[email protected]>
Clean up the list of operations somewhat.

ec7d65d8f130b93853c886dd77082e1bd38fee22 authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Document heaps.

519fed894b95cf90d859100daf5895cd39129403 authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Load, store, local variables.

095190b1a747b03fec93957632c6ecbf75a8ed42 authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Expand on control flow and direct function calls.

Define the syntax for function signatures.

43b4f7f4e74b4c952cee122107f0a0317dcacd8f authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>
Clarify local SSA form.

Rename 'local' to 'stack_slot'.

74eb6ce9014f8508be137d5cd35c69e69eacaafc authored almost 9 years ago by Jakob Stoklund Olesen <[email protected]>