mirror of
https://github.com/kubernetes-sigs/node-feature-discovery.git
synced 2025-03-28 02:37:11 +00:00
Merge pull request #919 from yselkowitz/cpuid
Update CPU flags for ARM, POWER, and Z
This commit is contained in:
commit
796403aa85
4 changed files with 133 additions and 12 deletions
|
@ -26,7 +26,10 @@ unsigned long gethwcap() {
|
|||
*/
|
||||
import "C"
|
||||
|
||||
/* all special features for arm should be defined here */
|
||||
/*
|
||||
all special features for arm should be defined here; canonical list:
|
||||
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm/include/uapi/asm/hwcap.h
|
||||
*/
|
||||
const (
|
||||
/* extension instructions */
|
||||
CPU_ARM_FEATURE_SWP = 1 << iota
|
||||
|
|
|
@ -23,10 +23,16 @@ package cpu
|
|||
unsigned long gethwcap() {
|
||||
return getauxval(AT_HWCAP);
|
||||
}
|
||||
unsigned long gethwcap2() {
|
||||
return getauxval(AT_HWCAP2);
|
||||
}
|
||||
*/
|
||||
import "C"
|
||||
|
||||
/* all special features for arm64 should be defined here */
|
||||
/*
|
||||
all special features for arm64 should be defined here; canonical list:
|
||||
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm64/include/uapi/asm/hwcap.h
|
||||
*/
|
||||
const (
|
||||
/* extension instructions */
|
||||
CPU_ARM64_FEATURE_FP = 1 << iota
|
||||
|
@ -52,6 +58,53 @@ const (
|
|||
CPU_ARM64_FEATURE_ASIMDDP
|
||||
CPU_ARM64_FEATURE_SHA512
|
||||
CPU_ARM64_FEATURE_SVE
|
||||
CPU_ARM64_FEATURE_ASIMDFHM
|
||||
CPU_ARM64_FEATURE_DIT
|
||||
CPU_ARM64_FEATURE_USCAT
|
||||
CPU_ARM64_FEATURE_ILRCPC
|
||||
CPU_ARM64_FEATURE_FLAGM
|
||||
CPU_ARM64_FEATURE_SSBS
|
||||
CPU_ARM64_FEATURE_SB
|
||||
CPU_ARM64_FEATURE_PACA
|
||||
CPU_ARM64_FEATURE_PACG
|
||||
)
|
||||
|
||||
const (
|
||||
/* extension instructions */
|
||||
CPU_ARM64_FEATURE2_DCPODP = 1 << iota
|
||||
CPU_ARM64_FEATURE2_SVE2
|
||||
CPU_ARM64_FEATURE2_SVEAES
|
||||
CPU_ARM64_FEATURE2_SVEPMULL
|
||||
CPU_ARM64_FEATURE2_SVEBITPERM
|
||||
CPU_ARM64_FEATURE2_SVESHA3
|
||||
CPU_ARM64_FEATURE2_SVESM4
|
||||
CPU_ARM64_FEATURE2_FLAGM2
|
||||
CPU_ARM64_FEATURE2_FRINT
|
||||
CPU_ARM64_FEATURE2_SVEI8MM
|
||||
CPU_ARM64_FEATURE2_SVEF32MM
|
||||
CPU_ARM64_FEATURE2_SVEF64MM
|
||||
CPU_ARM64_FEATURE2_SVEBF16
|
||||
CPU_ARM64_FEATURE2_I8MM
|
||||
CPU_ARM64_FEATURE2_BF16
|
||||
CPU_ARM64_FEATURE2_DGH
|
||||
CPU_ARM64_FEATURE2_RNG
|
||||
CPU_ARM64_FEATURE2_BTI
|
||||
CPU_ARM64_FEATURE2_MTE
|
||||
CPU_ARM64_FEATURE2_ECV
|
||||
CPU_ARM64_FEATURE2_AFP
|
||||
CPU_ARM64_FEATURE2_RPRES
|
||||
CPU_ARM64_FEATURE2_MTE3
|
||||
CPU_ARM64_FEATURE2_SME
|
||||
CPU_ARM64_FEATURE2_SME_I16I64
|
||||
CPU_ARM64_FEATURE2_SME_F64F64
|
||||
CPU_ARM64_FEATURE2_SME_I8I32
|
||||
CPU_ARM64_FEATURE2_SME_F16F32
|
||||
CPU_ARM64_FEATURE2_SME_B16F32
|
||||
CPU_ARM64_FEATURE2_SME_F32F32
|
||||
CPU_ARM64_FEATURE2_SME_FA64
|
||||
CPU_ARM64_FEATURE2_WFXT
|
||||
CPU_ARM64_FEATURE2_EBF16
|
||||
CPU_ARM64_FEATURE2_SVE_EBF16
|
||||
)
|
||||
|
||||
var flagNames_arm64 = map[uint64]string{
|
||||
|
@ -78,11 +131,58 @@ var flagNames_arm64 = map[uint64]string{
|
|||
CPU_ARM64_FEATURE_ASIMDDP: "ASIMDDP",
|
||||
CPU_ARM64_FEATURE_SHA512: "SHA512",
|
||||
CPU_ARM64_FEATURE_SVE: "SVE",
|
||||
CPU_ARM64_FEATURE_ASIMDFHM: "ASIMDFHM",
|
||||
CPU_ARM64_FEATURE_DIT: "DIT",
|
||||
CPU_ARM64_FEATURE_USCAT: "USCAT",
|
||||
CPU_ARM64_FEATURE_ILRCPC: "ILRCPC",
|
||||
CPU_ARM64_FEATURE_FLAGM: "FLAGM",
|
||||
CPU_ARM64_FEATURE_SSBS: "SSBS",
|
||||
CPU_ARM64_FEATURE_SB: "SB",
|
||||
CPU_ARM64_FEATURE_PACA: "PACA",
|
||||
CPU_ARM64_FEATURE_PACG: "PACG",
|
||||
}
|
||||
|
||||
var flag2Names_arm64 = map[uint64]string{
|
||||
CPU_ARM64_FEATURE2_DCPODP: "DCPODP",
|
||||
CPU_ARM64_FEATURE2_SVE2: "SVE2",
|
||||
CPU_ARM64_FEATURE2_SVEAES: "SVEAES",
|
||||
CPU_ARM64_FEATURE2_SVEPMULL: "SVEPMULL",
|
||||
CPU_ARM64_FEATURE2_SVEBITPERM: "SVEBITPERM",
|
||||
CPU_ARM64_FEATURE2_SVESHA3: "SVESHA3",
|
||||
CPU_ARM64_FEATURE2_SVESM4: "SVESM4",
|
||||
CPU_ARM64_FEATURE2_FLAGM2: "FLAGM2",
|
||||
CPU_ARM64_FEATURE2_FRINT: "FRINT",
|
||||
CPU_ARM64_FEATURE2_SVEI8MM: "SVEI8MM",
|
||||
CPU_ARM64_FEATURE2_SVEF32MM: "SVEF32MM",
|
||||
CPU_ARM64_FEATURE2_SVEF64MM: "SVEF64MM",
|
||||
CPU_ARM64_FEATURE2_SVEBF16: "SVEBF16",
|
||||
CPU_ARM64_FEATURE2_I8MM: "I8MM",
|
||||
CPU_ARM64_FEATURE2_BF16: "BF16",
|
||||
CPU_ARM64_FEATURE2_DGH: "DGH",
|
||||
CPU_ARM64_FEATURE2_RNG: "RNG",
|
||||
CPU_ARM64_FEATURE2_BTI: "BTI",
|
||||
CPU_ARM64_FEATURE2_MTE: "MTE",
|
||||
CPU_ARM64_FEATURE2_ECV: "ECV",
|
||||
CPU_ARM64_FEATURE2_AFP: "AFP",
|
||||
CPU_ARM64_FEATURE2_RPRES: "RPRES",
|
||||
CPU_ARM64_FEATURE2_MTE3: "MTE3",
|
||||
CPU_ARM64_FEATURE2_SME: "SME",
|
||||
CPU_ARM64_FEATURE2_SME_I16I64: "SMEI16I64",
|
||||
CPU_ARM64_FEATURE2_SME_F64F64: "SMEF64F64",
|
||||
CPU_ARM64_FEATURE2_SME_I8I32: "SMEI8I32",
|
||||
CPU_ARM64_FEATURE2_SME_F16F32: "SMEF16F32",
|
||||
CPU_ARM64_FEATURE2_SME_B16F32: "SMEB16F32",
|
||||
CPU_ARM64_FEATURE2_SME_F32F32: "SMEF32F32",
|
||||
CPU_ARM64_FEATURE2_SME_FA64: "SMEFA64",
|
||||
CPU_ARM64_FEATURE2_WFXT: "WFXT",
|
||||
CPU_ARM64_FEATURE2_EBF16: "EBF16",
|
||||
CPU_ARM64_FEATURE2_SVE_EBF16: "SVEEBF16",
|
||||
}
|
||||
|
||||
func getCpuidFlags() []string {
|
||||
r := make([]string, 0, 20)
|
||||
hwcap := uint64(C.gethwcap())
|
||||
hwcap2 := uint64(C.gethwcap2())
|
||||
for i := uint(0); i < 64; i++ {
|
||||
key := uint64(1 << i)
|
||||
val := flagNames_arm64[key]
|
||||
|
@ -90,5 +190,12 @@ func getCpuidFlags() []string {
|
|||
r = append(r, val)
|
||||
}
|
||||
}
|
||||
for i := uint(0); i < 64; i++ {
|
||||
key := uint64(1 << i)
|
||||
val := flag2Names_arm64[key]
|
||||
if hwcap2&key != 0 {
|
||||
r = append(r, val)
|
||||
}
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
|
|
@ -28,7 +28,10 @@ unsigned long gethwcap2() {
|
|||
*/
|
||||
import "C"
|
||||
|
||||
/* all special features for ppc64le should be defined here */
|
||||
/*
|
||||
all special features for ppc64le should be defined here; canonical list:
|
||||
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/powerpc/include/uapi/asm/cputable.h
|
||||
*/
|
||||
const (
|
||||
/* AT_HWCAP features */
|
||||
PPC_FEATURE_32 = 0x80000000 /* 32-bit mode. */
|
||||
|
@ -77,6 +80,8 @@ const (
|
|||
PPC_FEATURE2_DARN = 0x00200000 /* darn instruction. */
|
||||
PPC_FEATURE2_SCV = 0x00100000 /* scv syscall. */
|
||||
PPC_FEATURE2_HTM_NO_SUSPEND = 0x00080000 /* TM without suspended state. */
|
||||
PPC_FEATURE2_ARCH_3_1 = 0x00040000 /* ISA 3.1 */
|
||||
PPC_FEATURE2_MMA = 0x00020000 /* Matrix Multiply Assist */
|
||||
)
|
||||
|
||||
var flagNames_ppc64le = map[uint64]string{
|
||||
|
@ -124,6 +129,8 @@ var flag2Names_ppc64le = map[uint64]string{
|
|||
PPC_FEATURE2_DARN: "DARN",
|
||||
PPC_FEATURE2_SCV: "SCV",
|
||||
PPC_FEATURE2_HTM_NO_SUSPEND: "HTM-NO-SUSPEND",
|
||||
PPC_FEATURE2_ARCH_3_1: "ARCH_3_1",
|
||||
PPC_FEATURE2_MMA: "MMA",
|
||||
}
|
||||
|
||||
func getCpuidFlags() []string {
|
||||
|
|
|
@ -25,7 +25,11 @@ unsigned long gethwcap() {
|
|||
*/
|
||||
import "C"
|
||||
|
||||
/* all special features for s390x should be defined here */
|
||||
/*
|
||||
all special features for s390x should be defined here; canonical list:
|
||||
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/s390/include/asm/elf.h
|
||||
http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/s390/bits/hwcap.h;hb=HEAD
|
||||
*/
|
||||
const (
|
||||
/* AT_HWCAP features */
|
||||
HWCAP_S390_ESAN3 = 1
|
||||
|
@ -47,10 +51,10 @@ const (
|
|||
HWCAP_S390_VXRS_PDE = 65536
|
||||
HWCAP_S390_SORT = 131072
|
||||
HWCAP_S390_DFLT = 262144
|
||||
HWCAP_NR_VXRS_PDE2 = 524288
|
||||
HWCAP_NR_NNPA = 1048576
|
||||
HWCAP_NR_PCI_MIO = 2097152
|
||||
HWCAP_NR_SIE = 4194304
|
||||
HWCAP_S390_VXRS_PDE2 = 524288
|
||||
HWCAP_S390_NNPA = 1048576
|
||||
HWCAP_S390_PCI_MIO = 2097152
|
||||
HWCAP_S390_SIE = 4194304
|
||||
)
|
||||
|
||||
var flagNames_s390x = map[uint64]string{
|
||||
|
@ -73,10 +77,10 @@ var flagNames_s390x = map[uint64]string{
|
|||
HWCAP_S390_VXRS_PDE: "VXP",
|
||||
HWCAP_S390_SORT: "SORT",
|
||||
HWCAP_S390_DFLT: "DFLT",
|
||||
HWCAP_NR_VXRS_PDE2: "VXP2",
|
||||
HWCAP_NR_NNPA: "NNPA",
|
||||
HWCAP_NR_PCI_MIO: "PCIMIO",
|
||||
HWCAP_NR_SIE: "SIE",
|
||||
HWCAP_S390_VXRS_PDE2: "VXP2",
|
||||
HWCAP_S390_NNPA: "NNPA",
|
||||
HWCAP_S390_PCI_MIO: "PCIMIO",
|
||||
HWCAP_S390_SIE: "SIE",
|
||||
}
|
||||
|
||||
func getCpuidFlags() []string {
|
||||
|
|
Loading…
Add table
Reference in a new issue