Commit Graph

8 Commits

Author SHA1 Message Date
Jakob Stoklund Olesen
90bb2fd27d Add enums for condition codes.
The icmp and fmp instructions use different kinds of condition codes because
integers and floating point values behave differently.

Add a CondCode trait implementing shared behavior.
2016-07-06 15:51:41 -07:00
Jakob Stoklund Olesen
96e88893be Begin a basic command line interface.
Add an external dependency to the docopt package and use it for a scaffold
command line interface for the cton-util command.

I am not too happy about taking external dependencies, and docopt pulls in 13
other packages. However, I really don't want to be writing command line parsers,
and as long as the external dependencies are confined to the tools crate, we
should be fine.

The core cretonne crate should stay free of external dependencies to avoid
trouble with embedding it.

Implement a basic 'cat' subcommand which currently behaves like unix 'cat'. It
will gain parser powers soon.
2016-07-01 13:47:17 -07:00
Jakob Stoklund Olesen
9c9be1cb58 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, and the `instructions`
module contains instruction opcodes and formats.
2016-05-13 14:02:04 -07:00
Jakob Stoklund Olesen
ddea422ceb Add a write.rs module.
Convert a function to text.
2016-04-29 13:53:14 -07:00
Jakob Stoklund Olesen
3a570e8b21 Add repr.rs module containing the representation of functions.
A function owns instructions and extended basic blocks. References to these
entities are implemented as opaque structs indexing into the functions internal
tables. This avoids fighting Rust's ownership checking and it also makes
references 4 bytes on all platforms.

SSA values are identified similarly, but with an optimization for the first
value produced by an instruction. Very few instructions will produce more than
one value, and there is an extended value table for those.
2016-04-07 11:53:37 -07:00
Jakob Stoklund Olesen
38d0f626a7 Implement Imm64 in an 'immediates.rs' module.
Format larger immediates as hexadecimal with a multiple of 4 digits and '_'
group separators.
2016-04-01 10:08:01 -07:00
Jakob Stoklund Olesen
4ba29e594f Make the types module public, add documentation comments. 2016-03-11 16:06:14 -08:00
Jakob Stoklund Olesen
82e05bcbc9 Implement type representation in Rust.
Start the Cretonne library as a Rust crate.
2016-03-11 15:54:28 -08:00