diff options
author | Ken Thompson <ken@golang.org> | 2011-01-30 15:55:08 -0800 |
---|---|---|
committer | Ken Thompson <ken@golang.org> | 2011-01-30 15:55:08 -0800 |
commit | 1f55105f66eec3072be24cd1c428d90b90feef31 (patch) | |
tree | 325370279b5c7cac21c65af3988bb0d42a02cfe0 | |
parent | 0f0f34ee05e911afa09862bf088982d91a53582f (diff) | |
download | go-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.c | 30 | ||||
-rw-r--r-- | src/cmd/5g/reg.c | 4 |
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(); } /* |