diff --git a/cpuid.go b/cpuid.go index 1a0a87e..781a9c9 100644 --- a/cpuid.go +++ b/cpuid.go @@ -143,6 +143,7 @@ const ( MSRIRC // Instruction Retired Counter MSR available NX // NX (No-Execute) bit OSXSAVE // XSAVE enabled by OS + PCONFIG // PCONFIG for Intel Multi-Key Total Memory Encryption POPCNT // POPCNT instruction RDPRU // RDPRU instruction supported RDRAND // RDRAND instruction is available @@ -174,6 +175,7 @@ const ( STIBP // Single Thread Indirect Branch Predictors SUCCOR // Software uncorrectable error containment and recovery capability. TBM // AMD Trailing Bit Manipulation + TME // Intel Total Memory Encryption. The following MSRs are supported: IA32_TME_CAPABILITY, IA32_TME_ACTIVATE, IA32_TME_EXCLUDE_MASK, and IA32_TME_EXCLUDE_BASE. TSXLDTRK // Intel TSX Suspend Load Address Tracking VAES // Vector AES VMPL // AMD VM Permission Levels supported @@ -1014,6 +1016,7 @@ func support() flagSet { // CPUID.(EAX=7, ECX=0).ECX fs.setIf(ecx&(1<<5) != 0, WAITPKG) fs.setIf(ecx&(1<<7) != 0, CETSS) + fs.setIf(ecx&(1<<13) != 0, TME) fs.setIf(ecx&(1<<25) != 0, CLDEMOTE) fs.setIf(ecx&(1<<27) != 0, MOVDIRI) fs.setIf(ecx&(1<<28) != 0, MOVDIR64B) @@ -1023,6 +1026,7 @@ func support() flagSet { fs.setIf(edx&(1<<11) != 0, RTM_ALWAYS_ABORT) fs.setIf(edx&(1<<14) != 0, SERIALIZE) fs.setIf(edx&(1<<16) != 0, TSXLDTRK) + fs.setIf(edx&(1<<18) != 0, PCONFIG) fs.setIf(edx&(1<<20) != 0, CETIBT) fs.setIf(edx&(1<<26) != 0, IBPB) fs.setIf(edx&(1<<27) != 0, STIBP) diff --git a/featureid_string.go b/featureid_string.go index f73a352..8cf57ca 100644 --- a/featureid_string.go +++ b/featureid_string.go @@ -84,84 +84,86 @@ func _() { _ = x[MSRIRC-74] _ = x[NX-75] _ = x[OSXSAVE-76] - _ = x[POPCNT-77] - _ = x[RDPRU-78] - _ = x[RDRAND-79] - _ = x[RDSEED-80] - _ = x[RDTSCP-81] - _ = x[RTM-82] - _ = x[RTM_ALWAYS_ABORT-83] - _ = x[SCE-84] - _ = x[SERIALIZE-85] - _ = x[SEV-86] - _ = x[SEV_64BIT-87] - _ = x[SEV_ALTERNATIVE-88] - _ = x[SEV_DEBUGSWAP-89] - _ = x[SEV_ES-90] - _ = x[SEV_RESTRICTED-91] - _ = x[SEV_SNP-92] - _ = x[SGX-93] - _ = x[SGXLC-94] - _ = x[SHA-95] - _ = x[SME-96] - _ = x[SME_COHERENT-97] - _ = x[SSE-98] - _ = x[SSE2-99] - _ = x[SSE3-100] - _ = x[SSE4-101] - _ = x[SSE42-102] - _ = x[SSE4A-103] - _ = x[SSSE3-104] - _ = x[STIBP-105] - _ = x[SUCCOR-106] - _ = x[TBM-107] - _ = x[TSXLDTRK-108] - _ = x[VAES-109] - _ = x[VMPL-110] - _ = x[VMSA_REGPROT-111] - _ = x[VMX-112] - _ = x[VPCLMULQDQ-113] - _ = x[VTE-114] - _ = x[WAITPKG-115] - _ = x[WBNOINVD-116] - _ = x[X87-117] - _ = x[XGETBV1-118] - _ = x[XOP-119] - _ = x[XSAVE-120] - _ = x[XSAVEC-121] - _ = x[XSAVEOPT-122] - _ = x[XSAVES-123] - _ = x[AESARM-124] - _ = x[ARMCPUID-125] - _ = x[ASIMD-126] - _ = x[ASIMDDP-127] - _ = x[ASIMDHP-128] - _ = x[ASIMDRDM-129] - _ = x[ATOMICS-130] - _ = x[CRC32-131] - _ = x[DCPOP-132] - _ = x[EVTSTRM-133] - _ = x[FCMA-134] - _ = x[FP-135] - _ = x[FPHP-136] - _ = x[GPA-137] - _ = x[JSCVT-138] - _ = x[LRCPC-139] - _ = x[PMULL-140] - _ = x[SHA1-141] - _ = x[SHA2-142] - _ = x[SHA3-143] - _ = x[SHA512-144] - _ = x[SM3-145] - _ = x[SM4-146] - _ = x[SVE-147] - _ = x[lastID-148] + _ = x[PCONFIG-77] + _ = x[POPCNT-78] + _ = x[RDPRU-79] + _ = x[RDRAND-80] + _ = x[RDSEED-81] + _ = x[RDTSCP-82] + _ = x[RTM-83] + _ = x[RTM_ALWAYS_ABORT-84] + _ = x[SCE-85] + _ = x[SERIALIZE-86] + _ = x[SEV-87] + _ = x[SEV_64BIT-88] + _ = x[SEV_ALTERNATIVE-89] + _ = x[SEV_DEBUGSWAP-90] + _ = x[SEV_ES-91] + _ = x[SEV_RESTRICTED-92] + _ = x[SEV_SNP-93] + _ = x[SGX-94] + _ = x[SGXLC-95] + _ = x[SHA-96] + _ = x[SME-97] + _ = x[SME_COHERENT-98] + _ = x[SSE-99] + _ = x[SSE2-100] + _ = x[SSE3-101] + _ = x[SSE4-102] + _ = x[SSE42-103] + _ = x[SSE4A-104] + _ = x[SSSE3-105] + _ = x[STIBP-106] + _ = x[SUCCOR-107] + _ = x[TBM-108] + _ = x[TME-109] + _ = x[TSXLDTRK-110] + _ = x[VAES-111] + _ = x[VMPL-112] + _ = x[VMSA_REGPROT-113] + _ = x[VMX-114] + _ = x[VPCLMULQDQ-115] + _ = x[VTE-116] + _ = x[WAITPKG-117] + _ = x[WBNOINVD-118] + _ = x[X87-119] + _ = x[XGETBV1-120] + _ = x[XOP-121] + _ = x[XSAVE-122] + _ = x[XSAVEC-123] + _ = x[XSAVEOPT-124] + _ = x[XSAVES-125] + _ = x[AESARM-126] + _ = x[ARMCPUID-127] + _ = x[ASIMD-128] + _ = x[ASIMDDP-129] + _ = x[ASIMDHP-130] + _ = x[ASIMDRDM-131] + _ = x[ATOMICS-132] + _ = x[CRC32-133] + _ = x[DCPOP-134] + _ = x[EVTSTRM-135] + _ = x[FCMA-136] + _ = x[FP-137] + _ = x[FPHP-138] + _ = x[GPA-139] + _ = x[JSCVT-140] + _ = x[LRCPC-141] + _ = x[PMULL-142] + _ = x[SHA1-143] + _ = x[SHA2-144] + _ = x[SHA3-145] + _ = x[SHA512-146] + _ = x[SM3-147] + _ = x[SM4-148] + _ = x[SVE-149] + _ = x[lastID-150] _ = x[firstID-0] } -const _FeatureID_name = "firstIDADXAESNIAMD3DNOWAMD3DNOWEXTAMXBF16AMXINT8AMXTILEAVXAVX2AVX512BF16AVX512BITALGAVX512BWAVX512CDAVX512DQAVX512ERAVX512FAVX512FP16AVX512IFMAAVX512PFAVX512VBMIAVX512VBMI2AVX512VLAVX512VNNIAVX512VP2INTERSECTAVX512VPOPCNTDQAVXSLOWBMI1BMI2CETIBTCETSSCLDEMOTECLMULCLZEROCMOVCMPXCHG8CPBOOSTCX16ENQCMDERMSF16CFMA3FMA4FXSRFXSROPTGFNIHLEHTTHWAHYPERVISORIBPBIBSIBSBRNTRGTIBSFETCHSAMIBSFFVIBSOPCNTIBSOPCNTEXTIBSOPSAMIBSRDWROPCNTIBSRIPINVALIDCHKIBS_PREVENTHOSTINT_WBINVDINVLPGBLAHFLZCNTMCAOVERFLOWMCOMMITMMXMMXEXTMOVBEMOVDIR64BMOVDIRIMPXMSR_PAGEFLUSHMSRIRCNXOSXSAVEPOPCNTRDPRURDRANDRDSEEDRDTSCPRTMRTM_ALWAYS_ABORTSCESERIALIZESEVSEV_64BITSEV_ALTERNATIVESEV_DEBUGSWAPSEV_ESSEV_RESTRICTEDSEV_SNPSGXSGXLCSHASMESME_COHERENTSSESSE2SSE3SSE4SSE42SSE4ASSSE3STIBPSUCCORTBMTSXLDTRKVAESVMPLVMSA_REGPROTVMXVPCLMULQDQVTEWAITPKGWBNOINVDX87XGETBV1XOPXSAVEXSAVECXSAVEOPTXSAVESAESARMARMCPUIDASIMDASIMDDPASIMDHPASIMDRDMATOMICSCRC32DCPOPEVTSTRMFCMAFPFPHPGPAJSCVTLRCPCPMULLSHA1SHA2SHA3SHA512SM3SM4SVElastID" +const _FeatureID_name = "firstIDADXAESNIAMD3DNOWAMD3DNOWEXTAMXBF16AMXINT8AMXTILEAVXAVX2AVX512BF16AVX512BITALGAVX512BWAVX512CDAVX512DQAVX512ERAVX512FAVX512FP16AVX512IFMAAVX512PFAVX512VBMIAVX512VBMI2AVX512VLAVX512VNNIAVX512VP2INTERSECTAVX512VPOPCNTDQAVXSLOWBMI1BMI2CETIBTCETSSCLDEMOTECLMULCLZEROCMOVCMPXCHG8CPBOOSTCX16ENQCMDERMSF16CFMA3FMA4FXSRFXSROPTGFNIHLEHTTHWAHYPERVISORIBPBIBSIBSBRNTRGTIBSFETCHSAMIBSFFVIBSOPCNTIBSOPCNTEXTIBSOPSAMIBSRDWROPCNTIBSRIPINVALIDCHKIBS_PREVENTHOSTINT_WBINVDINVLPGBLAHFLZCNTMCAOVERFLOWMCOMMITMMXMMXEXTMOVBEMOVDIR64BMOVDIRIMPXMSR_PAGEFLUSHMSRIRCNXOSXSAVEPCONFIGPOPCNTRDPRURDRANDRDSEEDRDTSCPRTMRTM_ALWAYS_ABORTSCESERIALIZESEVSEV_64BITSEV_ALTERNATIVESEV_DEBUGSWAPSEV_ESSEV_RESTRICTEDSEV_SNPSGXSGXLCSHASMESME_COHERENTSSESSE2SSE3SSE4SSE42SSE4ASSSE3STIBPSUCCORTBMTMETSXLDTRKVAESVMPLVMSA_REGPROTVMXVPCLMULQDQVTEWAITPKGWBNOINVDX87XGETBV1XOPXSAVEXSAVECXSAVEOPTXSAVESAESARMARMCPUIDASIMDASIMDDPASIMDHPASIMDRDMATOMICSCRC32DCPOPEVTSTRMFCMAFPFPHPGPAJSCVTLRCPCPMULLSHA1SHA2SHA3SHA512SM3SM4SVElastID" -var _FeatureID_index = [...]uint16{0, 7, 10, 15, 23, 34, 41, 48, 55, 58, 62, 72, 84, 92, 100, 108, 116, 123, 133, 143, 151, 161, 172, 180, 190, 208, 223, 230, 234, 238, 244, 249, 257, 262, 268, 272, 280, 287, 291, 297, 301, 305, 309, 313, 317, 324, 328, 331, 334, 337, 347, 351, 354, 364, 375, 381, 389, 400, 408, 420, 436, 451, 461, 468, 472, 477, 488, 495, 498, 504, 509, 518, 525, 528, 541, 547, 549, 556, 562, 567, 573, 579, 585, 588, 604, 607, 616, 619, 628, 643, 656, 662, 676, 683, 686, 691, 694, 697, 709, 712, 716, 720, 724, 729, 734, 739, 744, 750, 753, 761, 765, 769, 781, 784, 794, 797, 804, 812, 815, 822, 825, 830, 836, 844, 850, 856, 864, 869, 876, 883, 891, 898, 903, 908, 915, 919, 921, 925, 928, 933, 938, 943, 947, 951, 955, 961, 964, 967, 970, 976} +var _FeatureID_index = [...]uint16{0, 7, 10, 15, 23, 34, 41, 48, 55, 58, 62, 72, 84, 92, 100, 108, 116, 123, 133, 143, 151, 161, 172, 180, 190, 208, 223, 230, 234, 238, 244, 249, 257, 262, 268, 272, 280, 287, 291, 297, 301, 305, 309, 313, 317, 324, 328, 331, 334, 337, 347, 351, 354, 364, 375, 381, 389, 400, 408, 420, 436, 451, 461, 468, 472, 477, 488, 495, 498, 504, 509, 518, 525, 528, 541, 547, 549, 556, 563, 569, 574, 580, 586, 592, 595, 611, 614, 623, 626, 635, 650, 663, 669, 683, 690, 693, 698, 701, 704, 716, 719, 723, 727, 731, 736, 741, 746, 751, 757, 760, 763, 771, 775, 779, 791, 794, 804, 807, 814, 822, 825, 832, 835, 840, 846, 854, 860, 866, 874, 879, 886, 893, 901, 908, 913, 918, 925, 929, 931, 935, 938, 943, 948, 953, 957, 961, 965, 971, 974, 977, 980, 986} func (i FeatureID) String() string { if i < 0 || i >= FeatureID(len(_FeatureID_index)-1) {