summaryrefslogtreecommitdiff
path: root/vendor/github.com/klauspost/cpuid
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/klauspost/cpuid')
-rw-r--r--vendor/github.com/klauspost/cpuid/v2/cpuid.go427
-rw-r--r--vendor/github.com/klauspost/cpuid/v2/detect_x86.go1
-rw-r--r--vendor/github.com/klauspost/cpuid/v2/featureid_string.go289
3 files changed, 382 insertions, 335 deletions
diff --git a/vendor/github.com/klauspost/cpuid/v2/cpuid.go b/vendor/github.com/klauspost/cpuid/v2/cpuid.go
index 15b760337..805f5e7b4 100644
--- a/vendor/github.com/klauspost/cpuid/v2/cpuid.go
+++ b/vendor/github.com/klauspost/cpuid/v2/cpuid.go
@@ -67,195 +67,200 @@ const (
// Keep index -1 as unknown
UNKNOWN = -1
- // Add features
- ADX FeatureID = iota // Intel ADX (Multi-Precision Add-Carry Instruction Extensions)
- AESNI // Advanced Encryption Standard New Instructions
- AMD3DNOW // AMD 3DNOW
- AMD3DNOWEXT // AMD 3DNowExt
- AMXBF16 // Tile computational operations on BFLOAT16 numbers
- AMXFP16 // Tile computational operations on FP16 numbers
- AMXINT8 // Tile computational operations on 8-bit integers
- AMXTILE // Tile architecture
- APX_F // Intel APX
- AVX // AVX functions
- AVX10 // If set the Intel AVX10 Converged Vector ISA is supported
- AVX10_128 // If set indicates that AVX10 128-bit vector support is present
- AVX10_256 // If set indicates that AVX10 256-bit vector support is present
- AVX10_512 // If set indicates that AVX10 512-bit vector support is present
- AVX2 // AVX2 functions
- AVX512BF16 // AVX-512 BFLOAT16 Instructions
- AVX512BITALG // AVX-512 Bit Algorithms
- AVX512BW // AVX-512 Byte and Word Instructions
- AVX512CD // AVX-512 Conflict Detection Instructions
- AVX512DQ // AVX-512 Doubleword and Quadword Instructions
- AVX512ER // AVX-512 Exponential and Reciprocal Instructions
- AVX512F // AVX-512 Foundation
- AVX512FP16 // AVX-512 FP16 Instructions
- AVX512IFMA // AVX-512 Integer Fused Multiply-Add Instructions
- AVX512PF // AVX-512 Prefetch Instructions
- AVX512VBMI // AVX-512 Vector Bit Manipulation Instructions
- AVX512VBMI2 // AVX-512 Vector Bit Manipulation Instructions, Version 2
- AVX512VL // AVX-512 Vector Length Extensions
- AVX512VNNI // AVX-512 Vector Neural Network Instructions
- AVX512VP2INTERSECT // AVX-512 Intersect for D/Q
- AVX512VPOPCNTDQ // AVX-512 Vector Population Count Doubleword and Quadword
- AVXIFMA // AVX-IFMA instructions
- AVXNECONVERT // AVX-NE-CONVERT instructions
- AVXSLOW // Indicates the CPU performs 2 128 bit operations instead of one
- AVXVNNI // AVX (VEX encoded) VNNI neural network instructions
- AVXVNNIINT8 // AVX-VNNI-INT8 instructions
- BHI_CTRL // Branch History Injection and Intra-mode Branch Target Injection / CVE-2022-0001, CVE-2022-0002 / INTEL-SA-00598
- BMI1 // Bit Manipulation Instruction Set 1
- BMI2 // Bit Manipulation Instruction Set 2
- CETIBT // Intel CET Indirect Branch Tracking
- CETSS // Intel CET Shadow Stack
- CLDEMOTE // Cache Line Demote
- CLMUL // Carry-less Multiplication
- CLZERO // CLZERO instruction supported
- CMOV // i686 CMOV
- CMPCCXADD // CMPCCXADD instructions
- CMPSB_SCADBS_SHORT // Fast short CMPSB and SCASB
- CMPXCHG8 // CMPXCHG8 instruction
- CPBOOST // Core Performance Boost
- CPPC // AMD: Collaborative Processor Performance Control
- CX16 // CMPXCHG16B Instruction
- EFER_LMSLE_UNS // AMD: =Core::X86::Msr::EFER[LMSLE] is not supported, and MBZ
- ENQCMD // Enqueue Command
- ERMS // Enhanced REP MOVSB/STOSB
- F16C // Half-precision floating-point conversion
- FLUSH_L1D // Flush L1D cache
- FMA3 // Intel FMA 3. Does not imply AVX.
- FMA4 // Bulldozer FMA4 functions
- FP128 // AMD: When set, the internal FP/SIMD execution datapath is no more than 128-bits wide
- FP256 // AMD: When set, the internal FP/SIMD execution datapath is no more than 256-bits wide
- FSRM // Fast Short Rep Mov
- FXSR // FXSAVE, FXRESTOR instructions, CR4 bit 9
- FXSROPT // FXSAVE/FXRSTOR optimizations
- GFNI // Galois Field New Instructions. May require other features (AVX, AVX512VL,AVX512F) based on usage.
- HLE // Hardware Lock Elision
- HRESET // If set CPU supports history reset and the IA32_HRESET_ENABLE MSR
- HTT // Hyperthreading (enabled)
- HWA // Hardware assert supported. Indicates support for MSRC001_10
- HYBRID_CPU // This part has CPUs of more than one type.
- HYPERVISOR // This bit has been reserved by Intel & AMD for use by hypervisors
- IA32_ARCH_CAP // IA32_ARCH_CAPABILITIES MSR (Intel)
- IA32_CORE_CAP // IA32_CORE_CAPABILITIES MSR
- IBPB // Indirect Branch Restricted Speculation (IBRS) and Indirect Branch Predictor Barrier (IBPB)
- IBRS // AMD: Indirect Branch Restricted Speculation
- IBRS_PREFERRED // AMD: IBRS is preferred over software solution
- IBRS_PROVIDES_SMP // AMD: IBRS provides Same Mode Protection
- IBS // Instruction Based Sampling (AMD)
- IBSBRNTRGT // Instruction Based Sampling Feature (AMD)
- IBSFETCHSAM // Instruction Based Sampling Feature (AMD)
- IBSFFV // Instruction Based Sampling Feature (AMD)
- IBSOPCNT // Instruction Based Sampling Feature (AMD)
- IBSOPCNTEXT // Instruction Based Sampling Feature (AMD)
- IBSOPSAM // Instruction Based Sampling Feature (AMD)
- IBSRDWROPCNT // Instruction Based Sampling Feature (AMD)
- IBSRIPINVALIDCHK // Instruction Based Sampling Feature (AMD)
- IBS_FETCH_CTLX // AMD: IBS fetch control extended MSR supported
- IBS_OPDATA4 // AMD: IBS op data 4 MSR supported
- IBS_OPFUSE // AMD: Indicates support for IbsOpFuse
- IBS_PREVENTHOST // Disallowing IBS use by the host supported
- IBS_ZEN4 // AMD: Fetch and Op IBS support IBS extensions added with Zen4
- IDPRED_CTRL // IPRED_DIS
- INT_WBINVD // WBINVD/WBNOINVD are interruptible.
- INVLPGB // NVLPGB and TLBSYNC instruction supported
- KEYLOCKER // Key locker
- KEYLOCKERW // Key locker wide
- LAHF // LAHF/SAHF in long mode
- LAM // If set, CPU supports Linear Address Masking
- LBRVIRT // LBR virtualization
- LZCNT // LZCNT instruction
- MCAOVERFLOW // MCA overflow recovery support.
- MCDT_NO // Processor do not exhibit MXCSR Configuration Dependent Timing behavior and do not need to mitigate it.
- MCOMMIT // MCOMMIT instruction supported
- MD_CLEAR // VERW clears CPU buffers
- MMX // standard MMX
- MMXEXT // SSE integer functions or AMD MMX ext
- MOVBE // MOVBE instruction (big-endian)
- MOVDIR64B // Move 64 Bytes as Direct Store
- MOVDIRI // Move Doubleword as Direct Store
- MOVSB_ZL // Fast Zero-Length MOVSB
- MOVU // AMD: MOVU SSE instructions are more efficient and should be preferred to SSE MOVL/MOVH. MOVUPS is more efficient than MOVLPS/MOVHPS. MOVUPD is more efficient than MOVLPD/MOVHPD
- MPX // Intel MPX (Memory Protection Extensions)
- MSRIRC // Instruction Retired Counter MSR available
- MSRLIST // Read/Write List of Model Specific Registers
- MSR_PAGEFLUSH // Page Flush MSR available
- NRIPS // Indicates support for NRIP save on VMEXIT
- NX // NX (No-Execute) bit
- OSXSAVE // XSAVE enabled by OS
- PCONFIG // PCONFIG for Intel Multi-Key Total Memory Encryption
- POPCNT // POPCNT instruction
- PPIN // AMD: Protected Processor Inventory Number support. Indicates that Protected Processor Inventory Number (PPIN) capability can be enabled
- PREFETCHI // PREFETCHIT0/1 instructions
- PSFD // Predictive Store Forward Disable
- RDPRU // RDPRU instruction supported
- RDRAND // RDRAND instruction is available
- RDSEED // RDSEED instruction is available
- RDTSCP // RDTSCP Instruction
- RRSBA_CTRL // Restricted RSB Alternate
- RTM // Restricted Transactional Memory
- RTM_ALWAYS_ABORT // Indicates that the loaded microcode is forcing RTM abort.
- SERIALIZE // Serialize Instruction Execution
- SEV // AMD Secure Encrypted Virtualization supported
- SEV_64BIT // AMD SEV guest execution only allowed from a 64-bit host
- SEV_ALTERNATIVE // AMD SEV Alternate Injection supported
- SEV_DEBUGSWAP // Full debug state swap supported for SEV-ES guests
- SEV_ES // AMD SEV Encrypted State supported
- SEV_RESTRICTED // AMD SEV Restricted Injection supported
- SEV_SNP // AMD SEV Secure Nested Paging supported
- SGX // Software Guard Extensions
- SGXLC // Software Guard Extensions Launch Control
- SHA // Intel SHA Extensions
- SME // AMD Secure Memory Encryption supported
- SME_COHERENT // AMD Hardware cache coherency across encryption domains enforced
- SPEC_CTRL_SSBD // Speculative Store Bypass Disable
- SRBDS_CTRL // SRBDS mitigation MSR available
- SSE // SSE functions
- SSE2 // P4 SSE functions
- SSE3 // Prescott SSE3 functions
- SSE4 // Penryn SSE4.1 functions
- SSE42 // Nehalem SSE4.2 functions
- SSE4A // AMD Barcelona microarchitecture SSE4a instructions
- SSSE3 // Conroe SSSE3 functions
- STIBP // Single Thread Indirect Branch Predictors
- STIBP_ALWAYSON // AMD: Single Thread Indirect Branch Prediction Mode has Enhanced Performance and may be left Always On
- STOSB_SHORT // Fast short STOSB
- SUCCOR // Software uncorrectable error containment and recovery capability.
- SVM // AMD Secure Virtual Machine
- SVMDA // Indicates support for the SVM decode assists.
- SVMFBASID // SVM, Indicates that TLB flush events, including CR3 writes and CR4.PGE toggles, flush only the current ASID's TLB entries. Also indicates support for the extended VMCBTLB_Control
- SVML // AMD SVM lock. Indicates support for SVM-Lock.
- SVMNP // AMD SVM nested paging
- SVMPF // SVM pause intercept filter. Indicates support for the pause intercept filter
- SVMPFT // SVM PAUSE filter threshold. Indicates support for the PAUSE filter cycle count threshold
- SYSCALL // System-Call Extension (SCE): SYSCALL and SYSRET instructions.
- SYSEE // SYSENTER and SYSEXIT instructions
- TBM // AMD Trailing Bit Manipulation
- TDX_GUEST // Intel Trust Domain Extensions Guest
- TLB_FLUSH_NESTED // AMD: Flushing includes all the nested translations for guest translations
- 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.
- TOPEXT // TopologyExtensions: topology extensions support. Indicates support for CPUID Fn8000_001D_EAX_x[N:0]-CPUID Fn8000_001E_EDX.
- TSCRATEMSR // MSR based TSC rate control. Indicates support for MSR TSC ratio MSRC000_0104
- TSXLDTRK // Intel TSX Suspend Load Address Tracking
- VAES // Vector AES. AVX(512) versions requires additional checks.
- VMCBCLEAN // VMCB clean bits. Indicates support for VMCB clean bits.
- VMPL // AMD VM Permission Levels supported
- VMSA_REGPROT // AMD VMSA Register Protection supported
- VMX // Virtual Machine Extensions
- VPCLMULQDQ // Carry-Less Multiplication Quadword. Requires AVX for 3 register versions.
- VTE // AMD Virtual Transparent Encryption supported
- WAITPKG // TPAUSE, UMONITOR, UMWAIT
- WBNOINVD // Write Back and Do Not Invalidate Cache
- WRMSRNS // Non-Serializing Write to Model Specific Register
- X87 // FPU
- XGETBV1 // Supports XGETBV with ECX = 1
- XOP // Bulldozer XOP functions
- XSAVE // XSAVE, XRESTOR, XSETBV, XGETBV
- XSAVEC // Supports XSAVEC and the compacted form of XRSTOR.
- XSAVEOPT // XSAVEOPT available
- XSAVES // Supports XSAVES/XRSTORS and IA32_XSS
+ // x86 features
+ ADX FeatureID = iota // Intel ADX (Multi-Precision Add-Carry Instruction Extensions)
+ AESNI // Advanced Encryption Standard New Instructions
+ AMD3DNOW // AMD 3DNOW
+ AMD3DNOWEXT // AMD 3DNowExt
+ AMXBF16 // Tile computational operations on BFLOAT16 numbers
+ AMXFP16 // Tile computational operations on FP16 numbers
+ AMXINT8 // Tile computational operations on 8-bit integers
+ AMXTILE // Tile architecture
+ APX_F // Intel APX
+ AVX // AVX functions
+ AVX10 // If set the Intel AVX10 Converged Vector ISA is supported
+ AVX10_128 // If set indicates that AVX10 128-bit vector support is present
+ AVX10_256 // If set indicates that AVX10 256-bit vector support is present
+ AVX10_512 // If set indicates that AVX10 512-bit vector support is present
+ AVX2 // AVX2 functions
+ AVX512BF16 // AVX-512 BFLOAT16 Instructions
+ AVX512BITALG // AVX-512 Bit Algorithms
+ AVX512BW // AVX-512 Byte and Word Instructions
+ AVX512CD // AVX-512 Conflict Detection Instructions
+ AVX512DQ // AVX-512 Doubleword and Quadword Instructions
+ AVX512ER // AVX-512 Exponential and Reciprocal Instructions
+ AVX512F // AVX-512 Foundation
+ AVX512FP16 // AVX-512 FP16 Instructions
+ AVX512IFMA // AVX-512 Integer Fused Multiply-Add Instructions
+ AVX512PF // AVX-512 Prefetch Instructions
+ AVX512VBMI // AVX-512 Vector Bit Manipulation Instructions
+ AVX512VBMI2 // AVX-512 Vector Bit Manipulation Instructions, Version 2
+ AVX512VL // AVX-512 Vector Length Extensions
+ AVX512VNNI // AVX-512 Vector Neural Network Instructions
+ AVX512VP2INTERSECT // AVX-512 Intersect for D/Q
+ AVX512VPOPCNTDQ // AVX-512 Vector Population Count Doubleword and Quadword
+ AVXIFMA // AVX-IFMA instructions
+ AVXNECONVERT // AVX-NE-CONVERT instructions
+ AVXSLOW // Indicates the CPU performs 2 128 bit operations instead of one
+ AVXVNNI // AVX (VEX encoded) VNNI neural network instructions
+ AVXVNNIINT8 // AVX-VNNI-INT8 instructions
+ BHI_CTRL // Branch History Injection and Intra-mode Branch Target Injection / CVE-2022-0001, CVE-2022-0002 / INTEL-SA-00598
+ BMI1 // Bit Manipulation Instruction Set 1
+ BMI2 // Bit Manipulation Instruction Set 2
+ CETIBT // Intel CET Indirect Branch Tracking
+ CETSS // Intel CET Shadow Stack
+ CLDEMOTE // Cache Line Demote
+ CLMUL // Carry-less Multiplication
+ CLZERO // CLZERO instruction supported
+ CMOV // i686 CMOV
+ CMPCCXADD // CMPCCXADD instructions
+ CMPSB_SCADBS_SHORT // Fast short CMPSB and SCASB
+ CMPXCHG8 // CMPXCHG8 instruction
+ CPBOOST // Core Performance Boost
+ CPPC // AMD: Collaborative Processor Performance Control
+ CX16 // CMPXCHG16B Instruction
+ EFER_LMSLE_UNS // AMD: =Core::X86::Msr::EFER[LMSLE] is not supported, and MBZ
+ ENQCMD // Enqueue Command
+ ERMS // Enhanced REP MOVSB/STOSB
+ F16C // Half-precision floating-point conversion
+ FLUSH_L1D // Flush L1D cache
+ FMA3 // Intel FMA 3. Does not imply AVX.
+ FMA4 // Bulldozer FMA4 functions
+ FP128 // AMD: When set, the internal FP/SIMD execution datapath is no more than 128-bits wide
+ FP256 // AMD: When set, the internal FP/SIMD execution datapath is no more than 256-bits wide
+ FSRM // Fast Short Rep Mov
+ FXSR // FXSAVE, FXRESTOR instructions, CR4 bit 9
+ FXSROPT // FXSAVE/FXRSTOR optimizations
+ GFNI // Galois Field New Instructions. May require other features (AVX, AVX512VL,AVX512F) based on usage.
+ HLE // Hardware Lock Elision
+ HRESET // If set CPU supports history reset and the IA32_HRESET_ENABLE MSR
+ HTT // Hyperthreading (enabled)
+ HWA // Hardware assert supported. Indicates support for MSRC001_10
+ HYBRID_CPU // This part has CPUs of more than one type.
+ HYPERVISOR // This bit has been reserved by Intel & AMD for use by hypervisors
+ IA32_ARCH_CAP // IA32_ARCH_CAPABILITIES MSR (Intel)
+ IA32_CORE_CAP // IA32_CORE_CAPABILITIES MSR
+ IBPB // Indirect Branch Restricted Speculation (IBRS) and Indirect Branch Predictor Barrier (IBPB)
+ IBPB_BRTYPE // Indicates that MSR 49h (PRED_CMD) bit 0 (IBPB) flushes all branch type predictions from the CPU branch predictor
+ IBRS // AMD: Indirect Branch Restricted Speculation
+ IBRS_PREFERRED // AMD: IBRS is preferred over software solution
+ IBRS_PROVIDES_SMP // AMD: IBRS provides Same Mode Protection
+ IBS // Instruction Based Sampling (AMD)
+ IBSBRNTRGT // Instruction Based Sampling Feature (AMD)
+ IBSFETCHSAM // Instruction Based Sampling Feature (AMD)
+ IBSFFV // Instruction Based Sampling Feature (AMD)
+ IBSOPCNT // Instruction Based Sampling Feature (AMD)
+ IBSOPCNTEXT // Instruction Based Sampling Feature (AMD)
+ IBSOPSAM // Instruction Based Sampling Feature (AMD)
+ IBSRDWROPCNT // Instruction Based Sampling Feature (AMD)
+ IBSRIPINVALIDCHK // Instruction Based Sampling Feature (AMD)
+ IBS_FETCH_CTLX // AMD: IBS fetch control extended MSR supported
+ IBS_OPDATA4 // AMD: IBS op data 4 MSR supported
+ IBS_OPFUSE // AMD: Indicates support for IbsOpFuse
+ IBS_PREVENTHOST // Disallowing IBS use by the host supported
+ IBS_ZEN4 // AMD: Fetch and Op IBS support IBS extensions added with Zen4
+ IDPRED_CTRL // IPRED_DIS
+ INT_WBINVD // WBINVD/WBNOINVD are interruptible.
+ INVLPGB // NVLPGB and TLBSYNC instruction supported
+ KEYLOCKER // Key locker
+ KEYLOCKERW // Key locker wide
+ LAHF // LAHF/SAHF in long mode
+ LAM // If set, CPU supports Linear Address Masking
+ LBRVIRT // LBR virtualization
+ LZCNT // LZCNT instruction
+ MCAOVERFLOW // MCA overflow recovery support.
+ MCDT_NO // Processor do not exhibit MXCSR Configuration Dependent Timing behavior and do not need to mitigate it.
+ MCOMMIT // MCOMMIT instruction supported
+ MD_CLEAR // VERW clears CPU buffers
+ MMX // standard MMX
+ MMXEXT // SSE integer functions or AMD MMX ext
+ MOVBE // MOVBE instruction (big-endian)
+ MOVDIR64B // Move 64 Bytes as Direct Store
+ MOVDIRI // Move Doubleword as Direct Store
+ MOVSB_ZL // Fast Zero-Length MOVSB
+ MOVU // AMD: MOVU SSE instructions are more efficient and should be preferred to SSE MOVL/MOVH. MOVUPS is more efficient than MOVLPS/MOVHPS. MOVUPD is more efficient than MOVLPD/MOVHPD
+ MPX // Intel MPX (Memory Protection Extensions)
+ MSRIRC // Instruction Retired Counter MSR available
+ MSRLIST // Read/Write List of Model Specific Registers
+ MSR_PAGEFLUSH // Page Flush MSR available
+ NRIPS // Indicates support for NRIP save on VMEXIT
+ NX // NX (No-Execute) bit
+ OSXSAVE // XSAVE enabled by OS
+ PCONFIG // PCONFIG for Intel Multi-Key Total Memory Encryption
+ POPCNT // POPCNT instruction
+ PPIN // AMD: Protected Processor Inventory Number support. Indicates that Protected Processor Inventory Number (PPIN) capability can be enabled
+ PREFETCHI // PREFETCHIT0/1 instructions
+ PSFD // Predictive Store Forward Disable
+ RDPRU // RDPRU instruction supported
+ RDRAND // RDRAND instruction is available
+ RDSEED // RDSEED instruction is available
+ RDTSCP // RDTSCP Instruction
+ RRSBA_CTRL // Restricted RSB Alternate
+ RTM // Restricted Transactional Memory
+ RTM_ALWAYS_ABORT // Indicates that the loaded microcode is forcing RTM abort.
+ SBPB // Indicates support for the Selective Branch Predictor Barrier
+ SERIALIZE // Serialize Instruction Execution
+ SEV // AMD Secure Encrypted Virtualization supported
+ SEV_64BIT // AMD SEV guest execution only allowed from a 64-bit host
+ SEV_ALTERNATIVE // AMD SEV Alternate Injection supported
+ SEV_DEBUGSWAP // Full debug state swap supported for SEV-ES guests
+ SEV_ES // AMD SEV Encrypted State supported
+ SEV_RESTRICTED // AMD SEV Restricted Injection supported
+ SEV_SNP // AMD SEV Secure Nested Paging supported
+ SGX // Software Guard Extensions
+ SGXLC // Software Guard Extensions Launch Control
+ SHA // Intel SHA Extensions
+ SME // AMD Secure Memory Encryption supported
+ SME_COHERENT // AMD Hardware cache coherency across encryption domains enforced
+ SPEC_CTRL_SSBD // Speculative Store Bypass Disable
+ SRBDS_CTRL // SRBDS mitigation MSR available
+ SRSO_MSR_FIX // Indicates that software may use MSR BP_CFG[BpSpecReduce] to mitigate SRSO.
+ SRSO_NO // Indicates the CPU is not subject to the SRSO vulnerability
+ SRSO_USER_KERNEL_NO // Indicates the CPU is not subject to the SRSO vulnerability across user/kernel boundaries
+ SSE // SSE functions
+ SSE2 // P4 SSE functions
+ SSE3 // Prescott SSE3 functions
+ SSE4 // Penryn SSE4.1 functions
+ SSE42 // Nehalem SSE4.2 functions
+ SSE4A // AMD Barcelona microarchitecture SSE4a instructions
+ SSSE3 // Conroe SSSE3 functions
+ STIBP // Single Thread Indirect Branch Predictors
+ STIBP_ALWAYSON // AMD: Single Thread Indirect Branch Prediction Mode has Enhanced Performance and may be left Always On
+ STOSB_SHORT // Fast short STOSB
+ SUCCOR // Software uncorrectable error containment and recovery capability.
+ SVM // AMD Secure Virtual Machine
+ SVMDA // Indicates support for the SVM decode assists.
+ SVMFBASID // SVM, Indicates that TLB flush events, including CR3 writes and CR4.PGE toggles, flush only the current ASID's TLB entries. Also indicates support for the extended VMCBTLB_Control
+ SVML // AMD SVM lock. Indicates support for SVM-Lock.
+ SVMNP // AMD SVM nested paging
+ SVMPF // SVM pause intercept filter. Indicates support for the pause intercept filter
+ SVMPFT // SVM PAUSE filter threshold. Indicates support for the PAUSE filter cycle count threshold
+ SYSCALL // System-Call Extension (SCE): SYSCALL and SYSRET instructions.
+ SYSEE // SYSENTER and SYSEXIT instructions
+ TBM // AMD Trailing Bit Manipulation
+ TDX_GUEST // Intel Trust Domain Extensions Guest
+ TLB_FLUSH_NESTED // AMD: Flushing includes all the nested translations for guest translations
+ 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.
+ TOPEXT // TopologyExtensions: topology extensions support. Indicates support for CPUID Fn8000_001D_EAX_x[N:0]-CPUID Fn8000_001E_EDX.
+ TSCRATEMSR // MSR based TSC rate control. Indicates support for MSR TSC ratio MSRC000_0104
+ TSXLDTRK // Intel TSX Suspend Load Address Tracking
+ VAES // Vector AES. AVX(512) versions requires additional checks.
+ VMCBCLEAN // VMCB clean bits. Indicates support for VMCB clean bits.
+ VMPL // AMD VM Permission Levels supported
+ VMSA_REGPROT // AMD VMSA Register Protection supported
+ VMX // Virtual Machine Extensions
+ VPCLMULQDQ // Carry-Less Multiplication Quadword. Requires AVX for 3 register versions.
+ VTE // AMD Virtual Transparent Encryption supported
+ WAITPKG // TPAUSE, UMONITOR, UMWAIT
+ WBNOINVD // Write Back and Do Not Invalidate Cache
+ WRMSRNS // Non-Serializing Write to Model Specific Register
+ X87 // FPU
+ XGETBV1 // Supports XGETBV with ECX = 1
+ XOP // Bulldozer XOP functions
+ XSAVE // XSAVE, XRESTOR, XSETBV, XGETBV
+ XSAVEC // Supports XSAVEC and the compacted form of XRSTOR.
+ XSAVEOPT // XSAVEOPT available
+ XSAVES // Supports XSAVES/XRSTORS and IA32_XSS
// ARM features:
AESARM // AES instructions
@@ -309,10 +314,11 @@ type CPUInfo struct {
L2 int // L2 Cache (per core or shared). Will be -1 if undetected
L3 int // L3 Cache (per core, per ccx or shared). Will be -1 if undetected
}
- SGX SGXSupport
- AVX10Level uint8
- maxFunc uint32
- maxExFunc uint32
+ SGX SGXSupport
+ AMDMemEncryption AMDMemEncryptionSupport
+ AVX10Level uint8
+ maxFunc uint32
+ maxExFunc uint32
}
var cpuid func(op uint32) (eax, ebx, ecx, edx uint32)
@@ -1079,6 +1085,32 @@ func hasSGX(available, lc bool) (rval SGXSupport) {
return
}
+type AMDMemEncryptionSupport struct {
+ Available bool
+ CBitPossition uint32
+ NumVMPL uint32
+ PhysAddrReduction uint32
+ NumEntryptedGuests uint32
+ MinSevNoEsAsid uint32
+}
+
+func hasAMDMemEncryption(available bool) (rval AMDMemEncryptionSupport) {
+ rval.Available = available
+ if !available {
+ return
+ }
+
+ _, b, c, d := cpuidex(0x8000001f, 0)
+
+ rval.CBitPossition = b & 0x3f
+ rval.PhysAddrReduction = (b >> 6) & 0x3F
+ rval.NumVMPL = (b >> 12) & 0xf
+ rval.NumEntryptedGuests = c
+ rval.MinSevNoEsAsid = d
+
+ return
+}
+
func support() flagSet {
var fs flagSet
mfi := maxFunctionID()
@@ -1418,6 +1450,15 @@ func support() flagSet {
fs.setIf((a>>24)&1 == 1, VMSA_REGPROT)
}
+ if maxExtendedFunction() >= 0x80000021 && vend == AMD {
+ a, _, _, _ := cpuid(0x80000021)
+ fs.setIf((a>>31)&1 == 1, SRSO_MSR_FIX)
+ fs.setIf((a>>30)&1 == 1, SRSO_USER_KERNEL_NO)
+ fs.setIf((a>>29)&1 == 1, SRSO_NO)
+ fs.setIf((a>>28)&1 == 1, IBPB_BRTYPE)
+ fs.setIf((a>>27)&1 == 1, SBPB)
+ }
+
if mfi >= 0x20 {
// Microsoft has decided to purposefully hide the information
// of the guest TEE when VMs are being created using Hyper-V.
diff --git a/vendor/github.com/klauspost/cpuid/v2/detect_x86.go b/vendor/github.com/klauspost/cpuid/v2/detect_x86.go
index c7dfa125d..799b400c2 100644
--- a/vendor/github.com/klauspost/cpuid/v2/detect_x86.go
+++ b/vendor/github.com/klauspost/cpuid/v2/detect_x86.go
@@ -27,6 +27,7 @@ func addInfo(c *CPUInfo, safe bool) {
c.Family, c.Model, c.Stepping = familyModel()
c.featureSet = support()
c.SGX = hasSGX(c.featureSet.inSet(SGX), c.featureSet.inSet(SGXLC))
+ c.AMDMemEncryption = hasAMDMemEncryption(c.featureSet.inSet(SME) || c.featureSet.inSet(SEV))
c.ThreadsPerCore = threadsPerCore()
c.LogicalCores = logicalCores()
c.PhysicalCores = physicalCores()
diff --git a/vendor/github.com/klauspost/cpuid/v2/featureid_string.go b/vendor/github.com/klauspost/cpuid/v2/featureid_string.go
index 43bd05f51..57a085a53 100644
--- a/vendor/github.com/klauspost/cpuid/v2/featureid_string.go
+++ b/vendor/github.com/klauspost/cpuid/v2/featureid_string.go
@@ -81,152 +81,157 @@ func _() {
_ = x[IA32_ARCH_CAP-71]
_ = x[IA32_CORE_CAP-72]
_ = x[IBPB-73]
- _ = x[IBRS-74]
- _ = x[IBRS_PREFERRED-75]
- _ = x[IBRS_PROVIDES_SMP-76]
- _ = x[IBS-77]
- _ = x[IBSBRNTRGT-78]
- _ = x[IBSFETCHSAM-79]
- _ = x[IBSFFV-80]
- _ = x[IBSOPCNT-81]
- _ = x[IBSOPCNTEXT-82]
- _ = x[IBSOPSAM-83]
- _ = x[IBSRDWROPCNT-84]
- _ = x[IBSRIPINVALIDCHK-85]
- _ = x[IBS_FETCH_CTLX-86]
- _ = x[IBS_OPDATA4-87]
- _ = x[IBS_OPFUSE-88]
- _ = x[IBS_PREVENTHOST-89]
- _ = x[IBS_ZEN4-90]
- _ = x[IDPRED_CTRL-91]
- _ = x[INT_WBINVD-92]
- _ = x[INVLPGB-93]
- _ = x[KEYLOCKER-94]
- _ = x[KEYLOCKERW-95]
- _ = x[LAHF-96]
- _ = x[LAM-97]
- _ = x[LBRVIRT-98]
- _ = x[LZCNT-99]
- _ = x[MCAOVERFLOW-100]
- _ = x[MCDT_NO-101]
- _ = x[MCOMMIT-102]
- _ = x[MD_CLEAR-103]
- _ = x[MMX-104]
- _ = x[MMXEXT-105]
- _ = x[MOVBE-106]
- _ = x[MOVDIR64B-107]
- _ = x[MOVDIRI-108]
- _ = x[MOVSB_ZL-109]
- _ = x[MOVU-110]
- _ = x[MPX-111]
- _ = x[MSRIRC-112]
- _ = x[MSRLIST-113]
- _ = x[MSR_PAGEFLUSH-114]
- _ = x[NRIPS-115]
- _ = x[NX-116]
- _ = x[OSXSAVE-117]
- _ = x[PCONFIG-118]
- _ = x[POPCNT-119]
- _ = x[PPIN-120]
- _ = x[PREFETCHI-121]
- _ = x[PSFD-122]
- _ = x[RDPRU-123]
- _ = x[RDRAND-124]
- _ = x[RDSEED-125]
- _ = x[RDTSCP-126]
- _ = x[RRSBA_CTRL-127]
- _ = x[RTM-128]
- _ = x[RTM_ALWAYS_ABORT-129]
- _ = x[SERIALIZE-130]
- _ = x[SEV-131]
- _ = x[SEV_64BIT-132]
- _ = x[SEV_ALTERNATIVE-133]
- _ = x[SEV_DEBUGSWAP-134]
- _ = x[SEV_ES-135]
- _ = x[SEV_RESTRICTED-136]
- _ = x[SEV_SNP-137]
- _ = x[SGX-138]
- _ = x[SGXLC-139]
- _ = x[SHA-140]
- _ = x[SME-141]
- _ = x[SME_COHERENT-142]
- _ = x[SPEC_CTRL_SSBD-143]
- _ = x[SRBDS_CTRL-144]
- _ = x[SSE-145]
- _ = x[SSE2-146]
- _ = x[SSE3-147]
- _ = x[SSE4-148]
- _ = x[SSE42-149]
- _ = x[SSE4A-150]
- _ = x[SSSE3-151]
- _ = x[STIBP-152]
- _ = x[STIBP_ALWAYSON-153]
- _ = x[STOSB_SHORT-154]
- _ = x[SUCCOR-155]
- _ = x[SVM-156]
- _ = x[SVMDA-157]
- _ = x[SVMFBASID-158]
- _ = x[SVML-159]
- _ = x[SVMNP-160]
- _ = x[SVMPF-161]
- _ = x[SVMPFT-162]
- _ = x[SYSCALL-163]
- _ = x[SYSEE-164]
- _ = x[TBM-165]
- _ = x[TDX_GUEST-166]
- _ = x[TLB_FLUSH_NESTED-167]
- _ = x[TME-168]
- _ = x[TOPEXT-169]
- _ = x[TSCRATEMSR-170]
- _ = x[TSXLDTRK-171]
- _ = x[VAES-172]
- _ = x[VMCBCLEAN-173]
- _ = x[VMPL-174]
- _ = x[VMSA_REGPROT-175]
- _ = x[VMX-176]
- _ = x[VPCLMULQDQ-177]
- _ = x[VTE-178]
- _ = x[WAITPKG-179]
- _ = x[WBNOINVD-180]
- _ = x[WRMSRNS-181]
- _ = x[X87-182]
- _ = x[XGETBV1-183]
- _ = x[XOP-184]
- _ = x[XSAVE-185]
- _ = x[XSAVEC-186]
- _ = x[XSAVEOPT-187]
- _ = x[XSAVES-188]
- _ = x[AESARM-189]
- _ = x[ARMCPUID-190]
- _ = x[ASIMD-191]
- _ = x[ASIMDDP-192]
- _ = x[ASIMDHP-193]
- _ = x[ASIMDRDM-194]
- _ = x[ATOMICS-195]
- _ = x[CRC32-196]
- _ = x[DCPOP-197]
- _ = x[EVTSTRM-198]
- _ = x[FCMA-199]
- _ = x[FP-200]
- _ = x[FPHP-201]
- _ = x[GPA-202]
- _ = x[JSCVT-203]
- _ = x[LRCPC-204]
- _ = x[PMULL-205]
- _ = x[SHA1-206]
- _ = x[SHA2-207]
- _ = x[SHA3-208]
- _ = x[SHA512-209]
- _ = x[SM3-210]
- _ = x[SM4-211]
- _ = x[SVE-212]
- _ = x[lastID-213]
+ _ = x[IBPB_BRTYPE-74]
+ _ = x[IBRS-75]
+ _ = x[IBRS_PREFERRED-76]
+ _ = x[IBRS_PROVIDES_SMP-77]
+ _ = x[IBS-78]
+ _ = x[IBSBRNTRGT-79]
+ _ = x[IBSFETCHSAM-80]
+ _ = x[IBSFFV-81]
+ _ = x[IBSOPCNT-82]
+ _ = x[IBSOPCNTEXT-83]
+ _ = x[IBSOPSAM-84]
+ _ = x[IBSRDWROPCNT-85]
+ _ = x[IBSRIPINVALIDCHK-86]
+ _ = x[IBS_FETCH_CTLX-87]
+ _ = x[IBS_OPDATA4-88]
+ _ = x[IBS_OPFUSE-89]
+ _ = x[IBS_PREVENTHOST-90]
+ _ = x[IBS_ZEN4-91]
+ _ = x[IDPRED_CTRL-92]
+ _ = x[INT_WBINVD-93]
+ _ = x[INVLPGB-94]
+ _ = x[KEYLOCKER-95]
+ _ = x[KEYLOCKERW-96]
+ _ = x[LAHF-97]
+ _ = x[LAM-98]
+ _ = x[LBRVIRT-99]
+ _ = x[LZCNT-100]
+ _ = x[MCAOVERFLOW-101]
+ _ = x[MCDT_NO-102]
+ _ = x[MCOMMIT-103]
+ _ = x[MD_CLEAR-104]
+ _ = x[MMX-105]
+ _ = x[MMXEXT-106]
+ _ = x[MOVBE-107]
+ _ = x[MOVDIR64B-108]
+ _ = x[MOVDIRI-109]
+ _ = x[MOVSB_ZL-110]
+ _ = x[MOVU-111]
+ _ = x[MPX-112]
+ _ = x[MSRIRC-113]
+ _ = x[MSRLIST-114]
+ _ = x[MSR_PAGEFLUSH-115]
+ _ = x[NRIPS-116]
+ _ = x[NX-117]
+ _ = x[OSXSAVE-118]
+ _ = x[PCONFIG-119]
+ _ = x[POPCNT-120]
+ _ = x[PPIN-121]
+ _ = x[PREFETCHI-122]
+ _ = x[PSFD-123]
+ _ = x[RDPRU-124]
+ _ = x[RDRAND-125]
+ _ = x[RDSEED-126]
+ _ = x[RDTSCP-127]
+ _ = x[RRSBA_CTRL-128]
+ _ = x[RTM-129]
+ _ = x[RTM_ALWAYS_ABORT-130]
+ _ = x[SBPB-131]
+ _ = x[SERIALIZE-132]
+ _ = x[SEV-133]
+ _ = x[SEV_64BIT-134]
+ _ = x[SEV_ALTERNATIVE-135]
+ _ = x[SEV_DEBUGSWAP-136]
+ _ = x[SEV_ES-137]
+ _ = x[SEV_RESTRICTED-138]
+ _ = x[SEV_SNP-139]
+ _ = x[SGX-140]
+ _ = x[SGXLC-141]
+ _ = x[SHA-142]
+ _ = x[SME-143]
+ _ = x[SME_COHERENT-144]
+ _ = x[SPEC_CTRL_SSBD-145]
+ _ = x[SRBDS_CTRL-146]
+ _ = x[SRSO_MSR_FIX-147]
+ _ = x[SRSO_NO-148]
+ _ = x[SRSO_USER_KERNEL_NO-149]
+ _ = x[SSE-150]
+ _ = x[SSE2-151]
+ _ = x[SSE3-152]
+ _ = x[SSE4-153]
+ _ = x[SSE42-154]
+ _ = x[SSE4A-155]
+ _ = x[SSSE3-156]
+ _ = x[STIBP-157]
+ _ = x[STIBP_ALWAYSON-158]
+ _ = x[STOSB_SHORT-159]
+ _ = x[SUCCOR-160]
+ _ = x[SVM-161]
+ _ = x[SVMDA-162]
+ _ = x[SVMFBASID-163]
+ _ = x[SVML-164]
+ _ = x[SVMNP-165]
+ _ = x[SVMPF-166]
+ _ = x[SVMPFT-167]
+ _ = x[SYSCALL-168]
+ _ = x[SYSEE-169]
+ _ = x[TBM-170]
+ _ = x[TDX_GUEST-171]
+ _ = x[TLB_FLUSH_NESTED-172]
+ _ = x[TME-173]
+ _ = x[TOPEXT-174]
+ _ = x[TSCRATEMSR-175]
+ _ = x[TSXLDTRK-176]
+ _ = x[VAES-177]
+ _ = x[VMCBCLEAN-178]
+ _ = x[VMPL-179]
+ _ = x[VMSA_REGPROT-180]
+ _ = x[VMX-181]
+ _ = x[VPCLMULQDQ-182]
+ _ = x[VTE-183]
+ _ = x[WAITPKG-184]
+ _ = x[WBNOINVD-185]
+ _ = x[WRMSRNS-186]
+ _ = x[X87-187]
+ _ = x[XGETBV1-188]
+ _ = x[XOP-189]
+ _ = x[XSAVE-190]
+ _ = x[XSAVEC-191]
+ _ = x[XSAVEOPT-192]
+ _ = x[XSAVES-193]
+ _ = x[AESARM-194]
+ _ = x[ARMCPUID-195]
+ _ = x[ASIMD-196]
+ _ = x[ASIMDDP-197]
+ _ = x[ASIMDHP-198]
+ _ = x[ASIMDRDM-199]
+ _ = x[ATOMICS-200]
+ _ = x[CRC32-201]
+ _ = x[DCPOP-202]
+ _ = x[EVTSTRM-203]
+ _ = x[FCMA-204]
+ _ = x[FP-205]
+ _ = x[FPHP-206]
+ _ = x[GPA-207]
+ _ = x[JSCVT-208]
+ _ = x[LRCPC-209]
+ _ = x[PMULL-210]
+ _ = x[SHA1-211]
+ _ = x[SHA2-212]
+ _ = x[SHA3-213]
+ _ = x[SHA512-214]
+ _ = x[SM3-215]
+ _ = x[SM4-216]
+ _ = x[SVE-217]
+ _ = x[lastID-218]
_ = x[firstID-0]
}
-const _FeatureID_name = "firstIDADXAESNIAMD3DNOWAMD3DNOWEXTAMXBF16AMXFP16AMXINT8AMXTILEAPX_FAVXAVX10AVX10_128AVX10_256AVX10_512AVX2AVX512BF16AVX512BITALGAVX512BWAVX512CDAVX512DQAVX512ERAVX512FAVX512FP16AVX512IFMAAVX512PFAVX512VBMIAVX512VBMI2AVX512VLAVX512VNNIAVX512VP2INTERSECTAVX512VPOPCNTDQAVXIFMAAVXNECONVERTAVXSLOWAVXVNNIAVXVNNIINT8BHI_CTRLBMI1BMI2CETIBTCETSSCLDEMOTECLMULCLZEROCMOVCMPCCXADDCMPSB_SCADBS_SHORTCMPXCHG8CPBOOSTCPPCCX16EFER_LMSLE_UNSENQCMDERMSF16CFLUSH_L1DFMA3FMA4FP128FP256FSRMFXSRFXSROPTGFNIHLEHRESETHTTHWAHYBRID_CPUHYPERVISORIA32_ARCH_CAPIA32_CORE_CAPIBPBIBRSIBRS_PREFERREDIBRS_PROVIDES_SMPIBSIBSBRNTRGTIBSFETCHSAMIBSFFVIBSOPCNTIBSOPCNTEXTIBSOPSAMIBSRDWROPCNTIBSRIPINVALIDCHKIBS_FETCH_CTLXIBS_OPDATA4IBS_OPFUSEIBS_PREVENTHOSTIBS_ZEN4IDPRED_CTRLINT_WBINVDINVLPGBKEYLOCKERKEYLOCKERWLAHFLAMLBRVIRTLZCNTMCAOVERFLOWMCDT_NOMCOMMITMD_CLEARMMXMMXEXTMOVBEMOVDIR64BMOVDIRIMOVSB_ZLMOVUMPXMSRIRCMSRLISTMSR_PAGEFLUSHNRIPSNXOSXSAVEPCONFIGPOPCNTPPINPREFETCHIPSFDRDPRURDRANDRDSEEDRDTSCPRRSBA_CTRLRTMRTM_ALWAYS_ABORTSERIALIZESEVSEV_64BITSEV_ALTERNATIVESEV_DEBUGSWAPSEV_ESSEV_RESTRICTEDSEV_SNPSGXSGXLCSHASMESME_COHERENTSPEC_CTRL_SSBDSRBDS_CTRLSSESSE2SSE3SSE4SSE42SSE4ASSSE3STIBPSTIBP_ALWAYSONSTOSB_SHORTSUCCORSVMSVMDASVMFBASIDSVMLSVMNPSVMPFSVMPFTSYSCALLSYSEETBMTDX_GUESTTLB_FLUSH_NESTEDTMETOPEXTTSCRATEMSRTSXLDTRKVAESVMCBCLEANVMPLVMSA_REGPROTVMXVPCLMULQDQVTEWAITPKGWBNOINVDWRMSRNSX87XGETBV1XOPXSAVEXSAVECXSAVEOPTXSAVESAESARMARMCPUIDASIMDASIMDDPASIMDHPASIMDRDMATOMICSCRC32DCPOPEVTSTRMFCMAFPFPHPGPAJSCVTLRCPCPMULLSHA1SHA2SHA3SHA512SM3SM4SVElastID"
+const _FeatureID_name = "firstIDADXAESNIAMD3DNOWAMD3DNOWEXTAMXBF16AMXFP16AMXINT8AMXTILEAPX_FAVXAVX10AVX10_128AVX10_256AVX10_512AVX2AVX512BF16AVX512BITALGAVX512BWAVX512CDAVX512DQAVX512ERAVX512FAVX512FP16AVX512IFMAAVX512PFAVX512VBMIAVX512VBMI2AVX512VLAVX512VNNIAVX512VP2INTERSECTAVX512VPOPCNTDQAVXIFMAAVXNECONVERTAVXSLOWAVXVNNIAVXVNNIINT8BHI_CTRLBMI1BMI2CETIBTCETSSCLDEMOTECLMULCLZEROCMOVCMPCCXADDCMPSB_SCADBS_SHORTCMPXCHG8CPBOOSTCPPCCX16EFER_LMSLE_UNSENQCMDERMSF16CFLUSH_L1DFMA3FMA4FP128FP256FSRMFXSRFXSROPTGFNIHLEHRESETHTTHWAHYBRID_CPUHYPERVISORIA32_ARCH_CAPIA32_CORE_CAPIBPBIBPB_BRTYPEIBRSIBRS_PREFERREDIBRS_PROVIDES_SMPIBSIBSBRNTRGTIBSFETCHSAMIBSFFVIBSOPCNTIBSOPCNTEXTIBSOPSAMIBSRDWROPCNTIBSRIPINVALIDCHKIBS_FETCH_CTLXIBS_OPDATA4IBS_OPFUSEIBS_PREVENTHOSTIBS_ZEN4IDPRED_CTRLINT_WBINVDINVLPGBKEYLOCKERKEYLOCKERWLAHFLAMLBRVIRTLZCNTMCAOVERFLOWMCDT_NOMCOMMITMD_CLEARMMXMMXEXTMOVBEMOVDIR64BMOVDIRIMOVSB_ZLMOVUMPXMSRIRCMSRLISTMSR_PAGEFLUSHNRIPSNXOSXSAVEPCONFIGPOPCNTPPINPREFETCHIPSFDRDPRURDRANDRDSEEDRDTSCPRRSBA_CTRLRTMRTM_ALWAYS_ABORTSBPBSERIALIZESEVSEV_64BITSEV_ALTERNATIVESEV_DEBUGSWAPSEV_ESSEV_RESTRICTEDSEV_SNPSGXSGXLCSHASMESME_COHERENTSPEC_CTRL_SSBDSRBDS_CTRLSRSO_MSR_FIXSRSO_NOSRSO_USER_KERNEL_NOSSESSE2SSE3SSE4SSE42SSE4ASSSE3STIBPSTIBP_ALWAYSONSTOSB_SHORTSUCCORSVMSVMDASVMFBASIDSVMLSVMNPSVMPFSVMPFTSYSCALLSYSEETBMTDX_GUESTTLB_FLUSH_NESTEDTMETOPEXTTSCRATEMSRTSXLDTRKVAESVMCBCLEANVMPLVMSA_REGPROTVMXVPCLMULQDQVTEWAITPKGWBNOINVDWRMSRNSX87XGETBV1XOPXSAVEXSAVECXSAVEOPTXSAVESAESARMARMCPUIDASIMDASIMDDPASIMDHPASIMDRDMATOMICSCRC32DCPOPEVTSTRMFCMAFPFPHPGPAJSCVTLRCPCPMULLSHA1SHA2SHA3SHA512SM3SM4SVElastID"
-var _FeatureID_index = [...]uint16{0, 7, 10, 15, 23, 34, 41, 48, 55, 62, 67, 70, 75, 84, 93, 102, 106, 116, 128, 136, 144, 152, 160, 167, 177, 187, 195, 205, 216, 224, 234, 252, 267, 274, 286, 293, 300, 311, 319, 323, 327, 333, 338, 346, 351, 357, 361, 370, 388, 396, 403, 407, 411, 425, 431, 435, 439, 448, 452, 456, 461, 466, 470, 474, 481, 485, 488, 494, 497, 500, 510, 520, 533, 546, 550, 554, 568, 585, 588, 598, 609, 615, 623, 634, 642, 654, 670, 684, 695, 705, 720, 728, 739, 749, 756, 765, 775, 779, 782, 789, 794, 805, 812, 819, 827, 830, 836, 841, 850, 857, 865, 869, 872, 878, 885, 898, 903, 905, 912, 919, 925, 929, 938, 942, 947, 953, 959, 965, 975, 978, 994, 1003, 1006, 1015, 1030, 1043, 1049, 1063, 1070, 1073, 1078, 1081, 1084, 1096, 1110, 1120, 1123, 1127, 1131, 1135, 1140, 1145, 1150, 1155, 1169, 1180, 1186, 1189, 1194, 1203, 1207, 1212, 1217, 1223, 1230, 1235, 1238, 1247, 1263, 1266, 1272, 1282, 1290, 1294, 1303, 1307, 1319, 1322, 1332, 1335, 1342, 1350, 1357, 1360, 1367, 1370, 1375, 1381, 1389, 1395, 1401, 1409, 1414, 1421, 1428, 1436, 1443, 1448, 1453, 1460, 1464, 1466, 1470, 1473, 1478, 1483, 1488, 1492, 1496, 1500, 1506, 1509, 1512, 1515, 1521}
+var _FeatureID_index = [...]uint16{0, 7, 10, 15, 23, 34, 41, 48, 55, 62, 67, 70, 75, 84, 93, 102, 106, 116, 128, 136, 144, 152, 160, 167, 177, 187, 195, 205, 216, 224, 234, 252, 267, 274, 286, 293, 300, 311, 319, 323, 327, 333, 338, 346, 351, 357, 361, 370, 388, 396, 403, 407, 411, 425, 431, 435, 439, 448, 452, 456, 461, 466, 470, 474, 481, 485, 488, 494, 497, 500, 510, 520, 533, 546, 550, 561, 565, 579, 596, 599, 609, 620, 626, 634, 645, 653, 665, 681, 695, 706, 716, 731, 739, 750, 760, 767, 776, 786, 790, 793, 800, 805, 816, 823, 830, 838, 841, 847, 852, 861, 868, 876, 880, 883, 889, 896, 909, 914, 916, 923, 930, 936, 940, 949, 953, 958, 964, 970, 976, 986, 989, 1005, 1009, 1018, 1021, 1030, 1045, 1058, 1064, 1078, 1085, 1088, 1093, 1096, 1099, 1111, 1125, 1135, 1147, 1154, 1173, 1176, 1180, 1184, 1188, 1193, 1198, 1203, 1208, 1222, 1233, 1239, 1242, 1247, 1256, 1260, 1265, 1270, 1276, 1283, 1288, 1291, 1300, 1316, 1319, 1325, 1335, 1343, 1347, 1356, 1360, 1372, 1375, 1385, 1388, 1395, 1403, 1410, 1413, 1420, 1423, 1428, 1434, 1442, 1448, 1454, 1462, 1467, 1474, 1481, 1489, 1496, 1501, 1506, 1513, 1517, 1519, 1523, 1526, 1531, 1536, 1541, 1545, 1549, 1553, 1559, 1562, 1565, 1568, 1574}
func (i FeatureID) String() string {
if i < 0 || i >= FeatureID(len(_FeatureID_index)-1) {