Reviewers: golang-dev_googlegroups.com,
Message:
Hello golang-dev@googlegroups.com,
I'd like you to review this change to
https://go.googlecode.com/hg/
Description:
cmd/5g: enable xtramodes optimisation
xtramodes' C_PBIT optimisation transforms:
MOVW 0(R3),R1
ADD $4,R3,R3
into:
MOVW.P 4(R3),R1
and the AADD optimisation tranforms:
ADD R0,R1
MOVBU 0(R1),R0
into:
MOVBU R0<<0(R1),R0
5g does not appear to generate sequences that
can be transformed by xtramodes' AMOVW.
Please review this at http://codereview.appspot.com/6817085/
Affected files:
M src/cmd/5g/peep.c
Index: src/cmd/5g/peep.c
===================================================================
--- a/src/cmd/5g/peep.c
+++ b/src/cmd/5g/peep.c
@@ -49,7 +49,6 @@
int t;
p1 = nil;
- USED(p1); // ... in unreachable code...
/*
* complete R structure
*/
@@ -175,22 +174,21 @@
break;
}
}
-#ifdef NOTDEF
-// for(r=firstr; r!=R; r=r->link) {
-// p = r->prog;
-// switch(p->as) {
-// case AMOVW:
-// case AMOVB:
-// case AMOVBU:
-// if(p->from.type == D_OREG && p->from.offset == 0)
-// xtramodes(r, &p->from);
-// else
-// if(p->to.type == D_OREG && p->to.offset == 0)
-// xtramodes(r, &p->to);
-// else
-// continue;
-// break;
+ for(r=firstr; r!=R; r=r->link) {
+ p = r->prog;
+ switch(p->as) {
+ case AMOVW:
+ case AMOVB:
+ case AMOVBU:
+ if(p->from.type == D_OREG && p->from.offset == 0)
+ xtramodes(r, &p->from);
+ else
+ if(p->to.type == D_OREG && p->to.offset == 0)
+ xtramodes(r, &p->to);
+ else
+ continue;
+ break;
// case ACMP:
// /*
// * elide CMP $0,x if calculation of x can set condition codes
@@ -258,11 +256,10 @@
// r2->prog->as = t;
// excise(r);
// continue;
-// }
-// }
+ }
+ }
- predicate();
-#endif
+// predicate();
}
Reg*