Blame manual/platform.texi

Packit 6c4009
@node Platform, Contributors, Maintenance, Top
Packit 6c4009
@c %MENU% Describe all platform-specific facilities provided
Packit 6c4009
@appendix Platform-specific facilities
Packit 6c4009
Packit 6c4009
@Theglibc{} can provide machine-specific functionality.
Packit 6c4009
Packit 6c4009
@menu
Packit 6c4009
* PowerPC::           Facilities Specific to the PowerPC Architecture
Packit 6c4009
* RISC-V::            Facilities Specific to the RISC-V Architecture
Packit Service a64910
* X86::               Facilities Specific to the X86 Architecture
Packit 6c4009
@end menu
Packit 6c4009
Packit 6c4009
@node PowerPC
Packit 6c4009
@appendixsec PowerPC-specific Facilities
Packit 6c4009
Packit 6c4009
Facilities specific to PowerPC that are not specific to a particular
Packit 6c4009
operating system are declared in @file{sys/platform/ppc.h}.
Packit 6c4009
Packit 6c4009
@deftypefun {uint64_t} __ppc_get_timebase (void)
Packit 6c4009
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
Packit 6c4009
Read the current value of the Time Base Register.
Packit 6c4009
Packit 6c4009
The @dfn{Time Base Register} is a 64-bit register that stores a monotonically
Packit 6c4009
incremented value updated at a system-dependent frequency that may be
Packit 6c4009
different from the processor frequency.  More information is available in
Packit 6c4009
@cite{Power ISA 2.06b - Book II - Section 5.2}.
Packit 6c4009
Packit 6c4009
@code{__ppc_get_timebase} uses the processor's time base facility directly
Packit 6c4009
without requiring assistance from the operating system, so it is very
Packit 6c4009
efficient.
Packit 6c4009
@end deftypefun
Packit 6c4009
Packit 6c4009
@deftypefun {uint64_t} __ppc_get_timebase_freq (void)
Packit 6c4009
@safety{@prelim{}@mtunsafe{@mtuinit{}}@asunsafe{@asucorrupt{:init}}@acunsafe{@acucorrupt{:init}}}
Packit 6c4009
@c __ppc_get_timebase_freq=__get_timebase_freq @mtuinit @acsfd
Packit 6c4009
@c  __get_clockfreq @mtuinit @asucorrupt:init @acucorrupt:init @acsfd
Packit 6c4009
@c    the initialization of the static timebase_freq is not exactly
Packit 6c4009
@c    safe, because hp_timing_t cannot be atomically set up.
Packit 6c4009
@c   syscall:get_tbfreq ok
Packit 6c4009
@c   open dup @acsfd
Packit 6c4009
@c   read dup ok
Packit 6c4009
@c   memcpy dup ok
Packit 6c4009
@c   memmem dup ok
Packit 6c4009
@c   close dup @acsfd
Packit 6c4009
Read the current frequency at which the Time Base Register is updated.
Packit 6c4009
Packit 6c4009
This frequency is not related to the processor clock or the bus clock.
Packit 6c4009
It is also possible that this frequency is not constant.  More information is
Packit 6c4009
available in @cite{Power ISA 2.06b - Book II - Section 5.2}.
Packit 6c4009
@end deftypefun
Packit 6c4009
Packit 6c4009
The following functions provide hints about the usage of resources that are
Packit 6c4009
shared with other processors.  They can be used, for example, if a program
Packit 6c4009
waiting on a lock intends to divert the shared resources to be used by other
Packit 6c4009
processors.  More information is available in @cite{Power ISA 2.06b - Book II -
Packit 6c4009
Section 3.2}.
Packit 6c4009
Packit 6c4009
@deftypefun {void} __ppc_yield (void)
Packit 6c4009
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
Packit 6c4009
Provide a hint that performance will probably be improved if shared resources
Packit 6c4009
dedicated to the executing processor are released for use by other processors.
Packit 6c4009
@end deftypefun
Packit 6c4009
Packit 6c4009
@deftypefun {void} __ppc_mdoio (void)
Packit 6c4009
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
Packit 6c4009
Provide a hint that performance will probably be improved if shared resources
Packit 6c4009
dedicated to the executing processor are released until all outstanding storage
Packit 6c4009
accesses to caching-inhibited storage have been completed.
Packit 6c4009
@end deftypefun
Packit 6c4009
Packit 6c4009
@deftypefun {void} __ppc_mdoom (void)
Packit 6c4009
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
Packit 6c4009
Provide a hint that performance will probably be improved if shared resources
Packit 6c4009
dedicated to the executing processor are released until all outstanding storage
Packit 6c4009
accesses to cacheable storage for which the data is not in the cache have been
Packit 6c4009
completed.
Packit 6c4009
@end deftypefun
Packit 6c4009
Packit 6c4009
@deftypefun {void} __ppc_set_ppr_med (void)
Packit 6c4009
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
Packit 6c4009
Set the Program Priority Register to medium value (default).
Packit 6c4009
Packit 6c4009
The @dfn{Program Priority Register} (PPR) is a 64-bit register that controls
Packit 6c4009
the program's priority.  By adjusting the PPR value the programmer may
Packit 6c4009
improve system throughput by causing the system resources to be used
Packit 6c4009
more efficiently, especially in contention situations.
Packit 6c4009
The three unprivileged states available are covered by the functions
Packit 6c4009
@code{__ppc_set_ppr_med} (medium -- default), @code{__ppc_set_ppc_low} (low)
Packit 6c4009
and @code{__ppc_set_ppc_med_low} (medium low).  More information
Packit 6c4009
available in @cite{Power ISA 2.06b - Book II - Section 3.1}.
Packit 6c4009
@end deftypefun
Packit 6c4009
Packit 6c4009
@deftypefun {void} __ppc_set_ppr_low (void)
Packit 6c4009
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
Packit 6c4009
Set the Program Priority Register to low value.
Packit 6c4009
@end deftypefun
Packit 6c4009
Packit 6c4009
@deftypefun {void} __ppc_set_ppr_med_low (void)
Packit 6c4009
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
Packit 6c4009
Set the Program Priority Register to medium low value.
Packit 6c4009
@end deftypefun
Packit 6c4009
Packit 6c4009
Power ISA 2.07 extends the priorities that can be set to the Program Priority
Packit 6c4009
Register (PPR).  The following functions implement the new priority levels:
Packit 6c4009
very low and medium high.
Packit 6c4009
Packit 6c4009
@deftypefun {void} __ppc_set_ppr_very_low (void)
Packit 6c4009
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
Packit 6c4009
Set the Program Priority Register to very low value.
Packit 6c4009
@end deftypefun
Packit 6c4009
Packit 6c4009
@deftypefun {void} __ppc_set_ppr_med_high (void)
Packit 6c4009
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
Packit 6c4009
Set the Program Priority Register to medium high value.  The medium high
Packit 6c4009
priority is privileged and may only be set during certain time intervals by
Packit 6c4009
problem-state programs.  If the program priority is medium high when the time
Packit 6c4009
interval expires or if an attempt is made to set the priority to medium high
Packit 6c4009
when it is not allowed, the priority is set to medium.
Packit 6c4009
@end deftypefun
Packit 6c4009
Packit 6c4009
@node RISC-V
Packit 6c4009
@appendixsec RISC-V-specific Facilities
Packit 6c4009
Packit 6c4009
Cache management facilities specific to RISC-V systems that implement the Linux
Packit 6c4009
ABI are declared in @file{sys/cachectl.h}.
Packit 6c4009
Packit 6c4009
@deftypefun {void} __riscv_flush_icache (void *@var{start}, void *@var{end}, unsigned long int @var{flags})
Packit 6c4009
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
Packit 6c4009
Enforce ordering between stores and instruction cache fetches.  The range of
Packit 6c4009
addresses over which ordering is enforced is specified by @var{start} and
Packit 6c4009
@var{end}.  The @var{flags} argument controls the extent of this ordering, with
Packit 6c4009
the default behavior (a @var{flags} value of 0) being to enforce the fence on
Packit 6c4009
all threads in the current process.  Setting the
Packit 6c4009
@code{SYS_RISCV_FLUSH_ICACHE_LOCAL} bit allows users to indicate that enforcing
Packit 6c4009
ordering on only the current thread is necessary.  All other flag bits are
Packit 6c4009
reserved.
Packit 6c4009
@end deftypefun
Packit Service a64910
Packit Service a64910
@node X86
Packit Service a64910
@appendixsec X86-specific Facilities
Packit Service a64910
Packit Service a64910
Facilities specific to X86 that are not specific to a particular
Packit Service a64910
operating system are declared in @file{sys/platform/x86.h}.
Packit Service a64910
Packit Service a64910
@deftypefun {const struct cpu_features *} __x86_get_cpu_features (unsigned int @var{max})
Packit Service a64910
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
Packit Service a64910
Return a pointer to x86 CPU feature structure used by query macros for x86
Packit Service a64910
CPU features.  If @var{max} exceeds @code{COMMON_CPUID_INDEX_MAX} which
Packit Service a64910
is the limit of the CPUID leaves supported by @Theglibc{}, the function
Packit Service a64910
returns @code{NULL}, indicating that the queried processor feature is
Packit Service a64910
unsupported by @Theglibc{} run-time.
Packit Service a64910
@end deftypefun
Packit Service a64910
Packit Service a64910
@deftypefn Macro int HAS_CPU_FEATURE (@var{name})
Packit Service a64910
This macro returns a nonzero value (true) if the processor has the feature
Packit Service a64910
@var{name}.
Packit Service a64910
@end deftypefn
Packit Service a64910
Packit Service a64910
@deftypefn Macro int CPU_FEATURE_USABLE (@var{name})
Packit Service a64910
This macro returns a nonzero value (true) if the processor has the feature
Packit Service a64910
@var{name} and the feature is supported by the operating system.
Packit Service a64910
@end deftypefn
Packit Service a64910
Packit Service a64910
The supported processor features are:
Packit Service a64910
Packit Service a64910
@itemize @bullet
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{ACPI} -- Thermal Monitor and Software Controlled Clock Facilities.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{ADX} -- ADX instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{APIC} -- APIC On-Chip.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AES} -- The AES instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AMX_BF16} -- Tile computational operations on bfloat16 numbers.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AMX_INT8} -- Tile computational operations on 8-bit numbers.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AMX_TILE} -- Tile architecture.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{ARCH_CAPABILITIES} -- IA32_ARCH_CAPABILITIES MSR.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AVX} -- The AVX instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AVX2} -- The AVX2 instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AVX512_4FMAPS} -- The AVX512_4FMAPS instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AVX512_4VNNIW} -- The AVX512_4VNNIW instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AVX512_BF16} -- The AVX512_BF16 instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AVX512_BITALG} -- The AVX512_BITALG instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AVX512_IFMA} -- The AVX512_IFMA instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AVX512_VBMI} -- The AVX512_VBMI instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AVX512_VBMI2} -- The AVX512_VBMI2 instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AVX512_VNNI} -- The AVX512_VNNI instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AVX512_VP2INTERSECT} -- The AVX512_VP2INTERSECT instruction
Packit Service a64910
extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AVX512_VPOPCNTDQ} -- The AVX512_VPOPCNTDQ instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AVX512BW} -- The AVX512BW instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AVX512CD} -- The AVX512CD instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AVX512ER} -- The AVX512ER instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AVX512DQ} -- The AVX512DQ instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AVX512F} -- The AVX512F instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AVX512PF} -- The AVX512PF instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{AVX512VL} -- The AVX512VL instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{BMI1} -- BMI1 instructions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{BMI2} -- BMI2 instructions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{CLDEMOTE} -- CLDEMOTE instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{CLFLUSHOPT} -- CLFLUSHOPT instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{CLFSH} -- CLFLUSH instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{CLWB} -- CLWB instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{CMOV} -- Conditional Move instructions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{CMPXCHG16B} -- CMPXCHG16B instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{CNXT_ID} -- L1 Context ID.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{CORE_CAPABILITIES} -- IA32_CORE_CAPABILITIES MSR.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{CX8} -- CMPXCHG8B instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{DCA} -- Data prefetch from a memory mapped device.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{DE} -- Debugging Extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{DEPR_FPU_CS_DS} -- Deprecates FPU CS and FPU DS values.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{DS} -- Debug Store.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{DS_CPL} -- CPL Qualified Debug Store.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{DTES64} -- 64-bit DS Area.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{EIST} -- Enhanced Intel SpeedStep technology.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{ENQCMD} -- Enqueue Stores instructions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{ERMS} -- Enhanced REP MOVSB/STOSB.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{F16C} -- 16-bit floating-point conversion instructions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{FMA} -- FMA extensions using YMM state.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{FMA4} -- FMA4 instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{FPU} -- X87 Floating Point Unit On-Chip.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{FSGSBASE} -- RDFSBASE/RDGSBASE/WRFSBASE/WRGSBASE instructions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{FSRM} -- Fast Short REP MOV.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{FXSR} -- FXSAVE and FXRSTOR instructions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{GFNI} -- GFNI instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{HLE} -- HLE instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{HTT} -- Max APIC IDs reserved field is Valid.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{HYBRID} -- Hybrid processor.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{IBRS_IBPB} -- Indirect branch restricted speculation (IBRS) and
Packit Service a64910
the indirect branch predictor barrier (IBPB).
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{IBT} -- Intel Indirect Branch Tracking instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{INVARIANT_TSC} -- Invariant TSC.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{INVPCID} -- INVPCID instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{L1D_FLUSH} -- IA32_FLUSH_CMD MSR.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{LAHF64_SAHF64} -- LAHF/SAHF available in 64-bit mode.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{LM} -- Long mode.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{LWP} -- Lightweight profiling.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{LZCNT} -- LZCNT instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{MCA} -- Machine Check Architecture.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{MCE} -- Machine Check Exception.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{MD_CLEAR} -- MD_CLEAR.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{MMX} -- Intel MMX Technology.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{MONITOR} --  MONITOR/MWAIT instructions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{MOVBE} -- MOVBE instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{MOVDIRI} -- MOVDIRI instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{MOVDIR64B} -- MOVDIR64B instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{MPX} -- Intel Memory Protection Extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{MSR} -- Model Specific Registers RDMSR and WRMSR instructions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{MTRR} -- Memory Type Range Registers.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{NX} -- No-execute page protection.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{OSPKE} -- OS has set CR4.PKE to enable protection keys.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{OSXSAVE} -- The OS has set CR4.OSXSAVE[bit 18] to enable
Packit Service a64910
XSETBV/XGETBV instructions to access XCR0 and to support processor
Packit Service a64910
extended state management using XSAVE/XRSTOR.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{PAE} -- Physical Address Extension.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{PAGE1GB} -- 1-GByte page.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{PAT} -- Page Attribute Table.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{PBE} -- Pending Break Enable.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{PCID} -- Process-context identifiers.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{PCLMULQDQ} -- PCLMULQDQ instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{PCONFIG} -- PCONFIG instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{PDCM} -- Perfmon and Debug Capability.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{PGE} -- Page Global Bit.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{PKS} -- Protection keys for supervisor-mode pages.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{PKU} -- Protection keys for user-mode pages.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{POPCNT} -- POPCNT instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{PREFETCHW} -- PREFETCHW instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{PREFETCHWT1} -- PREFETCHWT1 instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{PSE} -- Page Size Extension.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{PSE_36} -- 36-Bit Page Size Extension.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{PSN} -- Processor Serial Number.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{RDPID} -- RDPID instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{RDRAND} -- RDRAND instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{RDSEED} -- RDSEED instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{RDT_A} -- Intel Resource Director Technology (Intel RDT) Allocation
Packit Service a64910
capability.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{RDT_M} -- Intel Resource Director Technology (Intel RDT) Monitoring
Packit Service a64910
capability.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{RDTSCP} -- RDTSCP instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{RTM} -- RTM instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{SDBG} -- IA32_DEBUG_INTERFACE MSR for silicon debug.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{SEP} -- SYSENTER and SYSEXIT instructions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{SERIALIZE} -- SERIALIZE instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{SGX} -- Intel Software Guard Extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{SGX_LC} -- SGX Launch Configuration.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{SHA} -- SHA instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{SHSTK} -- Intel Shadow Stack instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{SMAP} -- Supervisor-Mode Access Prevention.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{SMEP} -- Supervisor-Mode Execution Prevention.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{SMX} -- Safer Mode Extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{SS} -- Self Snoop.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{SSBD} -- Speculative Store Bypass Disable (SSBD).
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{SSE} -- Streaming SIMD Extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{SSE2} -- Streaming SIMD Extensions 2.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{SSE3} -- Streaming SIMD Extensions 3.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{SSE4_1} -- Streaming SIMD Extensions 4.1.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{SSE4_2} -- Streaming SIMD Extensions 4.2.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{SSE4A} -- SSE4A instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{SSSE3} -- Supplemental Streaming SIMD Extensions 3.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{STIBP} -- Single thread indirect branch predictors (STIBP).
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{SVM} -- Secure Virtual Machine.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{SYSCALL_SYSRET} -- SYSCALL/SYSRET instructions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{TBM} -- Trailing bit manipulation instructions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{TM} -- Thermal Monitor.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{TM2} -- Thermal Monitor 2.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{TRACE} -- Intel Processor Trace.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{TSC} -- Time Stamp Counter.  RDTSC instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{TSC_ADJUST} -- IA32_TSC_ADJUST MSR.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{TSC_DEADLINE} -- Local APIC timer supports one-shot operation
Packit Service a64910
using a TSC deadline value.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{TSXLDTRK} -- TSXLDTRK instructions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{UMIP} -- User-mode instruction prevention.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{VAES} -- VAES instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{VME} -- Virtual 8086 Mode Enhancements.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{VMX} -- Virtual Machine Extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{VPCLMULQDQ} -- VPCLMULQDQ instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{WAITPKG} -- WAITPKG instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{WBNOINVD} -- WBINVD/WBNOINVD instructions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{X2APIC} -- x2APIC.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{XFD} -- Extended Feature Disable (XFD).
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{XGETBV_ECX_1} -- XGETBV with ECX = 1.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{XOP} -- XOP instruction extensions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{XSAVE} -- The XSAVE/XRSTOR processor extended states feature, the
Packit Service a64910
XSETBV/XGETBV instructions, and XCR0.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{XSAVEC} -- XSAVEC instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{XSAVEOPT} -- XSAVEOPT instruction.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{XSAVES} -- XSAVES/XRSTORS instructions.
Packit Service a64910
Packit Service a64910
@item
Packit Service a64910
@code{XTPRUPDCTRL} -- xTPR Update Control.
Packit Service a64910
Packit Service a64910
@end itemize
Packit Service a64910
Packit Service a64910
You could query if a processor supports @code{AVX} with:
Packit Service a64910
Packit Service a64910
@smallexample
Packit Service a64910
#include <sys/platform/x86.h>
Packit Service a64910
Packit Service a64910
int
Packit Service a64910
support_avx (void)
Packit Service a64910
@{
Packit Service a64910
  return HAS_CPU_FEATURE (AVX);
Packit Service a64910
@}
Packit Service a64910
@end smallexample
Packit Service a64910
Packit Service a64910
and if @code{AVX} is usable with:
Packit Service a64910
Packit Service a64910
@smallexample
Packit Service a64910
#include <sys/platform/x86.h>
Packit Service a64910
Packit Service a64910
int
Packit Service a64910
usable_avx (void)
Packit Service a64910
@{
Packit Service a64910
  return CPU_FEATURE_USABLE (AVX);
Packit Service a64910
@}
Packit Service a64910
@end smallexample