aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Thompson <ken@golang.org>2011-01-30 15:55:08 -0800
committerKen Thompson <ken@golang.org>2011-01-30 15:55:08 -0800
commit1f55105f66eec3072be24cd1c428d90b90feef31 (patch)
tree325370279b5c7cac21c65af3988bb0d42a02cfe0
parent0f0f34ee05e911afa09862bf088982d91a53582f (diff)
downloadgo-1f55105f66eec3072be24cd1c428d90b90feef31.tar.gz
go-1f55105f66eec3072be24cd1c428d90b90feef31.zip
enable arm peep.
one bug fixed, probably more will be revealed R=r CC=golang-dev https://golang.org/cl/4126044
-rw-r--r--src/cmd/5g/peep.c30
-rw-r--r--src/cmd/5g/reg.c4
2 files changed, 30 insertions, 4 deletions
diff --git a/src/cmd/5g/peep.c b/src/cmd/5g/peep.c
index b442ee8d16..f619a6206f 100644
--- a/src/cmd/5g/peep.c
+++ b/src/cmd/5g/peep.c
@@ -333,6 +333,9 @@ subprop(Reg *r0)
case ABL:
return 0;
+ case AMULLU:
+ case AMULA:
+
case ACMN:
case AADD:
case ASUB:
@@ -344,9 +347,13 @@ subprop(Reg *r0)
case AORR:
case AAND:
case AEOR:
+ case AMVN:
case AMUL:
+ case AMULU:
case ADIV:
case ADIVU:
+ case AMOD:
+ case AMODU:
case AADDD:
case AADDF:
@@ -1005,7 +1012,12 @@ copyu(Prog *p, Adr *v, Adr *s)
return 1;
return 0;
+ case AMULLU: /* read, read, write, write */
+ case AMULA:
+ return 2;
+
case AADD: /* read, read, write */
+ case AADC:
case ASUB:
case ASBC:
case ARSB:
@@ -1015,9 +1027,13 @@ copyu(Prog *p, Adr *v, Adr *s)
case AORR:
case AAND:
case AEOR:
+ case AMVN:
case AMUL:
+ case AMULU:
case ADIV:
case ADIVU:
+ case AMOD:
+ case AMODU:
case AADDF:
case AADDD:
case ASUBF:
@@ -1144,6 +1160,9 @@ a2type(Prog *p)
case ACMP:
case ACMN:
+ case AMULLU:
+ case AMULA:
+
case AADD:
case ASUB:
case ARSB:
@@ -1153,9 +1172,13 @@ a2type(Prog *p)
case AORR:
case AAND:
case AEOR:
+ case AMVN:
case AMUL:
+ case AMULU:
case ADIV:
case ADIVU:
+ case AMOD:
+ case AMODU:
return D_REG;
case ACMPF:
@@ -1372,12 +1395,15 @@ int
modifiescpsr(Prog *p)
{
switch(p->as) {
+ case AMULLU:
+ case AMULA:
+ case AMULU:
+ case ADIVU:
+
case ATEQ:
case ACMN:
case ATST:
case ACMP:
- case AMULU:
- case ADIVU:
case AMUL:
case ADIV:
case AMOD:
diff --git a/src/cmd/5g/reg.c b/src/cmd/5g/reg.c
index 3f1ec07e4e..cd6adeaec7 100644
--- a/src/cmd/5g/reg.c
+++ b/src/cmd/5g/reg.c
@@ -143,7 +143,7 @@ regopt(Prog *firstp)
first++;
if(debug['K']) {
- if(first != 1)
+ if(first != 13)
return;
// debug['R'] = 2;
// debug['P'] = 2;
@@ -491,7 +491,7 @@ brk:
* peep-hole on basic block
*/
if(!debug['R'] || debug['P']) {
-// peep();
+ peep();
}
/*