Commit Graph

6481 Commits

Author SHA1 Message Date
Jakob Stoklund Olesen
c1d32167dc Use dot syntax to bind type variables on instructions.
Encodings need to refer to concrete instances of polymorphic instructions by
binding type variables. Allow dot syntax like iadd.i32 to do that.
2016-08-03 16:30:47 -07:00
Jakob Stoklund Olesen
4987282bbb Add an Encoding meta-language class.
Start adding some RISC-V encodings too as a way of testing the ergonomics.
2016-08-03 16:04:29 -07:00
Jakob Stoklund Olesen
9cdf6edd62 Add an Encoding meta-language class.
Start adding some RISC-V encodings too as a way of testing the ergonomics.
2016-08-03 16:04:29 -07:00
Jakob Stoklund Olesen
66f14138bb Add an EncRecipe meta-language class.
Move the CPUMode reference from EncRecipe to the Encoding itself, allowing
EncRecipes to be shared between CPU modes. At least RISC-V should be able to
share some recipes between RV32 and RV64 modes.
2016-08-03 12:06:21 -07:00
Jakob Stoklund Olesen
d215b622e4 Add an EncRecipe meta-language class.
Move the CPUMode reference from EncRecipe to the Encoding itself, allowing
EncRecipes to be shared between CPU modes. At least RISC-V should be able to
share some recipes between RV32 and RV64 modes.
2016-08-03 12:06:21 -07:00
Jakob Stoklund Olesen
eed6adb413 Add a CPUMode meta-language class. 2016-08-03 11:20:13 -07:00
Jakob Stoklund Olesen
c4faef196e Add a CPUMode meta-language class. 2016-08-03 11:20:13 -07:00
Jakob Stoklund Olesen
a67ec211a4 Document binary encodings.
Describe the meta-language data structures that are built to represent
instruction encodings.

Begin a metaref glossary.
2016-08-02 16:02:20 -07:00
Jakob Stoklund Olesen
bd72439fbc Document binary encodings.
Describe the meta-language data structures that are built to represent
instruction encodings.

Begin a metaref glossary.
2016-08-02 16:02:20 -07:00
Jakob Stoklund Olesen
82a85961ff Add PrimaryEntityData marker trait.
Require this trait on the value type stored in an EntityMap to 'unlock' the
methods intended for primary entity maps that are allowed to create references
with the 'push method.

This prevents accidentally depending on these methods in secondary maps.
2016-08-01 19:52:57 -07:00
Jakob Stoklund Olesen
f5008567c9 Add PrimaryEntityData marker trait.
Require this trait on the value type stored in an EntityMap to 'unlock' the
methods intended for primary entity maps that are allowed to create references
with the 'push method.

This prevents accidentally depending on these methods in secondary maps.
2016-08-01 19:52:57 -07:00
Morgan Phillips
4c0b59a947 Merge branch 'master' of github.com:stoklund/cretonne into cfg-fix 2016-08-01 18:06:59 -07:00
Morgan Phillips
549a14bf96 Merge branch 'master' of github.com:stoklund/cretonne into cfg-fix 2016-08-01 18:06:59 -07:00
Morgan Phillips
283f3ea48e Remove uses of EntityMap::len. 2016-08-01 18:04:25 -07:00
Morgan Phillips
80abf8b1f0 Remove uses of EntityMap::len. 2016-08-01 18:04:25 -07:00
Jakob Stoklund Olesen
11f65fff20 Remove the cfg::predecessors_iter() method and iterator.
This iterator enumerates all EBB references whether they are in the layout or
not. That is usually not what is needed when working with the CFG.

It is better to iterate over EBB referrences in layout order, or in reverse
post-order and then call the get_predecessors() method for each Ebb reference.

See the new implementation of print_cfg::cfg_connections().
2016-08-01 15:18:34 -07:00
Jakob Stoklund Olesen
2c1e80b0e0 Remove the cfg::predecessors_iter() method and iterator.
This iterator enumerates all EBB references whether they are in the layout or
not. That is usually not what is needed when working with the CFG.

It is better to iterate over EBB referrences in layout order, or in reverse
post-order and then call the get_predecessors() method for each Ebb reference.

