TESTL $(1<<27), DI // OSXSAVE
SETNE runtime·support_osxsave(SB)
- // If OS support for XMM and YMM is not present
- // support_avx will be set back to false later.
- TESTL $(1<<28), DI // AVX
- SETNE runtime·support_avx(SB)
-
eax7:
// Load EAX=7/ECX=0 cpuid flags
CMPL SI, $7
JE nocpuinfo
#endif
noavx:
- MOVB $0, runtime·support_avx(SB)
MOVB $0, runtime·support_avx2(SB)
nocpuinfo:
TESTL $(1<<27), CX // OSXSAVE
SETNE runtime·support_osxsave(SB)
- // If OS support for XMM and YMM is not present
- // support_avx will be set back to false later.
- TESTL $(1<<28), CX // AVX
- SETNE runtime·support_avx(SB)
-
eax7:
// Load EAX=7/ECX=0 cpuid flags
CMPL SI, $7
CMPL AX, $6 // Check for OS support of XMM and YMM registers.
JE nocpuinfo
noavx:
- MOVB $0, runtime·support_avx(SB)
MOVB $0, runtime·support_avx2(SB)
nocpuinfo:
TESTL $(1<<27), CX // OSXSAVE
SETNE runtime·support_osxsave(SB)
- // If OS support for XMM and YMM is not present
- // support_avx will be set back to false later.
- TESTL $(1<<28), CX // AVX
- SETNE runtime·support_avx(SB)
-
eax7:
// Load EAX=7/ECX=0 cpuid flags
CMPL SI, $7
JE nocpuinfo
#endif
noavx:
- MOVB $0, runtime·support_avx(SB)
MOVB $0, runtime·support_avx2(SB)
nocpuinfo:
package runtime
+import "internal/cpu"
+
var useAVXmemmove bool
func init() {
processor == 0x306A0 ||
processor == 0x306E0
- useAVXmemmove = support_avx && !isIntelBridgeFamily
+ useAVXmemmove = cpu.X86.HasAVX && !isIntelBridgeFamily
}
processorVersionInfo uint32
isIntel bool
lfenceBeforeRdtsc bool
- support_avx bool
support_avx2 bool
support_erms bool
support_osxsave bool