diff options
author | Shenghou Ma <minux.ma@gmail.com> | 2012-05-04 03:24:14 +0800 |
---|---|---|
committer | Shenghou Ma <minux.ma@gmail.com> | 2012-05-04 03:24:14 +0800 |
commit | 9eaf86b9a5e044da9a1bf28befb394a0b49dd7fb (patch) | |
tree | 3bc7d5a9d904580c8e19645bae74f1f2209f19f2 /src/cmd/5c | |
parent | 8b11cf8b8d0fcdc63a8eb1a73fa32c0dc6779d12 (diff) | |
download | go-9eaf86b9a5e044da9a1bf28befb394a0b49dd7fb.tar.gz |
cmd/5c, cmd/5a, cmd/5l: ARM support for PREFETCH built-in
R=rsc
CC=golang-dev
http://codereview.appspot.com/6174049
Diffstat (limited to 'src/cmd/5c')
-rw-r--r-- | src/cmd/5c/peep.c | 1 | ||||
-rw-r--r-- | src/cmd/5c/reg.c | 8 | ||||
-rw-r--r-- | src/cmd/5c/txt.c | 8 |
3 files changed, 16 insertions, 1 deletions
diff --git a/src/cmd/5c/peep.c b/src/cmd/5c/peep.c index 3a905f099..cdfb9d7f6 100644 --- a/src/cmd/5c/peep.c +++ b/src/cmd/5c/peep.c @@ -1067,6 +1067,7 @@ copyu(Prog *p, Adr *v, Adr *s) case ABLT: case ABGT: case ABLE: + case APLD: if(s != A) { if(copysub(&p->from, v, s, 1)) return 1; diff --git a/src/cmd/5c/reg.c b/src/cmd/5c/reg.c index 1ccf74a35..7cd880b9b 100644 --- a/src/cmd/5c/reg.c +++ b/src/cmd/5c/reg.c @@ -191,6 +191,14 @@ regopt(Prog *p) break; /* + * right side read + */ + case APLD: + for(z=0; z<BITS; z++) + r->use2.b[z] |= bit.b[z]; + break; + + /* * funny */ case ABL: diff --git a/src/cmd/5c/txt.c b/src/cmd/5c/txt.c index ee341905d..7738de1c3 100644 --- a/src/cmd/5c/txt.c +++ b/src/cmd/5c/txt.c @@ -1197,7 +1197,13 @@ gpseudo(int a, Sym *s, Node *n) void gprefetch(Node *n) { - // nothing + Node n1; + + regalloc(&n1, n, Z); + gmove(n, &n1); + n1.op = OINDREG; + gins(APLD, &n1, Z); + regfree(&n1); } int |