Jakob Stoklund Olesen
75406ad5be
Move signatures into new ir::extfunc module.
...
This new module will gain more data types dealing with external function
calls.
2016-10-12 13:56:26 -07:00
Jakob Stoklund Olesen
b42d85ae24
Move signatures into new ir::extfunc module.
...
This new module will gain more data types dealing with external function
calls.
2016-10-12 13:56:26 -07:00
Jakob Stoklund Olesen
e5080fb64e
Use 'varargs' consistently for VariableArgs members.
...
The meta code generators need to be able to infer these too.
2016-10-12 13:56:26 -07:00
Jakob Stoklund Olesen
b258644d07
Use 'varargs' consistently for VariableArgs members.
...
The meta code generators need to be able to infer these too.
2016-10-12 13:56:26 -07:00
Jakob Stoklund Olesen
eeb6fe0983
Track InstructionData member names.
...
Entity references in instruction format operands also have member names
in the InstructionData struct. Track them the same way we track immediate operand member names.
Value operands still go in the arg / args members.
2016-10-12 13:56:26 -07:00
Jakob Stoklund Olesen
2372486ec5
Track InstructionData member names.
...
Entity references in instruction format operands also have member names
in the InstructionData struct. Track them the same way we track immediate operand member names.
Value operands still go in the arg / args members.
2016-10-12 13:56:26 -07:00
Jakob Stoklund Olesen
6158b7449a
Upgrade to rustfmt 0.6.2
2016-10-12 13:56:26 -07:00
Jakob Stoklund Olesen
02eae6afd0
Upgrade to rustfmt 0.6.2
2016-10-12 13:56:26 -07:00
Jakob Stoklund Olesen
6b784dd8dc
Create a phantom workspace manifest for all crates.
...
Share a single Cargo.lock and target directory at the repo top-level.
2016-10-10 10:52:48 -07:00
Jakob Stoklund Olesen
67abb2d2f6
Create a phantom workspace manifest for all crates.
...
Share a single Cargo.lock and target directory at the repo top-level.
2016-10-10 10:52:48 -07:00
Jakob Stoklund Olesen
3207e60795
Add legalization patterns.
2016-10-07 14:18:36 -07:00
Jakob Stoklund Olesen
a460a637dd
Add legalization patterns.
2016-10-07 14:18:36 -07:00
Jakob Stoklund Olesen
620f46202f
Define AST nodes and instruction transformations.
...
Enable syntax: iadd(x, y) which creates an Apply node.
Enable syntax: z << iadd(x, y) which creates a Def node.
Add an XForm class which represents source and destination patterns as
RTL lists.
2016-10-07 14:18:36 -07:00
Jakob Stoklund Olesen
7c91bacafe
Define AST nodes and instruction transformations.
...
Enable syntax: iadd(x, y) which creates an Apply node.
Enable syntax: z << iadd(x, y) which creates a Def node.
Add an XForm class which represents source and destination patterns as
RTL lists.
2016-10-07 14:18:36 -07:00
Jakob Stoklund Olesen
4db11d1ae7
Add legalization helper instructions.
...
The isplit_lohi instruction breaks an integer into two halves. This will
typically be used to get the two halves of an `i64` value on 32-bit
CPUs.
The iconcat_lohi is the reverse operation. It reconstructs the `i64`
from the low and high bits.
2016-09-27 16:22:32 -07:00
Jakob Stoklund Olesen
29c449f117
Add legalization helper instructions.
...
The isplit_lohi instruction breaks an integer into two halves. This will
typically be used to get the two halves of an `i64` value on 32-bit
CPUs.
The iconcat_lohi is the reverse operation. It reconstructs the `i64`
from the low and high bits.
2016-09-27 16:22:32 -07:00
Jakob Stoklund Olesen
2a4aaa3da1
Expand OpcodeConstraints to 32 bits.
...
Make room for 255 different type sets and 2^16 entries in the operand
constraints table.
2016-09-27 16:09:26 -07:00
Jakob Stoklund Olesen
2a2871e739
Expand OpcodeConstraints to 32 bits.
...
Make room for 255 different type sets and 2^16 entries in the operand
constraints table.
2016-09-27 16:09:26 -07:00
Jakob Stoklund Olesen
d256c46f60
Add HalfWidth and DoubleWidth type variable functions.
...
These functions compute types with half or double the number of bits in
each lane.
2016-09-27 15:39:54 -07:00
Jakob Stoklund Olesen
60b2257331
Add HalfWidth and DoubleWidth type variable functions.
...
These functions compute types with half or double the number of bits in
each lane.
2016-09-27 15:39:54 -07:00
Jakob Stoklund Olesen
a14bb077ee
In-place intersection of type sets.
2016-09-27 14:54:44 -07:00
Jakob Stoklund Olesen
65caf2d9a1
In-place intersection of type sets.
2016-09-27 14:54:44 -07:00
Jakob Stoklund Olesen
f66a6b3509
Add some Python tests for TypeSet.
2016-09-27 14:54:44 -07:00
Jakob Stoklund Olesen
470507dd9b
Add some Python tests for TypeSet.
2016-09-27 14:54:44 -07:00
Jakob Stoklund Olesen
efa1b8a9ec
Run Python unittests and doctests.
...
Add a meta/check.sh script that runs unit tests before the syntax
linters.
Add unittest converters for the existing doctests.
2016-09-27 13:45:05 -07:00
Jakob Stoklund Olesen
d7e9d4dade
Run Python unittests and doctests.
...
Add a meta/check.sh script that runs unit tests before the syntax
linters.
Add unittest converters for the existing doctests.
2016-09-27 13:45:05 -07:00
Jakob Stoklund Olesen
a616a46db7
Represent type sets with ranges.
...
Allow limits on the smallest and largest integer type in the set, the
highest and lowest number of lanes etc.
2016-09-27 13:31:31 -07:00
Jakob Stoklund Olesen
d45b011fa2
Represent type sets with ranges.
...
Allow limits on the smallest and largest integer type in the set, the
highest and lowest number of lanes etc.
2016-09-27 13:31:31 -07:00
Jakob Stoklund Olesen
8cbaacac48
Move TypeVar and TypeSet into their own Python package.
...
These classes are not very entangled with the rest of __init__, and
we'll be expanding them a bit.
2016-09-27 10:53:53 -07:00
Jakob Stoklund Olesen
b06668aa8a
Move TypeVar and TypeSet into their own Python package.
...
These classes are not very entangled with the rest of __init__, and
we'll be expanding them a bit.
2016-09-27 10:53:53 -07:00
Jakob Stoklund Olesen
6f243ab35d
Add documentation links to all existing instructions.
2016-09-23 16:53:48 -07:00
Jakob Stoklund Olesen
d915718526
Add documentation links to all existing instructions.
2016-09-23 16:53:48 -07:00
Jakob Stoklund Olesen
6d3883cf78
Add an autoinstgroup Sphinx directive.
...
This directive documents an instruction group and lists all instructions
contained in the group, whether they have been documented or not.
2016-09-23 16:53:47 -07:00
Jakob Stoklund Olesen
686aa4ec1d
Add an autoinstgroup Sphinx directive.
...
This directive documents an instruction group and lists all instructions
contained in the group, whether they have been documented or not.
2016-09-23 16:53:47 -07:00
Jakob Stoklund Olesen
f34da59bab
Integer subtraction with borrow flags.
...
This is the x86-style of borrow flags. ARM uses subtract-with-carry
which inverts the sense of the carry flag.
2016-09-23 15:47:39 -07:00
Jakob Stoklund Olesen
f66d84fd95
Integer subtraction with borrow flags.
...
This is the x86-style of borrow flags. ARM uses subtract-with-carry
which inverts the sense of the carry flag.
2016-09-23 15:47:39 -07:00
Jakob Stoklund Olesen
b1bd3140db
Integer add with carry instructions.
...
Integer addition with carry in/out/both.
2016-09-23 13:42:00 -07:00
Jakob Stoklund Olesen
9cb3451432
Integer add with carry instructions.
...
Integer addition with carry in/out/both.
2016-09-23 13:42:00 -07:00
Jakob Stoklund Olesen
acf41a7c09
Add a Cretonne testing guide.
...
Describe the basics of Rust-level tests, and go into more detail about
the file-level tests.
2016-09-23 11:37:40 -07:00
Jakob Stoklund Olesen
7ec54a5a01
Add a Cretonne testing guide.
...
Describe the basics of Rust-level tests, and go into more detail about
the file-level tests.
2016-09-23 11:37:40 -07:00
Jakob Stoklund Olesen
5112ddc13d
Basic *.cton syntax mode for Vim.
2016-09-23 10:41:35 -07:00
Jakob Stoklund Olesen
0dd16a360d
Basic *.cton syntax mode for Vim.
2016-09-23 10:41:35 -07:00
Jakob Stoklund Olesen
51bcc78cea
Add a 'test legaliser' filetest command.
...
This test command sends each function through legalize_function() and
then filecheck.
2016-09-21 17:36:06 -07:00
Jakob Stoklund Olesen
65f69fb088
Add a 'test legaliser' filetest command.
...
This test command sends each function through legalize_function() and
then filecheck.
2016-09-21 17:36:06 -07:00
Jakob Stoklund Olesen
ce0da25ce0
Write out encoding annotations on instructions.
...
All instructions with associated encodings are now annotated with
encoding information in a column before the code.
When write_function() is givan a TargetIsa reference, the annotations use
ISA-specific names. Otherwise everything is numeric.
2016-09-21 17:36:05 -07:00
Jakob Stoklund Olesen
6a71613d92
Write out encoding annotations on instructions.
...
All instructions with associated encodings are now annotated with
encoding information in a column before the code.
When write_function() is givan a TargetIsa reference, the annotations use
ISA-specific names. Otherwise everything is numeric.
2016-09-21 17:36:05 -07:00
Jakob Stoklund Olesen
2ec50203fb
Print encodings as [R#10c] instead of [R/10c].
...
The # is a more conventional prefix for hexadecimal, and when ISA
information is not available, there may be a decimal number in front
which would be confusing.
So prefer [1#10c] for the ISA-less encoding format. Here '1' is decimal
and '#10c' is hexadecimal.
2016-09-21 17:24:41 -07:00
Jakob Stoklund Olesen
ea901653da
Print encodings as [R#10c] instead of [R/10c].
...
The # is a more conventional prefix for hexadecimal, and when ISA
information is not available, there may be a decimal number in front
which would be confusing.
So prefer [1#10c] for the ISA-less encoding format. Here '1' is decimal
and '#10c' is hexadecimal.
2016-09-21 17:24:41 -07:00
Jakob Stoklund Olesen
4e09b48dd4
Expose Vec::get() in EntityMap.
2016-09-21 17:24:41 -07:00
Jakob Stoklund Olesen
1c4eb44ef7
Expose Vec::get() in EntityMap.
2016-09-21 17:24:41 -07:00