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 c54564
* 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 c54564
Packit Service c54564
@node X86
Packit Service c54564
@appendixsec X86-specific Facilities
Packit Service c54564
Packit Service c54564
Facilities specific to X86 that are not specific to a particular
Packit Service c54564
operating system are declared in @file{sys/platform/x86.h}.
Packit Service c54564
Packit Service c54564
@deftypefun {const struct cpu_features *} __x86_get_cpu_features (unsigned int @var{max})
Packit Service c54564
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
Packit Service c54564
Return a pointer to x86 CPU feature structure used by query macros for x86
Packit Service c54564
CPU features.  If @var{max} exceeds @code{COMMON_CPUID_INDEX_MAX} which
Packit Service c54564
is the limit of the CPUID leaves supported by @Theglibc{}, the function
Packit Service c54564
returns @code{NULL}, indicating that the queried processor feature is
Packit Service c54564
unsupported by @Theglibc{} run-time.
Packit Service c54564
@end deftypefun
Packit Service c54564
Packit Service c54564
@deftypefn Macro int HAS_CPU_FEATURE (@var{name})
Packit Service c54564
This macro returns a nonzero value (true) if the processor has the feature
Packit Service c54564
@var{name}.
Packit Service c54564
@end deftypefn
Packit Service c54564
Packit Service c54564
@deftypefn Macro int CPU_FEATURE_USABLE (@var{name})
Packit Service c54564
This macro returns a nonzero value (true) if the processor has the feature
Packit Service c54564
@var{name} and the feature is supported by the operating system.
Packit Service c54564
@end deftypefn
Packit Service c54564
Packit Service c54564
The supported processor features are:
Packit Service c54564
Packit Service c54564
@itemize @bullet
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{ACPI} -- Thermal Monitor and Software Controlled Clock Facilities.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{ADX} -- ADX instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{APIC} -- APIC On-Chip.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AES} -- The AES instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service 0fce6c
@code{AESKLE} -- AES Key Locker instructions are enabled by OS.
Packit Service 0fce6c
Packit Service 0fce6c
@item
Packit Service c54564
@code{AMX_BF16} -- Tile computational operations on bfloat16 numbers.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AMX_INT8} -- Tile computational operations on 8-bit numbers.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AMX_TILE} -- Tile architecture.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{ARCH_CAPABILITIES} -- IA32_ARCH_CAPABILITIES MSR.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AVX} -- The AVX instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AVX2} -- The AVX2 instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AVX512_4FMAPS} -- The AVX512_4FMAPS instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AVX512_4VNNIW} -- The AVX512_4VNNIW instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AVX512_BF16} -- The AVX512_BF16 instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AVX512_BITALG} -- The AVX512_BITALG instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AVX512_IFMA} -- The AVX512_IFMA instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AVX512_VBMI} -- The AVX512_VBMI instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AVX512_VBMI2} -- The AVX512_VBMI2 instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AVX512_VNNI} -- The AVX512_VNNI instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AVX512_VP2INTERSECT} -- The AVX512_VP2INTERSECT instruction
Packit Service c54564
extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AVX512_VPOPCNTDQ} -- The AVX512_VPOPCNTDQ instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AVX512BW} -- The AVX512BW instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AVX512CD} -- The AVX512CD instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AVX512ER} -- The AVX512ER instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AVX512DQ} -- The AVX512DQ instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AVX512F} -- The AVX512F instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AVX512PF} -- The AVX512PF instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{AVX512VL} -- The AVX512VL instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{BMI1} -- BMI1 instructions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{BMI2} -- BMI2 instructions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{CLDEMOTE} -- CLDEMOTE instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{CLFLUSHOPT} -- CLFLUSHOPT instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{CLFSH} -- CLFLUSH instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{CLWB} -- CLWB instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{CMOV} -- Conditional Move instructions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{CMPXCHG16B} -- CMPXCHG16B instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{CNXT_ID} -- L1 Context ID.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{CORE_CAPABILITIES} -- IA32_CORE_CAPABILITIES MSR.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{CX8} -- CMPXCHG8B instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{DCA} -- Data prefetch from a memory mapped device.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{DE} -- Debugging Extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{DEPR_FPU_CS_DS} -- Deprecates FPU CS and FPU DS values.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{DS} -- Debug Store.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{DS_CPL} -- CPL Qualified Debug Store.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{DTES64} -- 64-bit DS Area.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{EIST} -- Enhanced Intel SpeedStep technology.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{ENQCMD} -- Enqueue Stores instructions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{ERMS} -- Enhanced REP MOVSB/STOSB.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{F16C} -- 16-bit floating-point conversion instructions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{FMA} -- FMA extensions using YMM state.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{FMA4} -- FMA4 instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{FPU} -- X87 Floating Point Unit On-Chip.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{FSGSBASE} -- RDFSBASE/RDGSBASE/WRFSBASE/WRGSBASE instructions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{FSRM} -- Fast Short REP MOV.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{FXSR} -- FXSAVE and FXRSTOR instructions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{GFNI} -- GFNI instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{HLE} -- HLE instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{HTT} -- Max APIC IDs reserved field is Valid.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{HYBRID} -- Hybrid processor.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{IBRS_IBPB} -- Indirect branch restricted speculation (IBRS) and
Packit Service c54564
the indirect branch predictor barrier (IBPB).
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{IBT} -- Intel Indirect Branch Tracking instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{INVARIANT_TSC} -- Invariant TSC.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{INVPCID} -- INVPCID instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service 0fce6c
@code{KL} -- AES Key Locker instructions.
Packit Service 0fce6c
Packit Service 0fce6c
@item
Packit Service c54564
@code{L1D_FLUSH} -- IA32_FLUSH_CMD MSR.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{LAHF64_SAHF64} -- LAHF/SAHF available in 64-bit mode.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{LM} -- Long mode.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{LWP} -- Lightweight profiling.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{LZCNT} -- LZCNT instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{MCA} -- Machine Check Architecture.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{MCE} -- Machine Check Exception.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{MD_CLEAR} -- MD_CLEAR.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{MMX} -- Intel MMX Technology.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{MONITOR} --  MONITOR/MWAIT instructions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{MOVBE} -- MOVBE instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{MOVDIRI} -- MOVDIRI instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{MOVDIR64B} -- MOVDIR64B instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{MPX} -- Intel Memory Protection Extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{MSR} -- Model Specific Registers RDMSR and WRMSR instructions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{MTRR} -- Memory Type Range Registers.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{NX} -- No-execute page protection.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{OSPKE} -- OS has set CR4.PKE to enable protection keys.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{OSXSAVE} -- The OS has set CR4.OSXSAVE[bit 18] to enable
Packit Service c54564
XSETBV/XGETBV instructions to access XCR0 and to support processor
Packit Service c54564
extended state management using XSAVE/XRSTOR.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{PAE} -- Physical Address Extension.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{PAGE1GB} -- 1-GByte page.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{PAT} -- Page Attribute Table.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{PBE} -- Pending Break Enable.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{PCID} -- Process-context identifiers.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{PCLMULQDQ} -- PCLMULQDQ instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{PCONFIG} -- PCONFIG instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{PDCM} -- Perfmon and Debug Capability.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{PGE} -- Page Global Bit.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{PKS} -- Protection keys for supervisor-mode pages.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{PKU} -- Protection keys for user-mode pages.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{POPCNT} -- POPCNT instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{PREFETCHW} -- PREFETCHW instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{PREFETCHWT1} -- PREFETCHWT1 instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{PSE} -- Page Size Extension.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{PSE_36} -- 36-Bit Page Size Extension.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{PSN} -- Processor Serial Number.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{RDPID} -- RDPID instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{RDRAND} -- RDRAND instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{RDSEED} -- RDSEED instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{RDT_A} -- Intel Resource Director Technology (Intel RDT) Allocation
Packit Service c54564
capability.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{RDT_M} -- Intel Resource Director Technology (Intel RDT) Monitoring
Packit Service c54564
capability.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{RDTSCP} -- RDTSCP instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{RTM} -- RTM instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{SDBG} -- IA32_DEBUG_INTERFACE MSR for silicon debug.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{SEP} -- SYSENTER and SYSEXIT instructions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{SERIALIZE} -- SERIALIZE instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{SGX} -- Intel Software Guard Extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{SGX_LC} -- SGX Launch Configuration.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{SHA} -- SHA instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{SHSTK} -- Intel Shadow Stack instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{SMAP} -- Supervisor-Mode Access Prevention.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{SMEP} -- Supervisor-Mode Execution Prevention.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{SMX} -- Safer Mode Extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{SS} -- Self Snoop.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{SSBD} -- Speculative Store Bypass Disable (SSBD).
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{SSE} -- Streaming SIMD Extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{SSE2} -- Streaming SIMD Extensions 2.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{SSE3} -- Streaming SIMD Extensions 3.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{SSE4_1} -- Streaming SIMD Extensions 4.1.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{SSE4_2} -- Streaming SIMD Extensions 4.2.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{SSE4A} -- SSE4A instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{SSSE3} -- Supplemental Streaming SIMD Extensions 3.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{STIBP} -- Single thread indirect branch predictors (STIBP).
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{SVM} -- Secure Virtual Machine.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{SYSCALL_SYSRET} -- SYSCALL/SYSRET instructions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{TBM} -- Trailing bit manipulation instructions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{TM} -- Thermal Monitor.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{TM2} -- Thermal Monitor 2.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{TRACE} -- Intel Processor Trace.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{TSC} -- Time Stamp Counter.  RDTSC instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{TSC_ADJUST} -- IA32_TSC_ADJUST MSR.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{TSC_DEADLINE} -- Local APIC timer supports one-shot operation
Packit Service c54564
using a TSC deadline value.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{TSXLDTRK} -- TSXLDTRK instructions.
Packit Service c54564
Packit Service c54564
@item
Packit Service dd773f
@code{UINTR} -- User interrupts.
Packit Service dd773f
Packit Service dd773f
@item
Packit Service c54564
@code{UMIP} -- User-mode instruction prevention.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{VAES} -- VAES instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{VME} -- Virtual 8086 Mode Enhancements.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{VMX} -- Virtual Machine Extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{VPCLMULQDQ} -- VPCLMULQDQ instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{WAITPKG} -- WAITPKG instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{WBNOINVD} -- WBINVD/WBNOINVD instructions.
Packit Service c54564
Packit Service c54564
@item
Packit Service 0fce6c
@code{WIDE_KL} -- AES wide Key Locker instructions.
Packit Service 0fce6c
Packit Service 0fce6c
@item
Packit Service c54564
@code{X2APIC} -- x2APIC.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{XFD} -- Extended Feature Disable (XFD).
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{XGETBV_ECX_1} -- XGETBV with ECX = 1.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{XOP} -- XOP instruction extensions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{XSAVE} -- The XSAVE/XRSTOR processor extended states feature, the
Packit Service c54564
XSETBV/XGETBV instructions, and XCR0.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{XSAVEC} -- XSAVEC instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{XSAVEOPT} -- XSAVEOPT instruction.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{XSAVES} -- XSAVES/XRSTORS instructions.
Packit Service c54564
Packit Service c54564
@item
Packit Service c54564
@code{XTPRUPDCTRL} -- xTPR Update Control.
Packit Service c54564
Packit Service c54564
@end itemize
Packit Service c54564
Packit Service c54564
You could query if a processor supports @code{AVX} with:
Packit Service c54564
Packit Service c54564
@smallexample
Packit Service c54564
#include <sys/platform/x86.h>
Packit Service c54564
Packit Service c54564
int
Packit Service c54564
support_avx (void)
Packit Service c54564
@{
Packit Service c54564
  return HAS_CPU_FEATURE (AVX);
Packit Service c54564
@}
Packit Service c54564
@end smallexample
Packit Service c54564
Packit Service c54564
and if @code{AVX} is usable with:
Packit Service c54564
Packit Service c54564
@smallexample
Packit Service c54564
#include <sys/platform/x86.h>
Packit Service c54564
Packit Service c54564
int
Packit Service c54564
usable_avx (void)
Packit Service c54564
@{
Packit Service c54564
  return CPU_FEATURE_USABLE (AVX);
Packit Service c54564
@}
Packit Service c54564
@end smallexample