Commit e173ab14 authored by Keith Randall's avatar Keith Randall

[dev.ssa] cmd/compile: update TODO

Remove the stuff that's already done.

Change-Id: I3b4fc827240d45dd051dc36897883532d8900a0c
Reviewed-on: https://go-review.googlesource.com/19906Reviewed-by: default avatarDavid Chase <drchase@google.com>
parent 288817b0
...@@ -14,11 +14,8 @@ Optimizations (better compiled code) ...@@ -14,11 +14,8 @@ Optimizations (better compiled code)
------------------------------------ ------------------------------------
- Reduce register pressure in scheduler - Reduce register pressure in scheduler
- More strength reduction: multiply -> shift/add combos (Worth doing?) - More strength reduction: multiply -> shift/add combos (Worth doing?)
- Strength reduction: constant divides -> multiply
- Expand current optimizations to all bit widths
- Add a value range propagation pass (for bounds elim & bitwidth reduction) - Add a value range propagation pass (for bounds elim & bitwidth reduction)
- Make dead store pass inter-block - Make dead store pass inter-block
- (x86) More combining address arithmetic into loads/stores
- redundant CMP in sequences like this: - redundant CMP in sequences like this:
SUBQ $8, AX SUBQ $8, AX
CMP AX, $0 CMP AX, $0
...@@ -31,15 +28,6 @@ Optimizations (better compiled code) ...@@ -31,15 +28,6 @@ Optimizations (better compiled code)
- If strings are being passed around without being interpreted (ptr - If strings are being passed around without being interpreted (ptr
and len feilds being accessed) pass them in xmm registers? and len feilds being accessed) pass them in xmm registers?
Same for interfaces? Same for interfaces?
- boolean logic: movb/xorb$1/testb/jeq -> movb/testb/jne
- (ADDQconst (SUBQconst x)) and vice-versa
- store followed by load to same address
- (CMPconst [0] (AND x y)) -> (TEST x y)
- more (LOAD (ADDQ )) -> LOADIDX
- CMPL/SETEQ/TESTB/JEQ -> CMPL/JEQ
CMPL/SETGE/TESTB/JEQ
- blockEQ (CMP x x)
- better computing of &&/|| in non-if/for contexts
- OpArrayIndex should take its index in AuxInt, not a full value. - OpArrayIndex should take its index in AuxInt, not a full value.
- remove FLAGS from REP instruction clobbers - remove FLAGS from REP instruction clobbers
- (x86) Combine loads into other ops - (x86) Combine loads into other ops
...@@ -52,10 +40,8 @@ Optimizations (better compiled code) ...@@ -52,10 +40,8 @@ Optimizations (better compiled code)
Optimizations (better compiler) Optimizations (better compiler)
------------------------------- -------------------------------
- Smaller Value.Type (int32 or ptr)? Get rid of types altogether? - Smaller Value.Type (int32 or ptr)? Get rid of types altogether?
- Recycle dead Values (and Blocks) explicitly instead of using GC
- OpStore uses 3 args. Increase the size of Value.argstorage to 3? - OpStore uses 3 args. Increase the size of Value.argstorage to 3?
- Constant cache - Constant cache
- Reuseable slices (e.g. []int of size NumValues()) cached in Func
- Handle signed division overflow and sign extension earlier - Handle signed division overflow and sign extension earlier
- Implement 64 bit const division with high multiply, maybe in the frontend? - Implement 64 bit const division with high multiply, maybe in the frontend?
- Add bit widths to complex ops - Add bit widths to complex ops
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment