diff options
| author | Russ Cox <rsc@golang.org> | 2012-04-10 10:09:09 -0400 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2012-04-10 10:09:09 -0400 |
| commit | 35d260fa4c1952079083b8868e9be5e4c77f70dc (patch) | |
| tree | ca7de7aef28eabee666d0abd4ba5759ee69b5c00 /src/cmd | |
| parent | 098b9dcf2f92823342fcddef9d606ea176062a63 (diff) | |
| download | go-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.c | 4 | ||||
| -rw-r--r-- | src/cmd/6l/6.out.h | 5 | ||||
| -rw-r--r-- | src/cmd/6l/optab.c | 14 |
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 |
