package runtime
import (
+ "internal/cpu"
"runtime/internal/sys"
"unsafe"
)
// Install AES hash algorithms if the instructions needed are present.
if (GOARCH == "386" || GOARCH == "amd64") &&
GOOS != "nacl" &&
- support_aes && // AESENC
- support_ssse3 && // PSHUFB
- support_sse41 { // PINSR{D,Q}
+ cpu.X86.HasAES && // AESENC
+ cpu.X86.HasSSSE3 && // PSHUFB
+ cpu.X86.HasSSE41 { // PINSR{D,Q}
initAlgAES()
return
}
- if GOARCH == "arm64" && arm64_support_aes {
+ if GOARCH == "arm64" && cpu.ARM64.HasAES {
initAlgAES()
return
}
TESTL $(1<<26), DX // SSE2
SETNE runtime·support_sse2(SB)
- TESTL $(1<<9), DI // SSSE3
- SETNE runtime·support_ssse3(SB)
-
TESTL $(1<<19), DI // SSE4.1
SETNE runtime·support_sse41(SB)
- TESTL $(1<<20), DI // SSE4.2
- SETNE runtime·support_sse42(SB)
-
TESTL $(1<<23), DI // POPCNT
SETNE runtime·support_popcnt(SB)
- TESTL $(1<<25), DI // AES
- SETNE runtime·support_aes(SB)
-
TESTL $(1<<27), DI // OSXSAVE
SETNE runtime·support_osxsave(SB)
TESTL $(1<<26), DX // SSE2
SETNE runtime·support_sse2(SB)
- TESTL $(1<<9), CX // SSSE3
- SETNE runtime·support_ssse3(SB)
-
TESTL $(1<<19), CX // SSE4.1
SETNE runtime·support_sse41(SB)
- TESTL $(1<<20), CX // SSE4.2
- SETNE runtime·support_sse42(SB)
-
TESTL $(1<<23), CX // POPCNT
SETNE runtime·support_popcnt(SB)
- TESTL $(1<<25), CX // AES
- SETNE runtime·support_aes(SB)
-
TESTL $(1<<27), CX // OSXSAVE
SETNE runtime·support_osxsave(SB)
TESTL $(1<<26), DX // SSE2
SETNE runtime·support_sse2(SB)
- TESTL $(1<<9), CX // SSSE3
- SETNE runtime·support_ssse3(SB)
-
TESTL $(1<<19), CX // SSE4.1
SETNE runtime·support_sse41(SB)
- TESTL $(1<<20), CX // SSE4.2
- SETNE runtime·support_sse42(SB)
-
TESTL $(1<<23), CX // POPCNT
SETNE runtime·support_popcnt(SB)
- TESTL $(1<<25), CX // AES
- SETNE runtime·support_aes(SB)
-
TESTL $(1<<27), CX // OSXSAVE
SETNE runtime·support_osxsave(SB)
randomNumber = uint32(startupRandomData[4]) | uint32(startupRandomData[5])<<8 |
uint32(startupRandomData[6])<<16 | uint32(startupRandomData[7])<<24
case _AT_HWCAP:
- arm64_support_aes = ((val>>3)&0x1 == 0x1)
cpu_hwcap = uint(val)
case _AT_HWCAP2:
cpu_hwcap2 = uint(val)
processorVersionInfo uint32
isIntel bool
lfenceBeforeRdtsc bool
- support_aes bool
support_avx bool
support_avx2 bool
support_erms bool
support_popcnt bool
support_sse2 bool
support_sse41 bool
- support_sse42 bool
- support_ssse3 bool
-
- arm64_support_aes bool
goarm uint8 // set by cmd/link on arm systems
framepointer_enabled bool // set by cmd/link