Jakob Stoklund Olesen
1fa3ddf018
Return RegInfo by value from TargetIsa::register_info().
...
The struct is just a pair of static references, and we don't need the
double indirection.
2017-02-14 16:05:54 -08:00
Jakob Stoklund Olesen
2361467536
Return RegInfo by value from TargetIsa::register_info().
...
The struct is just a pair of static references, and we don't need the
double indirection.
2017-02-14 16:05:54 -08:00
Jakob Stoklund Olesen
408dc4e72e
Add a contains_key method to SparseMap.
2017-02-14 16:05:54 -08:00
Jakob Stoklund Olesen
8d7756c06b
Add a contains_key method to SparseMap.
2017-02-14 16:05:54 -08:00
Jakob Stoklund Olesen
96e0a3273c
Return slices of live-ins and arguments from ebb_top().
...
The coloring algorithm needs to process these two types of live values
differently, so we may as well provide the needed info.
2017-02-14 16:05:54 -08:00
Jakob Stoklund Olesen
efab6d0214
Return slices of live-ins and arguments from ebb_top().
...
The coloring algorithm needs to process these two types of live values
differently, so we may as well provide the needed info.
2017-02-14 16:05:54 -08:00
Jakob Stoklund Olesen
2317142c75
Add a Layout::next_ebb() method.
...
This lets us iterate over the blocks in a function without holding a
reference to the layout.
2017-02-14 15:52:44 -08:00
Jakob Stoklund Olesen
71ec92281c
Add a Layout::next_ebb() method.
...
This lets us iterate over the blocks in a function without holding a
reference to the layout.
2017-02-14 15:52:44 -08:00
Jakob Stoklund Olesen
2c31041640
Live Value Tracker.
...
Keep track of which values are live and dead as we move through the
instructions in an EBB.
2017-02-14 10:17:24 -08:00
Jakob Stoklund Olesen
e3480987bd
Live Value Tracker.
...
Keep track of which values are live and dead as we move through the
instructions in an EBB.
2017-02-14 10:17:24 -08:00
Jakob Stoklund Olesen
5579e9b4a5
Add a partition_slice function.
...
Partition the elements in a mutable slice according to a predicate.
2017-02-14 10:17:24 -08:00
Jakob Stoklund Olesen
6567eca21e
Add a partition_slice function.
...
Partition the elements in a mutable slice according to a predicate.
2017-02-14 10:17:24 -08:00
Mikko Perttunen
5a1d9561a7
Coalesce live range intervals in adjacent EBBs
...
LiveRanges represent the live-in range of a value as a sorted
list of intervals. Each interval starts at an EBB and continues
to an instruction. Before this commit, the LiveRange would store
an interval for each EBB. This commit changes the representation
such that intervals continuing from one EBB to another are coalesced
into one.
Fixes #37 .
2017-02-14 08:06:38 -08:00
Mikko Perttunen
73202bb3dc
Coalesce live range intervals in adjacent EBBs
...
LiveRanges represent the live-in range of a value as a sorted
list of intervals. Each interval starts at an EBB and continues
to an instruction. Before this commit, the LiveRange would store
an interval for each EBB. This commit changes the representation
such that intervals continuing from one EBB to another are coalesced
into one.
Fixes #37 .
2017-02-14 08:06:38 -08:00
Jakob Stoklund Olesen
f6391c57e8
Compute register affinities during liveness analysis.
...
Each live range has an affinity hint containing the preferred register
class (or stack slot). Compute the affinity by merging the constraints
of the def and all uses.
2017-02-03 15:06:05 -08:00
Jakob Stoklund Olesen
8ca61b2a24
Compute register affinities during liveness analysis.
...
Each live range has an affinity hint containing the preferred register
class (or stack slot). Compute the affinity by merging the constraints
of the def and all uses.
2017-02-03 15:06:05 -08:00
Jakob Stoklund Olesen
f8e4d4e839
Speling.
2017-02-03 12:49:40 -08:00
Jakob Stoklund Olesen
4ae7fd2a37
Speling.
2017-02-03 12:49:40 -08:00
Jakob Stoklund Olesen
933dfc70c1
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() function. It is unlikely that a finished ISA
will not have any instruction predicates.
2017-02-03 11:28:59 -08:00
Jakob Stoklund Olesen
4293bed745
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() function. It is unlikely that a finished ISA
will not have any instruction predicates.
2017-02-03 11:28:59 -08:00
Jakob Stoklund Olesen
dab96d8ea2
Add entity lists.
...
Like a vector, but with a tiny footprint, and allocated from a pool so
all memory can be released very quickly.
2017-01-31 15:04:26 -08:00
Jakob Stoklund Olesen
0ada419fe7
Add entity lists.
...
Like a vector, but with a tiny footprint, and allocated from a pool so
all memory can be released very quickly.
2017-01-31 15:04:26 -08:00
Jakob Stoklund Olesen
16f4b4c7d5
Implement value affinities for register allocation.
...
An SSA value is usually biased towards a specific register class or a
stack slot, depending on the constraints of the instructions using it.
Represent this bias as an Affinity enum, and implement a merging
algorithm for updating an affinity to satisfy a new constraint.
Affinities will be computed as part of the liveness analysis. This is
not implemented yet.
2017-01-27 10:22:50 -08:00
Jakob Stoklund Olesen
3c4d54c4bd
Implement value affinities for register allocation.
...
An SSA value is usually biased towards a specific register class or a
stack slot, depending on the constraints of the instructions using it.
Represent this bias as an Affinity enum, and implement a merging
algorithm for updating an affinity to satisfy a new constraint.
Affinities will be computed as part of the liveness analysis. This is
not implemented yet.
2017-01-27 10:22:50 -08:00
Andrea Canciani
fd3cd153ed
Fix some typos in the documentation
...
These were found by the spellchecker.
2017-01-27 09:51:22 -08:00
Andrea Canciani
a395f01b3e
Fix some typos in the documentation
...
These were found by the spellchecker.
2017-01-27 09:51:22 -08:00
Jakob Stoklund Olesen
c767f277fa
Stop testing on nightly rust
...
The nightly compiler isn't able to compile rustfmt in 10 minutes. This causes Travis CI to terminate the build.
We keep testing on beta and stable.
2017-01-25 16:35:28 -08:00
Jakob Stoklund Olesen
7e54cdb4f5
Stop testing on nightly rust
...
The nightly compiler isn't able to compile rustfmt in 10 minutes. This causes Travis CI to terminate the build.
We keep testing on beta and stable.
2017-01-25 16:35:28 -08:00
Jakob Stoklund Olesen
38bb98cf39
Make sure we can find rustfmt.
2017-01-25 15:57:43 -08:00
Jakob Stoklund Olesen
0d3990c394
Make sure we can find rustfmt.
2017-01-25 15:57:43 -08:00
Jakob Stoklund Olesen
38aff37c1e
Install rustfmt when running under Travis CI.
...
The built rustfmt should be cached.
2017-01-25 15:42:16 -08:00
Jakob Stoklund Olesen
6e33173fce
Install rustfmt when running under Travis CI.
...
The built rustfmt should be cached.
2017-01-25 15:42:16 -08:00
Jakob Stoklund Olesen
eecbcf9844
Add pip files to the cache.
2017-01-25 15:35:58 -08:00
Jakob Stoklund Olesen
5b71ec922a
Add pip files to the cache.
2017-01-25 15:35:58 -08:00
Jakob Stoklund Olesen
859cca081c
Upgrade to rustfmt 0.7.1
2017-01-25 15:17:27 -08:00
Jakob Stoklund Olesen
c132b8c328
Upgrade to rustfmt 0.7.1
2017-01-25 15:17:27 -08:00
Jakob Stoklund Olesen
70957cc7ce
Doesn't work with 12.02 LTS's Python 3.2.
...
Try switching to Trusty to get a newer Python 3.
2017-01-25 14:59:48 -08:00
Jakob Stoklund Olesen
188ffb9881
Doesn't work with 12.02 LTS's Python 3.2.
...
Try switching to Trusty to get a newer Python 3.
2017-01-25 14:59:48 -08:00
Jakob Stoklund Olesen
361d71a0ab
The python3-pip package does not exist on Ubuntu 12.04 LTS.
...
Try to go via python3-setuptools instead.
2017-01-25 14:51:48 -08:00
Jakob Stoklund Olesen
f2b567b83f
The python3-pip package does not exist on Ubuntu 12.04 LTS.
...
Try to go via python3-setuptools instead.
2017-01-25 14:51:48 -08:00
Jakob Stoklund Olesen
10c2f397a8
Pull in a python3 Ubuntu package for Travis CI.
...
Then use pip3 to install dependencies.
2017-01-25 14:45:41 -08:00
Jakob Stoklund Olesen
27e735b028
Pull in a python3 Ubuntu package for Travis CI.
...
Then use pip3 to install dependencies.
2017-01-25 14:45:41 -08:00
Jakob Stoklund Olesen
91a7922474
Use Python 3.6 in Travis builds
2017-01-25 14:32:52 -08:00
Jakob Stoklund Olesen
8635aedc20
Use Python 3.6 in Travis builds
2017-01-25 14:32:52 -08:00
Jakob Stoklund Olesen
4c5bca6b0d
Install Python packages without Travis root user.
2017-01-25 14:26:28 -08:00
Jakob Stoklund Olesen
c111361e19
Install Python packages without Travis root user.
2017-01-25 14:26:28 -08:00
Jakob Stoklund Olesen
3bbe3f71cb
Install mypy and flake8 in Travis environment.
2017-01-25 14:20:22 -08:00
Jakob Stoklund Olesen
42a0c27b24
Install mypy and flake8 in Travis environment.
2017-01-25 14:20:22 -08:00
Jakob Stoklund Olesen
4a0d8aaa3d
Run Python checks from test-all.sh
...
The Python style enforcements are easy to miss otherwise.
2017-01-25 14:12:36 -08:00
Jakob Stoklund Olesen
2932d41f18
Run Python checks from test-all.sh
...
The Python style enforcements are easy to miss otherwise.
2017-01-25 14:12:36 -08:00