@@ -377,86 +377,86 @@ class VM_Version : public Abstract_VM_Version {
377377 */
378378 enum Feature_Flag {
379379#define CPU_FEATURE_FLAGS (decl ) \
380- decl (CX8, cx8, 0 ) /* next bits are from cpuid 1 (EDX) */ \
381- decl (CMOV, cmov, 1 ) \
382- decl (FXSR, fxsr, 2 ) \
383- decl (HT, ht, 3 ) \
384- \
385- decl (MMX, mmx, 4 ) \
386- decl (3DNOW_PREFETCH, 3dnowpref, 5 ) /* Processor supports 3dnow prefetch and prefetchw instructions */ \
387- /* may not necessarily support other 3dnow instructions */ \
388- decl (SSE, sse, 6 ) \
389- decl (SSE2, sse2, 7 ) \
390- \
391- decl (SSE3, sse3, 8 ) /* SSE3 comes from cpuid 1 (ECX) */ \
392- decl (SSSE3, ssse3, 9 ) \
393- decl (SSE4A, sse4a, 10 ) \
394- decl (SSE4_1, sse4.1 , 11 ) \
395- \
396- decl (SSE4_2, sse4.2 , 12 ) \
397- decl (POPCNT, popcnt, 13 ) \
398- decl (LZCNT, lzcnt, 14 ) \
399- decl (TSC, tsc, 15 ) \
400- \
401- decl (TSCINV_BIT, tscinvbit, 16 ) \
402- decl (TSCINV, tscinv, 17 ) \
403- decl (AVX, avx, 18 ) \
404- decl (AVX2, avx2, 19 ) \
405- \
406- decl (AES, aes, 20 ) \
407- decl (ERMS, erms, 21 ) /* enhanced 'rep movsb/stosb' instructions */ \
408- decl (CLMUL, clmul, 22 ) /* carryless multiply for CRC */ \
409- decl (BMI1, bmi1, 23 ) \
410- \
411- decl (BMI2, bmi2, 24 ) \
412- decl (RTM, rtm, 25 ) /* Restricted Transactional Memory instructions */ \
413- decl (ADX, adx, 26 ) \
414- decl (AVX512F, avx512f, 27 ) /* AVX 512bit foundation instructions */ \
415- \
416- decl (AVX512DQ, avx512dq, 28 ) \
417- decl (AVX512PF, avx512pf, 29 ) \
418- decl (AVX512ER, avx512er, 30 ) \
419- decl (AVX512CD, avx512cd, 31 ) \
420- \
421- decl (AVX512BW, avx512bw, 32 ) /* Byte and word vector instructions */ \
422- decl (AVX512VL, avx512vl, 33 ) /* EVEX instructions with smaller vector length */ \
423- decl (SHA, sha, 34 ) /* SHA instructions */ \
424- decl (FMA, fma, 35 ) /* FMA instructions */ \
425- \
426- decl (VZEROUPPER, vzeroupper, 36 ) /* Vzeroupper instruction */ \
427- decl (AVX512_VPOPCNTDQ, avx512_vpopcntdq, 37 ) /* Vector popcount */ \
428- decl (AVX512_VPCLMULQDQ, avx512_vpclmulqdq, 38 ) /* Vector carryless multiplication */ \
429- decl (AVX512_VAES, avx512_vaes, 39 ) /* Vector AES instruction */ \
430- \
431- decl (AVX512_VNNI, avx512_vnni, 40 ) /* Vector Neural Network Instructions */ \
432- decl (FLUSH, clflush, 41 ) /* flush instruction */ \
433- decl (FLUSHOPT, clflushopt, 42 ) /* flusopth instruction */ \
434- decl (CLWB, clwb, 43 ) /* clwb instruction */ \
435- \
436- decl (AVX512_VBMI2, avx512_vbmi2, 44 ) /* VBMI2 shift left double instructions */ \
437- decl (AVX512_VBMI, avx512_vbmi, 45 ) /* Vector BMI instructions */ \
438- decl (HV, hv, 46 ) /* Hypervisor instructions */ \
439- decl (SERIALIZE, serialize, 47 ) /* CPU SERIALIZE */ \
440- decl (RDTSCP, rdtscp, 48 ) /* RDTSCP instruction */ \
441- decl (RDPID, rdpid, 49 ) /* RDPID instruction */ \
442- decl (FSRM, fsrm, 50 ) /* Fast Short REP MOV */ \
443- decl (GFNI, gfni, 51 ) /* Vector GFNI instructions */ \
444- decl (AVX512_BITALG, avx512_bitalg, 52 ) /* Vector sub-word popcount and bit gather instructions */ \
445- decl (F16C, f16c, 53 ) /* Half-precision and single precision FP conversion instructions*/ \
446- decl (PKU, pku, 54 ) /* Protection keys for user-mode pages */ \
447- decl (OSPKE, ospke, 55 ) /* OS enables protection keys */ \
448- decl (CET_IBT, cet_ibt, 56 ) /* Control Flow Enforcement - Indirect Branch Tracking */ \
449- decl (CET_SS, cet_ss, 57 ) /* Control Flow Enforcement - Shadow Stack */ \
450- decl (AVX512_IFMA, avx512_ifma, 58 ) /* Integer Vector FMA instructions*/ \
451- decl (AVX_IFMA, avx_ifma, 59 ) /* 256-bit VEX-coded variant of AVX512-IFMA*/ \
452- decl (APX_F, apx_f, 60 ) /* Intel Advanced Performance Extensions*/ \
453- decl (SHA512, sha512, 61 ) /* SHA512 instructions*/ \
454- decl (AVX512_FP16, avx512_fp16, 62 ) /* AVX512 FP16 ISA support*/ \
455- decl (AVX10_1, avx10_1, 63 ) /* AVX10 512 bit vector ISA Version 1 support*/ \
456- decl (AVX10_2, avx10_2, 64 ) /* AVX10 512 bit vector ISA Version 2 support*/ \
457- decl (HYBRID, hybrid, 65 ) /* Hybrid architecture */
458-
459- #define DECLARE_CPU_FEATURE_FLAG (id, name, bit ) CPU_##id = (bit) ,
380+ decl (CX8, cx8 ) /* next bits are from cpuid 1 (EDX) */ \
381+ decl (CMOV, cmov ) \
382+ decl (FXSR, fxsr ) \
383+ decl (HT, ht ) \
384+ \
385+ decl (MMX, mmx ) \
386+ decl (3DNOW_PREFETCH, 3dnowpref ) /* Processor supports 3dnow prefetch and prefetchw instructions */ \
387+ /* may not necessarily support other 3dnow instructions */ \
388+ decl (SSE, sse ) \
389+ decl (SSE2, sse2 ) \
390+ \
391+ decl (SSE3, sse3 ) /* SSE3 comes from cpuid 1 (ECX) */ \
392+ decl (SSSE3, ssse3 ) \
393+ decl (SSE4A, sse4a ) \
394+ decl (SSE4_1, sse4.1 ) \
395+ \
396+ decl (SSE4_2, sse4.2 ) \
397+ decl (POPCNT, popcnt ) \
398+ decl (LZCNT, lzcnt ) \
399+ decl (TSC, tsc ) \
400+ \
401+ decl (TSCINV_BIT, tscinvbit ) \
402+ decl (TSCINV, tscinv ) \
403+ decl (AVX, avx ) \
404+ decl (AVX2, avx2 ) \
405+ \
406+ decl (AES, aes ) \
407+ decl (ERMS, erms ) /* enhanced 'rep movsb/stosb' instructions */ \
408+ decl (CLMUL, clmul ) /* carryless multiply for CRC */ \
409+ decl (BMI1, bmi1 ) \
410+ \
411+ decl (BMI2, bmi2 ) \
412+ decl (RTM, rtm ) /* Restricted Transactional Memory instructions */ \
413+ decl (ADX, adx ) \
414+ decl (AVX512F, avx512f ) /* AVX 512bit foundation instructions */ \
415+ \
416+ decl (AVX512DQ, avx512dq ) \
417+ decl (AVX512PF, avx512pf ) \
418+ decl (AVX512ER, avx512er ) \
419+ decl (AVX512CD, avx512cd ) \
420+ \
421+ decl (AVX512BW, avx512bw ) /* Byte and word vector instructions */ \
422+ decl (AVX512VL, avx512vl ) /* EVEX instructions with smaller vector length */ \
423+ decl (SHA, sha ) /* SHA instructions */ \
424+ decl (FMA, fma ) /* FMA instructions */ \
425+ \
426+ decl (VZEROUPPER, vzeroupper ) /* Vzeroupper instruction */ \
427+ decl (AVX512_VPOPCNTDQ, avx512_vpopcntdq ) /* Vector popcount */ \
428+ decl (AVX512_VPCLMULQDQ, avx512_vpclmulqdq ) /* Vector carryless multiplication */ \
429+ decl (AVX512_VAES, avx512_vaes ) /* Vector AES instruction */ \
430+ \
431+ decl (AVX512_VNNI, avx512_vnni ) /* Vector Neural Network Instructions */ \
432+ decl (FLUSH, clflush ) /* flush instruction */ \
433+ decl (FLUSHOPT, clflushopt ) /* flusopth instruction */ \
434+ decl (CLWB, clwb ) /* clwb instruction */ \
435+ \
436+ decl (AVX512_VBMI2, avx512_vbmi2 ) /* VBMI2 shift left double instructions */ \
437+ decl (AVX512_VBMI, avx512_vbmi ) /* Vector BMI instructions */ \
438+ decl (HV, hv ) /* Hypervisor instructions */ \
439+ decl (SERIALIZE, serialize ) /* CPU SERIALIZE */ \
440+ decl (RDTSCP, rdtscp ) /* RDTSCP instruction */ \
441+ decl (RDPID, rdpid ) /* RDPID instruction */ \
442+ decl (FSRM, fsrm ) /* Fast Short REP MOV */ \
443+ decl (GFNI, gfni ) /* Vector GFNI instructions */ \
444+ decl (AVX512_BITALG, avx512_bitalg ) /* Vector sub-word popcount and bit gather instructions */ \
445+ decl (F16C, f16c ) /* Half-precision and single precision FP conversion instructions*/ \
446+ decl (PKU, pku ) /* Protection keys for user-mode pages */ \
447+ decl (OSPKE, ospke ) /* OS enables protection keys */ \
448+ decl (CET_IBT, cet_ibt ) /* Control Flow Enforcement - Indirect Branch Tracking */ \
449+ decl (CET_SS, cet_ss ) /* Control Flow Enforcement - Shadow Stack */ \
450+ decl (AVX512_IFMA, avx512_ifma ) /* Integer Vector FMA instructions*/ \
451+ decl (AVX_IFMA, avx_ifma ) /* 256-bit VEX-coded variant of AVX512-IFMA*/ \
452+ decl (APX_F, apx_f ) /* Intel Advanced Performance Extensions*/ \
453+ decl (SHA512, sha512 ) /* SHA512 instructions*/ \
454+ decl (AVX512_FP16, avx512_fp16 ) /* AVX512 FP16 ISA support*/ \
455+ decl (AVX10_1, avx10_1 ) /* AVX10 512 bit vector ISA Version 1 support*/ \
456+ decl (AVX10_2, avx10_2 ) /* AVX10 512 bit vector ISA Version 2 support*/ \
457+ decl (HYBRID, hybrid ) /* Hybrid architecture */
458+
459+ #define DECLARE_CPU_FEATURE_FLAG (id, name ) CPU_##id,
460460 CPU_FEATURE_FLAGS (DECLARE_CPU_FEATURE_FLAG)
461461#undef DECLARE_CPU_FEATURE_FLAG
462462 MAX_CPU_FEATURES
0 commit comments