Removing comments.
This commit is contained in:
parent
3b268f07ef
commit
e5d867a92f
|
@ -48,6 +48,7 @@
|
||||||
//
|
//
|
||||||
// Run order:
|
// Run order:
|
||||||
// ContextPromotion
|
// ContextPromotion
|
||||||
|
// Simplification
|
||||||
// ConstantPropagation
|
// ConstantPropagation
|
||||||
// TypePropagation
|
// TypePropagation
|
||||||
// ByteSwapElimination
|
// ByteSwapElimination
|
||||||
|
@ -55,42 +56,6 @@
|
||||||
// DeadStoreElimination
|
// DeadStoreElimination
|
||||||
// DeadCodeElimination
|
// DeadCodeElimination
|
||||||
//
|
//
|
||||||
// - ContextPromotion
|
|
||||||
// Like mem2reg, but because context memory is unaliasable it's easier to
|
|
||||||
// check and convert LoadContext/StoreContext into value operations.
|
|
||||||
// Example of load->value promotion:
|
|
||||||
// v0 = load_context +100
|
|
||||||
// store_context +200, v0
|
|
||||||
// v1 = load_context +100 <-- replace with v1 = v0
|
|
||||||
// store_context +200, v1
|
|
||||||
//
|
|
||||||
// It'd be possible in this stage to also remove redundant context stores:
|
|
||||||
// Example of dead store elimination:
|
|
||||||
// store_context +100, v0 <-- removed due to following store
|
|
||||||
// store_context +100, v1
|
|
||||||
// This is more generally done by DSE, however if it could be done here
|
|
||||||
// instead as it may be faster (at least on the block-level).
|
|
||||||
//
|
|
||||||
// - ConstantPropagation
|
|
||||||
// Once ContextPromotion has run there will likely be a whole slew of
|
|
||||||
// constants that can be pushed through the function.
|
|
||||||
// Example:
|
|
||||||
// store_context +100, 1000
|
|
||||||
// v0 = load_context +100
|
|
||||||
// v1 = add v0, v0
|
|
||||||
// store_context +200, v1
|
|
||||||
// after PromoteContext:
|
|
||||||
// store_context +100, 1000
|
|
||||||
// v0 = 1000
|
|
||||||
// v1 = add v0, v0
|
|
||||||
// store_context +200, v1
|
|
||||||
// after PropagateConstants:
|
|
||||||
// store_context +100, 1000
|
|
||||||
// v0 = 1000
|
|
||||||
// v1 = add 1000, 1000
|
|
||||||
// store_context +200, 2000
|
|
||||||
// A DCE run after this should clean up any of the values no longer needed.
|
|
||||||
//
|
|
||||||
// - TypePropagation
|
// - TypePropagation
|
||||||
// There are many extensions/truncations in generated code right now due to
|
// There are many extensions/truncations in generated code right now due to
|
||||||
// various load/stores of varying widths. Being able to find and short-
|
// various load/stores of varying widths. Being able to find and short-
|
||||||
|
@ -143,19 +108,6 @@
|
||||||
// ... (DCE takes care of this) ...
|
// ... (DCE takes care of this) ...
|
||||||
// store v87.i64, v21.i32
|
// store v87.i64, v21.i32
|
||||||
//
|
//
|
||||||
// - Simplification
|
|
||||||
// Run over the instructions and rename assigned variables:
|
|
||||||
// v1 = v0
|
|
||||||
// v2 = v1
|
|
||||||
// v3 = add v0, v2
|
|
||||||
// becomes:
|
|
||||||
// v1 = v0 (will be removed by DCE)
|
|
||||||
// v2 = v0 (will be removed by DCE)
|
|
||||||
// v3 = add v0, v0
|
|
||||||
// This could be run several times, as it could make other passes faster
|
|
||||||
// to compute (for example, ConstantPropagation). DCE will take care of
|
|
||||||
// the useless assigns.
|
|
||||||
//
|
|
||||||
// - DeadStoreElimination
|
// - DeadStoreElimination
|
||||||
// Generic DSE pass, removing all redundant stores. ContextPromotion may be
|
// Generic DSE pass, removing all redundant stores. ContextPromotion may be
|
||||||
// able to take care of most of these, as the input assembly is generally
|
// able to take care of most of these, as the input assembly is generally
|
||||||
|
@ -180,26 +132,5 @@
|
||||||
// store_context +302, v5
|
// store_context +302, v5
|
||||||
// branch_true v5, ...
|
// branch_true v5, ...
|
||||||
//
|
//
|
||||||
// - DeadCodeElimination
|
|
||||||
// ContextPromotion/DSE will likely leave around a lot of dead statements.
|
|
||||||
// Code generated for comparison/testing produces many unused statements and
|
|
||||||
// with proper use analysis it should be possible to remove most of them:
|
|
||||||
// After context promotion/simplification:
|
|
||||||
// v33.i8 = compare_ult v31.i32, 0
|
|
||||||
// v34.i8 = compare_ugt v31.i32, 0
|
|
||||||
// v35.i8 = compare_eq v31.i32, 0
|
|
||||||
// store_context +300, v33.i8
|
|
||||||
// store_context +301, v34.i8
|
|
||||||
// store_context +302, v35.i8
|
|
||||||
// branch_true v35.i8, loc_8201A484
|
|
||||||
// After DSE:
|
|
||||||
// v33.i8 = compare_ult v31.i32, 0
|
|
||||||
// v34.i8 = compare_ugt v31.i32, 0
|
|
||||||
// v35.i8 = compare_eq v31.i32, 0
|
|
||||||
// branch_true v35.i8, loc_8201A484
|
|
||||||
// After DCE:
|
|
||||||
// v35.i8 = compare_eq v31.i32, 0
|
|
||||||
// branch_true v35.i8, loc_8201A484
|
|
||||||
//
|
|
||||||
|
|
||||||
#endif // ALLOY_COMPILER_PASSES_H_
|
#endif // ALLOY_COMPILER_PASSES_H_
|
||||||
|
|
Loading…
Reference in New Issue