sapphirerapids

Name sapphirerapids
Architecture x86_64
Endianess little

Targets:

Name Explanation LLVM only Enabled
adx Support ADX instructions. ⛔️ ✅
aes Enable AES instructions. ⛔️ ✅
avx Enable AVX instructions. ⛔️ ✅
avx2 Enable AVX2 instructions. ⛔️ ✅
avx512bf16 Support bfloat16 floating point. ⛔️ ✅
avx512bitalg Enable AVX-512 Bit Algorithms. ⛔️ ✅
avx512bw Enable AVX-512 Byte and Word Instructions. ⛔️ ✅
avx512cd Enable AVX-512 Conflict Detection Instructions. ⛔️ ✅
avx512dq Enable AVX-512 Doubleword and Quadword Instructions. ⛔️ ✅
avx512er Enable AVX-512 Exponential and Reciprocal Instructions. ⛔️ ⛔️
avx512f Enable AVX-512 instructions. ⛔️ ✅
avx512gfni Enable Galois Field Arithmetic Instructions. ⛔️ ✅
avx512ifma Enable AVX-512 Integer Fused Multiple-Add. ⛔️ ✅
avx512pf Enable AVX-512 PreFetch Instructions. ⛔️ ⛔️
avx512vaes Promote selected AES instructions to AVX512/AVX registers. ⛔️ ✅
avx512vbmi Enable AVX-512 Vector Byte Manipulation Instructions. ⛔️ ✅
avx512vbmi2 Enable AVX-512 further Vector Byte Manipulation Instructions. ⛔️ ✅
avx512vl Enable AVX-512 Vector Length eXtensions. ⛔️ ✅
avx512vnni Enable AVX-512 Vector Neural Network Instructions. ⛔️ ✅
avx512vp2intersect Enable AVX-512 vp2intersect. ⛔️ ✅
avx512vpclmulqdq Enable vpclmulqdq instructions. ⛔️ ✅
avx512vpopcntdq Enable AVX-512 Population Count Instructions. ⛔️ ✅
bmi1 Support BMI instructions. ⛔️ ✅
bmi2 Support BMI2 instructions. ⛔️ ✅
cmpxchg16b 64-bit with cmpxchg16b (this is true for most x86-64 chips, but not the first AMD chips). ⛔️ ✅
ermsb REP MOVS/STOS are fast. ⛔️ ✅
f16c Support 16-bit floating point conversion instructions. ⛔️ ✅
fma Enable three-operand fused multiple-add. ⛔️ ✅
fxsr Support fxsave/fxrestore instructions. ⛔️ ✅
lzcnt Support LZCNT instruction. ⛔️ ✅
movbe Support MOVBE instruction. ⛔️ ✅
pclmulqdq Enable packed carry-less multiplication instructions. ⛔️ ✅
popcnt Support POPCNT instruction. ⛔️ ✅
rdrand Support RDRAND instruction. ⛔️ ✅
rdseed Support RDSEED instruction. ⛔️ ✅
rtm Support RTM instructions. ⛔️ ⛔️
sha Enable SHA instructions. ⛔️ ✅
sse Enable SSE instructions. ⛔️ ✅
sse2 Enable SSE2 instructions. ⛔️ ✅
sse3 Enable SSE3 instructions. ⛔️ ✅
sse4.1 Enable SSE 4.1 instructions. ⛔️ ✅
sse4.2 Enable SSE 4.2 instructions. ⛔️ ✅
sse4a Support SSE 4a instructions. ⛔️ ⛔️
ssse3 Enable SSSE3 instructions. ⛔️ ✅
tbm Enable TBM instructions. ⛔️ ⛔️
xsave Support xsave instructions. ⛔️ ✅
xsavec Support xsavec instructions. ⛔️ ✅
xsaveopt Support xsaveopt instructions. ⛔️ ✅
xsaves Support xsaves instructions. ⛔️ ✅
crt-static Enables C Run-time Libraries to be statically linked. ⛔️ ⛔️
16bit-mode 16-bit mode (i8086). ✅ ⛔️
32bit-mode 32-bit mode (80386). ✅ ⛔️
3dnow Enable 3DNow! instructions. ✅ ⛔️
3dnowa Enable 3DNow! Athlon instructions. ✅ ⛔️
64bit Support 64-bit instructions. ✅ ⛔️
64bit-mode 64-bit mode (x86_64). ✅ ⛔️
amx-bf16 Support AMX-BF16 instructions. ✅ ⛔️
amx-int8 Support AMX-INT8 instructions. ✅ ⛔️
amx-tile Support AMX-TILE instructions. ✅ ⛔️
avx512fp16 Support 16-bit floating point. ✅ ⛔️
avxvnni Support AVX_VNNI encoding. ✅ ⛔️
branchfusion CMP/TEST can be fused with conditional branches. ✅ ⛔️
cldemote Enable Cache Line Demote. ✅ ⛔️
clflushopt Flush A Cache Line Optimized. ✅ ⛔️
clwb Cache Line Write Back. ✅ ⛔️
clzero Enable Cache Line Zero. ✅ ⛔️
cmov Enable conditional move instructions. ✅ ⛔️
crc32 Enable SSE 4.2 CRC32 instruction (used when SSE4.2 is supported but function is GPR only). ✅ ⛔️
cx8 Support CMPXCHG8B instructions. ✅ ⛔️
enqcmd Has ENQCMD instructions. ✅ ⛔️
false-deps-getmant VGETMANTSS/SD/SH and VGETMANDPS/PD(memory version) has a false dependency on dest register. ✅ ⛔️
false-deps-lzcnt-tzcnt LZCNT/TZCNT have a false dependency on dest register. ✅ ⛔️
false-deps-mulc VF[C]MULCPH/SH has a false dependency on dest register. ✅ ⛔️
false-deps-mullq VPMULLQ has a false dependency on dest register. ✅ ⛔️
false-deps-perm VPERMD/Q/PS/PD has a false dependency on dest register. ✅ ⛔️
false-deps-popcnt POPCNT has a false dependency on dest register. ✅ ⛔️
false-deps-range VRANGEPD/PS/SD/SS has a false dependency on dest register. ✅ ⛔️
fast-11bytenop Target can quickly decode up to 11 byte NOPs. ✅ ⛔️
fast-15bytenop Target can quickly decode up to 15 byte NOPs. ✅ ⛔️
fast-7bytenop Target can quickly decode up to 7 byte NOPs. ✅ ⛔️
fast-bextr Indicates that the BEXTR instruction is implemented as a single uop with good throughput. ✅ ⛔️
fast-gather Indicates if gather is reasonably fast (this is true for Skylake client and all AVX-512 CPUs). ✅ ⛔️
fast-hops Prefer horizontal vector math instructions (haddp, phsub, etc.) over normal vector instructions with shuffles. ✅ ⛔️
fast-lzcnt LZCNT instructions are as fast as most simple integer ops. ✅ ⛔️
fast-movbe Prefer a movbe over a single-use load + bswap / single-use bswap + store. ✅ ⛔️
fast-scalar-fsqrt Scalar SQRT is fast (disable Newton-Raphson). ✅ ⛔️
fast-scalar-shift-masks Prefer a left/right scalar logical shift pair over a shift+and pair. ✅ ⛔️
fast-shld-rotate SHLD can be used as a faster rotate. ✅ ⛔️
fast-variable-crosslane-shuffle Cross-lane shuffles with variable masks are fast. ✅ ⛔️
fast-variable-perlane-shuffle Per-lane shuffles with variable masks are fast. ✅ ⛔️
fast-vector-fsqrt Vector SQRT is fast (disable Newton-Raphson). ✅ ⛔️
fast-vector-shift-masks Prefer a left/right vector logical shift pair over a shift+and pair. ✅ ⛔️
fma4 Enable four-operand fused multiple-add. ✅ ⛔️
fsgsbase Support FS/GS Base instructions. ✅ ⛔️
fsrm REP MOVSB of short lengths is faster. ✅ ⛔️
harden-sls-ijmp Harden against straight line speculation across indirect JMP instructions.. ✅ ⛔️
harden-sls-ret Harden against straight line speculation across RET instructions.. ✅ ⛔️
hreset Has hreset instruction. ✅ ⛔️
idivl-to-divb Use 8-bit divide for positive values less than 256. ✅ ⛔️
idivq-to-divl Use 32-bit divide for positive values less than 2^32. ✅ ⛔️
invpcid Invalidate Process-Context Identifier. ✅ ⛔️
kl Support Key Locker kl Instructions. ✅ ⛔️
lea-sp Use LEA for adjusting the stack pointer (this is an optimization for Intel Atom processors). ✅ ⛔️
lea-uses-ag LEA instruction needs inputs at AG stage. ✅ ⛔️
lvi-cfi Prevent indirect calls/branches from using a memory operand, and precede all indirect calls/branches from a register with an LFENCE instruction to serialize control flow. Also decompose RET instructions into a POP+LFENCE+JMP sequence.. ✅ ⛔️
lvi-load-hardening Insert LFENCE instructions to prevent data speculatively injected into loads from being used maliciously.. ✅ ⛔️
lwp Enable LWP instructions. ✅ ⛔️
macrofusion Various instructions can be fused with conditional branches. ✅ ⛔️
mmx Enable MMX instructions. ✅ ⛔️
movdir64b Support movdir64b instruction (direct store 64 bytes). ✅ ⛔️
movdiri Support movdiri instruction (direct store integer). ✅ ⛔️
mwaitx Enable MONITORX/MWAITX timer functionality. ✅ ⛔️
nopl Enable NOPL instruction (generally pentium pro+). ✅ ⛔️
pad-short-functions Pad short functions (to prevent a stall when returning too early). ✅ ⛔️
pconfig platform configuration instruction. ✅ ⛔️
pku Enable protection keys. ✅ ⛔️
prefer-128-bit Prefer 128-bit AVX instructions. ✅ ⛔️
prefer-256-bit Prefer 256-bit AVX instructions. ✅ ⛔️
prefer-mask-registers Prefer AVX512 mask registers over PTEST/MOVMSK. ✅ ⛔️
prefetchwt1 Prefetch with Intent to Write and T1 Hint. ✅ ⛔️
prfchw Support PRFCHW instructions. ✅ ⛔️
ptwrite Support ptwrite instruction. ✅ ⛔️
rdpid Support RDPID instructions. ✅ ⛔️
rdpru Support RDPRU instructions. ✅ ⛔️
retpoline Remove speculation of indirect branches from the generated code, either by avoiding them entirely or lowering them with a speculation blocking construct. ✅ ⛔️
retpoline-external-thunk When lowering an indirect call or branch using a `retpoline`, rely on the specified user provided thunk rather than emitting one ourselves. Only has effect when combined with some other retpoline feature. ✅ ⛔️
retpoline-indirect-branches Remove speculation of indirect branches from the generated code. ✅ ⛔️
retpoline-indirect-calls Remove speculation of indirect calls from the generated code. ✅ ⛔️
sahf Support LAHF and SAHF instructions in 64-bit mode. ✅ ⛔️
sbb-dep-breaking SBB with same register has no source dependency. ✅ ⛔️
serialize Has serialize instruction. ✅ ⛔️
seses Prevent speculative execution side channel timing attacks by inserting a speculation barrier before memory reads, memory writes, and conditional branches. Implies LVI Control Flow integrity.. ✅ ⛔️
sgx Enable Software Guard Extensions. ✅ ⛔️
shstk Support CET Shadow-Stack instructions. ✅ ⛔️
slow-3ops-lea LEA instruction with 3 ops or certain registers is slow. ✅ ⛔️
slow-incdec INC and DEC instructions are slower than ADD and SUB. ✅ ⛔️
slow-lea LEA instruction with certain arguments is slow. ✅ ⛔️
slow-pmaddwd PMADDWD is slower than PMULLD. ✅ ⛔️
slow-pmulld PMULLD instruction is slow (compared to PMULLW/PMULHW and PMULUDQ). ✅ ⛔️
slow-shld SHLD instruction is slow. ✅ ⛔️
slow-two-mem-ops Two memory operand instructions are slow. ✅ ⛔️
slow-unaligned-mem-16 Slow unaligned 16-byte memory access. ✅ ⛔️
slow-unaligned-mem-32 Slow unaligned 32-byte memory access. ✅ ⛔️
soft-float Use software floating point features. ✅ ⛔️
sse-unaligned-mem Allow unaligned memory operands with SSE instructions (this may require setting a configuration bit in the processor). ✅ ⛔️
tagged-globals Use an instruction sequence for taking the address of a global that allows a memory tag in the upper address bits.. ✅ ⛔️
tsxldtrk Support TSXLDTRK instructions. ✅ ⛔️
uintr Has UINTR Instructions. ✅ ⛔️
use-glm-div-sqrt-costs Use Goldmont specific floating point div/sqrt costs. ✅ ⛔️
use-slm-arith-costs Use Silvermont specific arithmetic costs. ✅ ⛔️
vzeroupper Should insert vzeroupper instructions. ✅ ⛔️
waitpkg Wait and pause enhancements. ✅ ⛔️
wbnoinvd Write Back No Invalidate. ✅ ⛔️
widekl Support Key Locker wide Instructions. ✅ ⛔️
x87 Enable X87 float instructions. ✅ ⛔️
xop Enable XOP instructions. ✅ ⛔️