runtime: don't use REP;MOVSB if CPUID doesn't say it is fast

Only use REP;MOVSB if:
 1) The CPUID flag says it is fast, and
 2) The pointers are unaligned
Otherwise, use REP;MOVSQ.

Update #14630

Change-Id: I946b28b87880c08e5eed1ce2945016466c89db66
Reviewed-on: https://go-review.googlesource.com/21300
Reviewed-by: Nigel Tao <nigeltao@golang.org>
This commit is contained in:
Keith Randall 2016-03-29 21:25:33 -07:00
parent 1a9373bc57
commit 4b209dbf0b
5 changed files with 55 additions and 28 deletions

View file

@ -701,6 +701,7 @@ var (
// Set on startup in asm_{x86,amd64}.s.
cpuid_ecx uint32
cpuid_edx uint32
cpuid_ebx7 uint32
lfenceBeforeRdtsc bool
support_avx bool
support_avx2 bool