summaryrefslogtreecommitdiffstats
path: root/util/x86simdgen/3rdparty/simd-intel.conf
blob: 0db4259f974c31409507346824ff2e4e5c379379 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
# -*- 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