Commit Graph

12 Commits

Author SHA1 Message Date
Jakob Stoklund Olesen
1e631fdbd6 Verify restrictions on polymorphism.
Add a typevar_operand argument to the InstructionFormat constructor which
determines the operand used for inferring the controlling type variable.

Identify polymorphic instructions when they are created, determine if the
controlling type variable can be inferred from the typevar_operand, and verify
the use of type variables in the other operands.

Generate type variable summary in the documentation, including how the
controlling type variable is inferred.
2016-05-19 14:59:46 -07:00
Jakob Stoklund Olesen
d85fda0346 Add entity references as a new operand kind.
Define known entities in the cretonne.entities module.
2016-05-18 15:31:02 -07:00
Jakob Stoklund Olesen
2dc15b78ae Add restrictions on polymorphism.
Also introduce the concept of a derived type variable, and provide two
methods for deriving type vars: lane() and as_bool().
2016-05-18 12:27:12 -07:00
Jakob Stoklund Olesen
bd221af412 Reorganize meta language reference.
Separate instruction descriptions from instruction formats which deal with the
Rust representation.

Add type class restrictions to type variables.
2016-05-18 12:27:12 -07:00
Jakob Stoklund Olesen
814231245c Add OperandKind to the meta language.
We have a two-level type system: OperandKinds and ValueTypes. The value types
only apply to value operands, but there are many more kinds of operands:
immediate numbers, condition codes, basic block references, etc.
2016-05-12 15:59:40 -07:00
Jakob Stoklund Olesen
7bf4570ba1 Add a RISC-V target.
Flesh out the directory structure for defining target instruction set
architectures. Use RISC-V as a startgin point because it is so simple.
2016-04-06 12:00:35 -07:00
Jakob Stoklund Olesen
6f083a310a Collect all instructions into instruction groups. 2016-04-05 14:42:41 -07:00
Jakob Olesen
a76a0da826 Add Instruction and Operand classes to the meta language. 2016-04-01 10:08:57 -07:00
Jakob Stoklund Olesen
10903503c4 Add ImmediateType for declaring immediate operands. 2016-03-30 14:17:42 -07:00
Jakob Olesen
29481a5851 Add type variables. 2016-03-16 10:41:24 -07:00
Jakob Olesen
29cc36c8d9 Enable inheritance diagrams. 2016-02-09 08:11:20 -08:00
Jakob Olesen
ec918fe332 Begin defining the meta language.
The Cretonne meta language is used to describe Cretonne instructions, both the
target independent ones in the base instruction set and real target
instructions.

Start by providing type definitions matching langref, and begin the meta
language reference using autodoc to pull in the PYthon definitions.
2016-02-04 19:51:38 -08:00