Commit 3d462449 authored by Russ Cox's avatar Russ Cox

8a, 8l: add PREFETCH instructions

R=ken2
CC=golang-dev
https://golang.org/cl/5992082
parent 35d260fa
...@@ -667,6 +667,10 @@ struct ...@@ -667,6 +667,10 @@ struct
"MFENCE", LTYPE0, AMFENCE, "MFENCE", LTYPE0, AMFENCE,
"SFENCE", LTYPE0, ASFENCE, "SFENCE", LTYPE0, ASFENCE,
"EMMS", LTYPE0, AEMMS, "EMMS", LTYPE0, AEMMS,
"PREFETCHT0", LTYPE2, APREFETCHT0,
"PREFETCHT1", LTYPE2, APREFETCHT1,
"PREFETCHT2", LTYPE2, APREFETCHT2,
"PREFETCHNTA", LTYPE2, APREFETCHNTA,
0 0
}; };
......
...@@ -451,6 +451,11 @@ enum as ...@@ -451,6 +451,11 @@ enum as
ASFENCE, ASFENCE,
AEMMS, AEMMS,
APREFETCHT0,
APREFETCHT1,
APREFETCHT2,
APREFETCHNTA,
ALAST ALAST
}; };
......
...@@ -349,6 +349,11 @@ uchar ysvrs[] = ...@@ -349,6 +349,11 @@ uchar ysvrs[] =
Ym, Ynone, Zm_o, 2, Ym, Ynone, Zm_o, 2,
0 0
}; };
uchar yprefetch[] =
{
Ym, Ynone, Zm_o, 2,
0,
};
Optab optab[] = Optab optab[] =
/* as, ytab, andproto, opcode */ /* as, ytab, andproto, opcode */
...@@ -761,5 +766,10 @@ Optab optab[] = ...@@ -761,5 +766,10 @@ Optab optab[] =
{ AEMMS, ynone, Pm, 0x77 }, { AEMMS, ynone, Pm, 0x77 },
{ APREFETCHT0, yprefetch, Pm, 0x18,(01) },
{ APREFETCHT1, yprefetch, Pm, 0x18,(02) },
{ APREFETCHT2, yprefetch, Pm, 0x18,(03) },
{ APREFETCHNTA, yprefetch, Pm, 0x18,(00) },
0 0
}; };
...@@ -417,8 +417,7 @@ TEXT runtime·atomicstore64(SB), 7, $0 ...@@ -417,8 +417,7 @@ TEXT runtime·atomicstore64(SB), 7, $0
TEXT runtime·prefetch(SB), 7, $0 TEXT runtime·prefetch(SB), 7, $0
MOVL 4(SP), AX MOVL 4(SP), AX
// PREFETCHNTA (AX) PREFETCHNTA (AX)
BYTE $0x0f; BYTE $0x18; BYTE $0x00
RET RET
// void jmpdefer(fn, sp); // void jmpdefer(fn, sp);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment