Skip to content

Commit 3c0ec06

Browse files
authored
Add Intel Sierra Forest instructions (#127)
Signed-off-by: Feruzjon Muyassarov <[email protected]> Signed-off-by: Feruzjon Muyassarov <[email protected]>
1 parent 8935696 commit 3c0ec06

File tree

3 files changed

+189
-173
lines changed

3 files changed

+189
-173
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,8 +297,11 @@ Exit Code 1
297297
| AVX512VNNI | AVX-512 Vector Neural Network Instructions |
298298
| AVX512VP2INTERSECT | AVX-512 Intersect for D/Q |
299299
| AVX512VPOPCNTDQ | AVX-512 Vector Population Count Doubleword and Quadword |
300+
| AVXIFMA | AVX-IFMA instructions |
301+
| AVXNECONVERT | AVX-NE-CONVERT instructions |
300302
| AVXSLOW | Indicates the CPU performs 2 128 bit operations instead of one |
301303
| AVXVNNI | AVX (VEX encoded) VNNI neural network instructions |
304+
| AVXVNNIINT8 | AVX-VNNI-INT8 instructions |
302305
| BMI1 | Bit Manipulation Instruction Set 1 |
303306
| BMI2 | Bit Manipulation Instruction Set 2 |
304307
| CETIBT | Intel CET Indirect Branch Tracking |
@@ -307,6 +310,7 @@ Exit Code 1
307310
| CLMUL | Carry-less Multiplication |
308311
| CLZERO | CLZERO instruction supported |
309312
| CMOV | i686 CMOV |
313+
| CMPCCXADD | CMPCCXADD instructions |
310314
| CMPSB_SCADBS_SHORT | Fast short CMPSB and SCASB |
311315
| CMPXCHG8 | CMPXCHG8 instruction |
312316
| CPBOOST | Core Performance Boost |

cpuid.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,11 @@ const (
9494
AVX512VNNI // AVX-512 Vector Neural Network Instructions
9595
AVX512VP2INTERSECT // AVX-512 Intersect for D/Q
9696
AVX512VPOPCNTDQ // AVX-512 Vector Population Count Doubleword and Quadword
97+
AVXIFMA // AVX-IFMA instructions
98+
AVXNECONVERT // AVX-NE-CONVERT instructions
9799
AVXSLOW // Indicates the CPU performs 2 128 bit operations instead of one
98100
AVXVNNI // AVX (VEX encoded) VNNI neural network instructions
101+
AVXVNNIINT8 // AVX-VNNI-INT8 instructions
99102
BMI1 // Bit Manipulation Instruction Set 1
100103
BMI2 // Bit Manipulation Instruction Set 2
101104
CETIBT // Intel CET Indirect Branch Tracking
@@ -104,6 +107,7 @@ const (
104107
CLMUL // Carry-less Multiplication
105108
CLZERO // CLZERO instruction supported
106109
CMOV // i686 CMOV
110+
CMPCCXADD // CMPCCXADD instructions
107111
CMPSB_SCADBS_SHORT // Fast short CMPSB and SCASB
108112
CMPXCHG8 // CMPXCHG8 instruction
109113
CPBOOST // Core Performance Boost
@@ -1178,15 +1182,19 @@ func support() flagSet {
11781182
fs.setIf(edx&(1<<31) != 0, SPEC_CTRL_SSBD)
11791183

11801184
// CPUID.(EAX=7, ECX=1).EDX
1185+
fs.setIf(edx&(1<<4) != 0, AVXVNNIINT8)
1186+
fs.setIf(edx&(1<<5) != 0, AVXNECONVERT)
11811187
fs.setIf(edx&(1<<14) != 0, PREFETCHI)
11821188

1183-
// CPUID.(EAX=7, ECX=1)
1189+
// CPUID.(EAX=7, ECX=1).EAX
11841190
eax1, _, _, _ := cpuidex(7, 1)
11851191
fs.setIf(fs.inSet(AVX) && eax1&(1<<4) != 0, AVXVNNI)
1192+
fs.setIf(eax1&(1<<7) != 0, CMPCCXADD)
11861193
fs.setIf(eax1&(1<<10) != 0, MOVSB_ZL)
11871194
fs.setIf(eax1&(1<<11) != 0, STOSB_SHORT)
11881195
fs.setIf(eax1&(1<<12) != 0, CMPSB_SCADBS_SHORT)
11891196
fs.setIf(eax1&(1<<22) != 0, HRESET)
1197+
fs.setIf(eax1&(1<<23) != 0, AVXIFMA)
11901198
fs.setIf(eax1&(1<<26) != 0, LAM)
11911199

11921200
// Only detect AVX-512 features if XGETBV is supported

0 commit comments

Comments
 (0)