qt5base-lts/util/x86simdgen/3rdparty/simd-intel.conf
Thiago Macieira b852584556 qsimd: update the generator script from OpenDCDiag
I'd been making changes to that and improving it for the past 2 years
without bringing it back into Qt.

The list of features is mostly the same, except:
- removed TSX features
- removed features specific to Xeon Phi processors
- added CET and AVX512FP16 features
- added the bit for hybrid CPU detection

See matching update at https://github.com/opendcdiag/opendcdiag/pull/49

Change-Id: I6fcda969a9e9427198bffffd16ce860b5a38aece
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2022-02-18 15:46:41 -08:00

180 lines
9.3 KiB
Plaintext

# -*- mode: conf; indent-tabs-mode: t -*-
# Feature CPUID function Bit Required feature
#sep Leaf01EDX 11 # Sysenter/sysexit
#cmov Leaf01EDX 15 # Conditional Move
#clflush Leaf01EDX 19 # Cache-Line Flush
#mmx Leaf01EDX 23 # Multi Media Extensions
#fxsr Leaf01EDX 24 # FXSAVE instruction
#sse Leaf01EDX 25 # Streaming SIMD Extensions
sse2 Leaf01EDX 26 # Streaming SIMD Extensions 2
# -- everything above this line is mandatory on x86-64 --
sse3 Leaf01ECX 0 # Streaming SIMD Extensions 3
#pclmul Leaf01ECX 1 # Carryless Multiply
ssse3 Leaf01ECX 9 # Supplemental Streaming SIMD Extensions 3
fma Leaf01ECX 12 # Fused Multiply-Add
#cx16 Leaf01ECX 13 # Compare-Exchange 16 bytes
sse4.1 Leaf01ECX 19 # Streaming SIMD Extensions 4.1
sse4.2 Leaf01ECX 20 # Streaming SIMD Extensions 4.2
movbe Leaf01ECX 22 # MOV Big Endian
popcnt Leaf01ECX 23 # Population count
aes Leaf01ECX 25 sse4.2 # Advenced Encryption Standard
#xsave Leaf01ECX 26 # XSAVE, XGETBV instructions
#osxsave Leaf01ECX 27 # XSAVE enabled by OS
avx Leaf01ECX 28 # Advanced Vector Extensions
f16c Leaf01ECX 29 avx # 16-bit Float Conversion
rdrnd Leaf01ECX 30 # Random number generator
#hypervisor Leaf01ECX 31 # Running on a hypervisor
#fsgsbase Leaf07_00EBX 0 # FS/GS base access
bmi Leaf07_00EBX 3 # Bit Manipulation Instructions
#hle Leaf07_00EBX 4 # Hardware Lock Ellision
avx2 Leaf07_00EBX 5 avx # Advanced Vector Extensions 2
bmi2 Leaf07_00EBX 8 # Bit Manipulation Instructions 2
#erms Leaf07_00EBX 9 # Enhanced REP MOVSB/STOSB
#rtm Leaf07_00EBX 11 # Restricted Transactional Memory
#rdt_m Leaf07_00EBX 12 # Resource Director Technology (RDT) Monitoring
#mpx Leaf07_00EBX 14 # Memory Protection Extensions
#rdt_a Leaf07_00EBX 12 # Resource Director Technology (RDT) Allocation
avx512f Leaf07_00EBX 16 avx # AVX512 Foundation
avx512dq Leaf07_00EBX 17 avx512f # AVX512 Double & Quadword
rdseed Leaf07_00EBX 18 # Random number generator for seeding
#adx Leaf07_00EBX 19 # Multi-Precision Add-Carry
avx512ifma Leaf07_00EBX 21 avx512f # AVX512 Integer Fused Multiply-Add
#clflushopt Leaf07_00EBX 23 # Cache-Fline Flush Optimized
#clwb Leaf07_00EBX 24 # Cache-Line Write Back
#avx512pf Leaf07_00EBX 26 avx512f # AVX512 Prefetch
#avx512er Leaf07_00EBX 27 avx512f # AVX512 Exponential & Reciprocal
avx512cd Leaf07_00EBX 28 avx512f # AVX512 Conflict Detection
sha Leaf07_00EBX 29 # SHA-1 and SHA-256 instructions
avx512bw Leaf07_00EBX 30 avx512f # AVX512 Byte & Word
avx512vl Leaf07_00EBX 31 avx512f # AVX512 Vector Length
avx512vbmi Leaf07_00ECX 1 avx512f # AVX512 Vector Byte Manipulation Instructions
#pku Leaf07_00ECX 3 # Protection Keys for User mode
#ospke Leaf07_00ECX 4 # Protection Keys Enabled by OS
#waitpkg Leaf07_00ECX 5 # User-Level Monitor / Wait
avx512vbmi2 Leaf07_00ECX 6 avx512f # AVX512 Vector Byte Manipulation Instructions 2
shstk Leaf07_00ECX 7 # Control Flow Enforcement Technology Shadow Stack
gfni Leaf07_00ECX 8 # Galois Field new instructions
vaes Leaf07_00ECX 9 avx2,avx,aes # 256- and 512-bit AES
#vpclmulqdq Leaf07_00ECX 10 avx # 256- and 512-bit Carryless Multiply
avx512vnni Leaf07_00ECX 11 avx512f # AVX512 Vector Neural Network Instructions
avx512bitalg Leaf07_00ECX 12 avx512f # AVX512 Bit Algorithms
avx512vpopcntdq Leaf07_00ECX 14 avx512f # AVX512 Population Count
#la57 Leaf07_00ECX 16 # 5-level page tables
#rdpid Leaf07_00ECX 22 # RDPID instruction
#cldemote Leaf07_00ECX 25 # Cache Line Demotion
#movdiri Leaf07_00ECX 27 # Move Direct-store Integer
#movdir64b Leaf07_00ECX 28 # Move Direct-store 64 bytes
#enqcmd Leaf07_00ECX 29 # Enqueue Command
#pks Leaf07_00ECX 31 # Protection Keys for Supervisor mode
#avx5124nniw Leaf07_00EDX 2 avx512f # AVX512 4-iteration Vector Neural Network Instructions
#avx5124fmaps Leaf07_00EDX 3 avx512f # AVX512 4-iteration Fused Multiply Accumulation
#fsrm Leaf07_00EDX 4 # Fast Short REP MOV
#uintr Leaf07_00EDX 5 # User interrupts
#avx512vp2intersect Leaf07_00EDX 8 avx512f # AVX512 Intersection computation
#serialize Leaf07_00EDX 14 # SERIALIZE instruction
hybrid Leaf07_00EDX 15 # Hybrid processor
#tsxldtrk Leaf07_00EDX 16 # TDX (RTM) Suspend Load Address Tracking
#pconfig Leaf07_00EDX 18 # Platform configuration
ibt Leaf07_00EDX 20 # Control Flow Enforcement Technology Indirect Branch Tracking
#amxbf16 Leaf07_00EDX 22 amxtile # AMX Tile multiplication in BFloat16
avx512fp16 Leaf07_00EDX 23 avx512f,f16c # AVX512 16-bit Floating Point
#amxtile Leaf07_00EDX 24 # Advanced Matrix Extensions Tile support
#amxint8 Leaf07_00EDX 25 amxtile # AMX Tile multiplication for Int8
#avxvnni Leaf07_01EAX 4 avx # AVX (VEX-encoded) versions of the Vector Neural Network Instructions
#avx512bf16 Leaf07_01EAX 5 avx512f # AVX512 Brain Float16
#zlmovsb Leaf07_01EAX 10 # Zero-length MOVSB
#fsrs Leaf07_01EAX 11 # Fast Short (REP?) STOSB
#fsrc Leaf07_01EAX 12 # Fast Short (REP?) CMPSB, SCASB
#fred Leaf07_01EAX 17 # Flexible Return and Event Delivery
#lkgs Leaf07_01EAX 18 # Load into Kernel GS
#lam Leaf07_01EAX 26 # Linear Address Masking
#xsaveopt Leaf13_01EAX 0 # Optimized XSAVE
#xsavec Leaf13_01EAX 1 # XSAVE with Compaction
#xgetbv1 Leaf13_01EAX 2 # XGETBV with ECX=1
#xsaves Leaf13_01EAX 3 # XSAVE Supervisor mode
#xfd Leaf13_01EAX 4 # eXtended Feature Disable MSR
#lzcnt Leaf80000001hECX 5 # Leading Zero Count
# XSAVE states
# Source: Intel Software Development Manual, Volume 1, Chapter 13
# Source: Intel Instruction Set Extensions Manual (ed. 041), Chapter 3, "Intel AMX Instruction Set"
# Grouping Value Required for
xsave=X87 0x0001 # X87 and MMX state
xsave=SseState 0x0002 sse # SSE: 128 bits of XMM registers
xsave=Ymm_Hi128 0x0004 # AVX: high 128 bits in YMM registers
xsave=Bndregs 0x0008 # Memory Protection Extensions
xsave=Bndcsr 0x0010 # Memory Protection Extensions
xsave=OpMask 0x0020 # AVX512: k0 through k7
xsave=Zmm_Hi256 0x0040 # AVX512: high 256 bits of ZMM0-15
xsave=Hi16_Zmm 0x0080 # AVX512: all 512 bits of ZMM16-31
xsave=PTState 0x0100 # Processor Trace
xsave=PKRUState 0x0200 pku # Protection Key
# ??? 0x0400
xsave=CetUState 0x0800 # CET: user mode
xsave=CetSState 0x1000 # CET: supervisor mode
xsave=HdcState 0x2000 # Hardware Duty Cycle
xsave=UintrState 0x4000 uintr # User Interrupts
# ??? 0x8000
xsave=HwpState 0x10000 # Hardware P-State
xsave=Xtilecfg 0x20000 # AMX: XTILECFG register
xsave=Xtiledata 0x40000 # AMX: data in the tiles
xsave=AvxState SseState|Ymm_Hi128 avx,fma,avx512f
xsave=MPXState Bndregs|Bndcsr mpx
xsave=Avx512State AvxState|OpMask|Zmm_Hi256|Hi16_Zmm avx512f
xsave=CetState CetUState|CetSState shstk
xsave=AmxState Xtilecfg|Xtiledata amxtile
# Processor/arch listing below this line
# Source: Intel Instruction Set Extension manual, section 1.2
# Source: GCC gcc/config/i386/i386.h, i386-c.c, i386-builtins.c
# Architecture Based on New features Optional features
arch=x86_64 <> sse2
# Core line
arch=Core2 x86_64 sse3,ssse3,cx16
arch=NHM Core2 sse4.1,sse4.2,popcnt
arch=WSM NHM
arch=SNB WSM avx
arch=IVB SNB f16c,rdrnd,fsgsbase
arch=HSW IVB avx2,fma,bmi,bmi2,lzcnt,movbe
arch=BDW HSW adx,rdseed
arch=BDX BDW
arch=SKL BDW xsavec,xsaves
arch=ADL SKL avxvnni,gfni,vaes,vpclmulqdq,serialize,shstk,cldemote,movdiri,movdir64b,ibt,waitpkg,keylocker rdpid
arch=SKX SKL avx512f,avx512dq,avx512cd,avx512bw,avx512vl clwb
arch=CLX SKX avx512vnni
arch=CPX CLX avx512bf16
arch=CNL SKX avx512ifma,avx512vbmi sha
arch=ICL CNL avx512vbmi2,gfni,vaes,vpclmulqdq,avx512vnni,avx512bitalg,avx512vpopcntdq fsrm,rdpid
arch=ICX ICL pconfig
arch=TGL ICL avx512vp2intersect,shstk,,movdiri,movdir64b,ibt,keylocker
arch=SPR TGL avx512bf16,amxtile,amxbf16,amxint8,avxvnni,cldemote,pconfig,waitpkg,serialize,tsxldtrk,uintr
# Atom line
arch=SLM WSM rdrnd,movbe
arch=GLM SLM fsgsbase,rdseed,lzcnt,xsavec,xsaves
arch=TNT GLM clwb,gfni,cldemote,waitpkg,movdiri,movdir64b
# Xeon Phi line
#arch=KNL SKL avx512f,avx512er,avx512pf,avx512cd
#arch=KNM KNL avx5124fmaps,avx5124vnniw,avx512vpopcntdq
# Longer names
arch=Nehalem NHM # Intel Core i3/i5/i7
arch=Westmere WSM # Intel Core i3/i5/i7
arch=SandyBridge SNB # Second Generation Intel Core i3/i5/i7
arch=IvyBridge IVB # Third Generation Intel Core i3/i5/i7
arch=Haswell HSW # Fourth Generation Intel Core i3/i5/i7
arch=Broadwell BDW # Fifth Generation Intel Core i3/i5/i7
arch=Skylake SKL # Sixth Generation Intel Core i3/i5/i7
arch=Skylake-Avx512 SKX # Intel Xeon Scalable
arch=CascadeLake CLX # Second Generation Intel Xeon Scalable
arch=CooperLake CPX # Third Generation Intel Xeon Scalable
arch=CannonLake CNL # Intel Core i3-8121U
arch=IceLake-Client ICL # Tenth Generation Intel Core i3/i5/i7
arch=IceLake-Server ICX # Third Generation Intel Xeon Scalable
arch=AlderLake ADL
arch=SapphireRapids SPR
arch=TigerLake TGL # Eleventh Generation Intel Core i3/i5/i7
arch=Silvermont SLM
arch=Goldmont GLM
arch=Tremont TNT
#arch=KnightsLanding KNL
#arch=KnightsMill KNM