aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/ssa/TODO
diff options
context:
space:
mode:
authorKeith Randall <khr@golang.org>2015-05-28 16:45:33 -0700
committerKeith Randall <khr@golang.org>2015-05-30 06:08:26 +0000
commita9cec30fdcc549282e0a5d520edb2eaf60f3061a (patch)
treedbcd629c320607cb71e523e25e27349add3eed29 /src/cmd/compile/internal/ssa/TODO
parentb0da62903d045f6d3e832ba1181387a1e9ad33f1 (diff)
downloadgo-a9cec30fdcc549282e0a5d520edb2eaf60f3061a.tar.gz
go-a9cec30fdcc549282e0a5d520edb2eaf60f3061a.zip
[dev.ssa] cmd/compile/internal/ssa: Implement block rewriting rules
Change-Id: I47e5349e34fc18118c4d35bf433f875b958cc3e5 Reviewed-on: https://go-review.googlesource.com/10495 Reviewed-by: Alan Donovan <adonovan@google.com>
Diffstat (limited to 'src/cmd/compile/internal/ssa/TODO')
-rw-r--r--src/cmd/compile/internal/ssa/TODO9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/ssa/TODO b/src/cmd/compile/internal/ssa/TODO
index e3ffdd2692..2ffba17612 100644
--- a/src/cmd/compile/internal/ssa/TODO
+++ b/src/cmd/compile/internal/ssa/TODO
@@ -34,13 +34,22 @@ Regalloc
- Don't spill everything at every basic block boundary.
- Allow args and return values to be ssa-able.
- Handle 2-address instructions.
+ - Floating point registers
Rewrites
- Strength reduction (both arch-indep and arch-dependent?)
- Code sequence for shifts >= wordsize
- Start another architecture (arm?)
+ - 64-bit ops on 32-bit machines
+ - <regwidth ops. For example, x+y on int32s on amd64 needs (MOVLQSX (ADDL x y)).
+ Then add rewrites like (MOVLstore (MOVLQSX x) m) -> (MOVLstore x m)
+ to get rid of most of the MOVLQSX.
Common-Subexpression Elimination
- Make better decision about which value in an equivalence class we should
choose to replace other values in that class.
- Can we move control values out of their basic block?
+
+Other
+ - Make go:generate less painful. Have a subpackage that just has the
+ generate commands in it?