See the new implementation of print_cfg::cfg_connections().
2016-08-01 15:18:34 -07:00
Jakob Stoklund Olesen
bf24ae229c Print CFG edges from func.layout instead of cfg.predecessors_iter.
EBBs not in the layout should never be printed as part of the CFG.
2016-08-01 15:18:34 -07:00
Jakob Stoklund Olesen
02c1bb8f2c Print CFG edges from func.layout instead of cfg.predecessors_iter.
EBBs not in the layout should never be printed as part of the CFG.
2016-08-01 15:18:34 -07:00
Morgan Phillips
e22efd2748 Improve the structure and comments of the module. 2016-08-01 15:00:08 -07:00
Morgan Phillips
e9cfcf4f78 Improve the structure and comments of the module. 2016-08-01 15:00:08 -07:00
Morgan Phillips
f2e9c88b45 Remove println\! 2016-08-01 12:15:08 -07:00
Morgan Phillips
5a38ca2db7 Remove println\! 2016-08-01 12:15:08 -07:00
Morgan Phillips
967a7c64d4 Add a dominator tree implementation. 2016-07-31 21:40:11 -07:00
Morgan Phillips
19a47d57b3 Add a dominator tree implementation. 2016-07-31 21:40:11 -07:00
Morgan Phillips
a8beb542a5 Clean up the CFG representation. 2016-07-31 21:31:18 -07:00
Morgan Phillips
0ce01c1b8d Clean up the CFG representation. 2016-07-31 21:31:18 -07:00
Jakob Stoklund Olesen
dae349371f Add EntityMap::with_capacity.
Create a secondary entity map with space reserved for a known range of entity
references.

Add dfg.num_ebbs() and dfg.num_insts() methods to provide capacities.
2016-07-29 15:59:09 -07:00
Jakob Stoklund Olesen
bbdae39cb9 Add EntityMap::with_capacity.
Create a secondary entity map with space reserved for a known range of entity
references.

Add dfg.num_ebbs() and dfg.num_insts() methods to provide capacities.
2016-07-29 15:59:09 -07:00
Jakob Stoklund Olesen
0ef28f5bde Use sub-shells instead of pushd / popd.
The push and pop commands print the directory stack to stdout, while subshells
and cd is quiet.
2016-07-29 12:35:56 -07:00
Jakob Stoklund Olesen
14027660c5 Use sub-shells instead of pushd / popd.
The push and pop commands print the directory stack to stdout, while subshells
and cd is quiet.
2016-07-29 12:35:56 -07:00
Morgan Phillips
2f07a3b675 Remove innacurate comments. 2016-07-28 17:51:50 -07:00
Morgan Phillips
a9748dff02 Remove innacurate comments. 2016-07-28 17:51:50 -07:00
Morgan Phillips
7abb532fd6 Merge branch 'master' of github.com:stoklund/cretonne into bleh 2016-07-28 17:49:48 -07:00
Morgan Phillips
858d756631 Merge branch 'master' of github.com:stoklund/cretonne into bleh 2016-07-28 17:49:48 -07:00
Morgan Phillips
7936444e1f Simplify the reverse_postorder_ebbs implementation. 2016-07-28 17:49:25 -07:00
Morgan Phillips
82ff64820c Simplify the reverse_postorder_ebbs implementation. 2016-07-28 17:49:25 -07:00
Jakob Stoklund Olesen
0e046dcbcb Documentation typos. 2016-07-27 16:10:02 -07:00
Jakob Stoklund Olesen
ad79ad753d Documentation typos. 2016-07-27 16:10:02 -07:00
Morgan Phillips
1027fc7472 Avoid cloning levels 2016-07-26 17:13:11 -07:00
Morgan Phillips
e94d7c2a99 Avoid cloning levels 2016-07-26 17:13:11 -07:00
Morgan Phillips
b67d07e87a Give the test module a more apt name. 2016-07-26 12:07:18 -07:00
Morgan Phillips
1cd6e35a42 Give the test module a more apt name. 2016-07-26 12:07:18 -07:00
Morgan Phillips
a9842ff363 Fix broken reverse_postorder_ebbs implementation.
The previous implementation was actually a reverse preorder walk.
2016-07-26 02:54:42 -07:00
Morgan Phillips
42b9835363 Fix broken reverse_postorder_ebbs implementation.
The previous implementation was actually a reverse preorder walk.
2016-07-26 02:54:42 -07:00
Morgan Phillips
9e19326c30 Fix the test-all script so that it works with directories 2016-07-25 19:19:46 -07:00
Morgan Phillips
71bf589af3 Fix the test-all script so that it works with directories 2016-07-25 19:19:46 -07:00
Morgan Phillips
1f0e344b24 Cargo-fmt and cleanup. 2016-07-25 18:51:58 -07:00
Morgan Phillips
400504d321 Cargo-fmt and cleanup. 2016-07-25 18:51:58 -07:00
Morgan Phillips
d137529bd5 Use cton_reader to simplify cfg traversal tests. 2016-07-25 18:49:39 -07:00