1
0
mirror of https://github.com/golang/go synced 2024-11-24 22:10:02 -07:00

[dev.ssa] cmd/compile: update TODO

Remove the stuff that's already done.

Change-Id: I3b4fc827240d45dd051dc36897883532d8900a0c
Reviewed-on: https://go-review.googlesource.com/19906
Reviewed-by: David Chase <drchase@google.com>
This commit is contained in:
Keith Randall 2016-02-24 13:08:00 -08:00
parent 288817b05a
commit e173ab1434

View File

@ -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)
- 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)
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