summaryrefslogtreecommitdiff
path: root/src/cmd/5c
diff options
context:
space:
mode:
authorShenghou Ma <minux.ma@gmail.com>2012-05-04 03:24:14 +0800
committerShenghou Ma <minux.ma@gmail.com>2012-05-04 03:24:14 +0800
commit9eaf86b9a5e044da9a1bf28befb394a0b49dd7fb (patch)
tree3bc7d5a9d904580c8e19645bae74f1f2209f19f2 /src/cmd/5c
parent8b11cf8b8d0fcdc63a8eb1a73fa32c0dc6779d12 (diff)
downloadgo-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.c1
-rw-r--r--src/cmd/5c/reg.c8
-rw-r--r--src/cmd/5c/txt.c8
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