aboutsummaryrefslogtreecommitdiff
path: root/src/cmd
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2012-04-10 10:09:09 -0400
committerRuss Cox <rsc@golang.org>2012-04-10 10:09:09 -0400
commit35d260fa4c1952079083b8868e9be5e4c77f70dc (patch)
treeca7de7aef28eabee666d0abd4ba5759ee69b5c00 /src/cmd
parent098b9dcf2f92823342fcddef9d606ea176062a63 (diff)
downloadgo-35d260fa4c1952079083b8868e9be5e4c77f70dc.tar.xz
6a, 6l: add PREFETCH instructions
R=ken2 CC=golang-dev https://golang.org/cl/5989073
Diffstat (limited to 'src/cmd')
-rw-r--r--src/cmd/6a/lex.c4
-rw-r--r--src/cmd/6l/6.out.h5
-rw-r--r--src/cmd/6l/optab.c14
3 files changed, 21 insertions, 2 deletions
diff --git a/src/cmd/6a/lex.c b/src/cmd/6a/lex.c
index 275bcfe1a3..fc6bd36762 100644
--- a/src/cmd/6a/lex.c
+++ b/src/cmd/6a/lex.c
@@ -1001,6 +1001,10 @@ struct
"XORPS", LTYPE3, AXORPS,
"CRC32B", LTYPE4, ACRC32B,
"CRC32Q", LTYPE4, ACRC32Q,
+ "PREFETCHT0", LTYPE2, APREFETCHT0,
+ "PREFETCHT1", LTYPE2, APREFETCHT1,
+ "PREFETCHT2", LTYPE2, APREFETCHT2,
+ "PREFETCHNTA", LTYPE2, APREFETCHNTA,
0
};
diff --git a/src/cmd/6l/6.out.h b/src/cmd/6l/6.out.h
index 8499159543..b1ef050d9e 100644
--- a/src/cmd/6l/6.out.h
+++ b/src/cmd/6l/6.out.h
@@ -736,6 +736,11 @@ enum as
ACRC32B,
ACRC32Q,
AIMUL3Q,
+
+ APREFETCHT0,
+ APREFETCHT1,
+ APREFETCHT2,
+ APREFETCHNTA,
ALAST
};
diff --git a/src/cmd/6l/optab.c b/src/cmd/6l/optab.c
index 5746ded19c..f09f3d3414 100644
--- a/src/cmd/6l/optab.c
+++ b/src/cmd/6l/optab.c
@@ -539,6 +539,11 @@ uchar ycrc32l[] =
{
Yml, Yrl, Zlitm_r, 0,
};
+uchar yprefetch[] =
+{
+ Ym, Ynone, Zm_o, 2,
+ 0,
+};
/*
* You are doasm, holding in your hand a Prog* with p->as set to, say, ACRC32,
@@ -1270,8 +1275,13 @@ Optab optab[] =
{ AXADDQ, yrl_ml, Pw, 0x0f,0xc1 },
{ AXADDW, yrl_ml, Pe, 0x0f,0xc1 },
- { ACRC32B, ycrc32l,Px, 0xf2,0x0f,0x38,0xf0,0},
- { ACRC32Q, ycrc32l,Pw, 0xf2,0x0f,0x38,0xf1,0},
+ { ACRC32B, ycrc32l,Px, 0xf2,0x0f,0x38,0xf0,0 },
+ { ACRC32Q, ycrc32l,Pw, 0xf2,0x0f,0x38,0xf1,0 },
+
+ { APREFETCHT0, yprefetch, Pm, 0x18,(01) },
+ { APREFETCHT1, yprefetch, Pm, 0x18,(02) },
+ { APREFETCHT2, yprefetch, Pm, 0x18,(03) },
+ { APREFETCHNTA, yprefetch, Pm, 0x18,(00) },
{ AEND },
0