diff --git a/docs/CodeGenerator.html b/docs/CodeGenerator.html index a62dbedcdb1..a4a6ea0dbae 100644 --- a/docs/CodeGenerator.html +++ b/docs/CodeGenerator.html @@ -15,7 +15,8 @@
The 'simple' instruction selectors are tedious to write, require a lot of -boiler plate code, and are difficult to get correct. Additionally, any -optimizations written for a simple instruction selector cannot be used by other -targets. For this reason, LLVM is moving to a new SelectionDAG based -instruction selector, which is described in this section. If you are starting a -new port, we recommend that you write the instruction selector using the -SelectionDAG infrastructure.
- -In time, most of the target-specific code for instruction selection will be -auto-generated from the target description (*.td) files. For now, -however, the Select Phase must still be -written by hand.
+Portions of the DAG instruction selector are generated from the target +description files (*.td) files. Eventually, we aim for the entire +instruction selector to be generated from these .td files.
@@ -744,8 +739,12 @@ SelectionDAG-based instruction selection consists of the following steps: eliminate inefficiencies introduced by legalization.After all of these steps are complete, the SelectionDAG is destroyed and the @@ -822,7 +821,8 @@ a DAG.
-One important class of optimizations that this pass will do in the future is -optimizing inserted sign and zero extension instructions. Here are some good +One important class of optimizations performed is optimizing inserted sign and +zero extension instructions. We currently use ad-hoc techniques, but could move +to more rigorous techniques in the future. Here are some good papers on the subject:
@@ -875,6 +876,23 @@ want to make the Select phase as simple and mechanical as possible.
The scheduling phase takes the DAG of target instructions from the selection +phase and assigns an order. The scheduler can pick an order depending on +various constraints of the machines (i.e. order for minimal register pressure or +try to cover instruction latencies). Once an order is established, the DAG is +converted to a list of MachineInstrs and the +Selection DAG is destroyed. +
+ +