; CPUINFO - the features: a bit in cpu_regs and the name, in groups with ; a label, in the order of the window and the report: the related ones ; together, the older first, not by the bit. flags in the window and the ; report, flags_report only in the report: the window has no room for ; them. FLAGS_GROUP = 0xFE ; then the label of the group FLAGS_END = 0xFF assert CPU_REGS * 32 <= FLAGS_GROUP ; the bits stay below both macro flag bit, name { db bit, name, 0 } macro flags_group label { db FLAGS_GROUP dd label } flags: flags_group sz_vector flag F_1D + 23, "MMX" flag F_X1D + 22, "MMXEXT" flag F_X1D + 31, "3DNow!" flag F_X1D + 30, "3DNowExt" flag F_X1C + 8, "3DNowPrefetch" flag F_1D + 25, "SSE" flag F_1D + 26, "SSE2" flag F_1C + 0, "SSE3" flag F_1C + 9, "SSSE3" flag F_1C + 19, "SSE4.1" flag F_1C + 20, "SSE4.2" flag F_X1C + 6, "SSE4A" flag F_X1C + 7, "MisalignSSE" flag F_1C + 28, "AVX" flag F_7B + 5, "AVX2" flag F_1C + 12, "FMA" flag F_X1C + 16, "FMA4" flag F_X1C + 11, "XOP" flag F_1C + 29, "F16C" flag F_7B + 16, "AVX512F" flags_group sz_instructions flag F_1C + 25, "AES" flag F_1C + 1, "PCLMULQDQ" flag F_7C + 9, "VAES" flag F_7C + 10, "VPCLMULQDQ" flag F_7C + 8, "GFNI" flag F_7B + 29, "SHA" flag F_1C + 30, "RDRAND" flag F_7B + 18, "RDSEED" flag F_1C + 23, "POPCNT" flag F_X1C + 5, "LZCNT" flag F_7B + 3, "BMI1" flag F_7B + 8, "BMI2" flag F_7B + 19, "ADX" flag F_X1C + 21, "TBM" flag F_1C + 22, "MOVBE" flag F_1D + 15, "CMOV" flag F_1D + 8, "CX8" flag F_1C + 13, "CX16" flag F_X1C + 0, "LAHF" flag F_1C + 3, "MONITOR" flag F_7B + 11, "RTM" flag F_7B + 4, "HLE" flags_group sz_system flag F_1D + 0, "FPU" flag F_1D + 4, "TSC" flag F_1D + 1, "VME" flag F_1D + 2, "DE" flag F_X1D + 27, "RDTSCP" flag F_1D + 5, "MSR" flag F_1D + 9, "APIC" flag F_1C + 21, "x2APIC" flag F_1D + 6, "PAE" flag F_1D + 3, "PSE" flag F_1D + 17, "PSE36" flag F_1D + 18, "PSN" flag F_1D + 16, "PAT" flag F_1D + 13, "PGE" flag F_1D + 12, "MTRR" flag F_X1D + 20, "NX" flag F_X1D + 29, "LM" flag F_X1D + 26, "PDPE1GB" flag F_1D + 24, "FXSR" flag F_X1D + 25, "FFXSR" flag F_1C + 26, "XSAVE" flag F_1C + 17, "PCID" flag F_7B + 10, "INVPCID" flag F_7B + 7, "SMEP" flag F_7B + 20, "SMAP" flag F_7C + 2, "UMIP" flag F_7C + 3, "PKU" flag F_7B + 0, "FSGSBASE" flag F_1D + 19, "CLFSH" flag F_7B + 23, "CLFLUSHOPT" flag F_7B + 24, "CLWB" flag F_7B + 9, "ERMS" flag F_1D + 7, "MCE" flag F_1D + 14, "MCA" flag F_1D + 27, "SS" flag F_1D + 21, "DS" flag F_1C + 4, "DS-CPL" flag F_1C + 15, "PDCM" flag F_1C + 14, "xTPR" flag F_1C + 18, "DCA" flag F_1C + 10, "CNXT-ID" flag F_X1D + 19, "MP" flag F_X1C + 1, "CmpLegacy" flag F_X1C + 3, "ExtApic" flag F_X1C + 4, "CR8Legacy" flag F_X1C + 9, "OSVW" flag F_X1C + 13, "WDT" flags_group sz_platform flag F_1C + 5, "VMX" flag F_X1C + 2, "SVM" flag F_X1C + 12, "SKINIT" flag F_1C + 6, "SMX" flag F_7B + 2, "SGX" flag F_1C + 31, "Hypervisor" flag F_1D + 28, "HTT" flag F_1C + 7, "EST" flag F_1D + 29, "TM" flag F_1D + 31, "PBE" flag F_1C + 8, "TM2" flag F_1D + 22, "ACPI" db FLAGS_END flags_report: flags_group sz_avx512 flag F_7B + 17, "AVX512DQ" flag F_7B + 28, "AVX512CD" flag F_7B + 30, "AVX512BW" flag F_7B + 31, "AVX512VL" flag F_7B + 21, "AVX512IFMA" flag F_7C + 1, "AVX512VBMI" flag F_7C + 6, "AVX512VBMI2" flag F_7C + 11, "AVX512VNNI" flag F_7C + 12, "AVX512BITALG" flag F_7C + 14, "AVX512VPOPCNTDQ" flag F_7D + 23, "AVX512FP16" db FLAGS_END