diff mbox series

[2/4] target/i386: Translate feature_word_info to xml

Message ID 20230811135011.23343-3-twiederh@redhat.com
State New
Headers show
Series Generate x86 cpu features | expand

Commit Message

Tim Wiederhake Aug. 11, 2023, 1:50 p.m. UTC
This is the data file that will be used to generate the C code.
All information, including the comments, is preserved.

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
---
 target/i386/feature_word_info.xml | 1607 +++++++++++++++++++++++++++++
 1 file changed, 1607 insertions(+)
 create mode 100644 target/i386/feature_word_info.xml

Comments

Daniel P. Berrangé Aug. 17, 2023, 11:07 a.m. UTC | #1
On Fri, Aug 11, 2023 at 03:50:09PM +0200, Tim Wiederhake wrote:
> This is the data file that will be used to generate the C code.
> All information, including the comments, is preserved.
> 
> Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
> ---
>  target/i386/feature_word_info.xml | 1607 +++++++++++++++++++++++++++++
>  1 file changed, 1607 insertions(+)
>  create mode 100644 target/i386/feature_word_info.xml
> 
> diff --git a/target/i386/feature_word_info.xml b/target/i386/feature_word_info.xml
> new file mode 100644
> index 0000000000..ff741b9f5a
> --- /dev/null
> +++ b/target/i386/feature_word_info.xml
> @@ -0,0 +1,1607 @@
> +<feature_words>

I think adding data formats based on XML is pretty undesirable
for QEMU. AFAIK, the only place we've used XML is where we
needed to have interoperability with an external tool.

Can we not just do this using JSON instead, which would avoid
the need to write python parsing code as we can directly load
it into a python object.

With regards,
Daniel
Tim Wiederhake Aug. 21, 2023, 9:54 a.m. UTC | #2
On Thu, 2023-08-17 at 12:07 +0100, Daniel P. Berrangé wrote:
> On Fri, Aug 11, 2023 at 03:50:09PM +0200, Tim Wiederhake wrote:
> > This is the data file that will be used to generate the C code.
> > All information, including the comments, is preserved.
> > 
> > Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
> > ---
> >  target/i386/feature_word_info.xml | 1607
> > +++++++++++++++++++++++++++++
> >  1 file changed, 1607 insertions(+)
> >  create mode 100644 target/i386/feature_word_info.xml
> > 
> > diff --git a/target/i386/feature_word_info.xml
> > b/target/i386/feature_word_info.xml
> > new file mode 100644
> > index 0000000000..ff741b9f5a
> > --- /dev/null
> > +++ b/target/i386/feature_word_info.xml
> > @@ -0,0 +1,1607 @@
> > +<feature_words>
> 
> I think adding data formats based on XML is pretty undesirable
> for QEMU. AFAIK, the only place we've used XML is where we
> needed to have interoperability with an external tool.
> 
> Can we not just do this using JSON instead, which would avoid
> the need to write python parsing code as we can directly load
> it into a python object.
> 
> With regards,
> Daniel

I thought of json as well, but that has some drawbacks over xml here:

Integer values, e.g. "eax=0x80000008", would need to be stored in
either decimal form or as a string. Both solutions are not desirable in
my opinion.

Additionally, preserving the comments is not as straight forward.
Comments in json are a non-standard extension and not understood by all
parsers, e.g. python's json module. This would require some regex-
preprocessing that comes with its own problems.

Regards,
Tim
Michael S. Tsirkin Sept. 6, 2023, 2:21 p.m. UTC | #3
On Fri, Aug 11, 2023 at 03:50:09PM +0200, Tim Wiederhake wrote:
> This is the data file that will be used to generate the C code.
> All information, including the comments, is preserved.
> 
> Signed-off-by: Tim Wiederhake <twiederh@redhat.com>

I'd use json I think - we don't use xml widely in qemu ATM.

> ---
>  target/i386/feature_word_info.xml | 1607 +++++++++++++++++++++++++++++
>  1 file changed, 1607 insertions(+)
>  create mode 100644 target/i386/feature_word_info.xml
> 
> diff --git a/target/i386/feature_word_info.xml b/target/i386/feature_word_info.xml
> new file mode 100644
> index 0000000000..ff741b9f5a
> --- /dev/null
> +++ b/target/i386/feature_word_info.xml
> @@ -0,0 +1,1607 @@
> +<feature_words>
> +    <feature_word index="FEAT_1_EDX">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature>"fpu"</feature>
> +            <feature>"vme"</feature>
> +            <feature>"de"</feature>
> +            <feature>"pse"</feature>
> +            <feature>"tsc"</feature>
> +            <feature>"msr"</feature>
> +            <feature>"pae"</feature>
> +            <feature>"mce"</feature>
> +            <feature>"cx8"</feature>
> +            <feature>"apic"</feature>
> +            <feature></feature>
> +            <feature>"sep"</feature>
> +            <feature>"mtrr"</feature>
> +            <feature>"pge"</feature>
> +            <feature>"mca"</feature>
> +            <feature>"cmov"</feature>
> +            <feature>"pat"</feature>
> +            <feature>"pse36"</feature>
> +            <feature>"pn"</feature><!-- Intel psn -->
> +            <feature>"clflush"</feature><!-- Intel clfsh -->
> +            <feature></feature>
> +            <feature>"ds"</feature><!-- Intel dts -->
> +            <feature>"acpi"</feature>
> +            <feature>"mmx"</feature>
> +            <feature>"fxsr"</feature>
> +            <feature>"sse"</feature>
> +            <feature>"sse2"</feature>
> +            <feature>"ss"</feature>
> +            <feature>"ht"</feature><!-- Intel htt -->
> +            <feature>"tm"</feature>
> +            <feature>"ia64"</feature>
> +            <feature>"pbe"</feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>1</eax>
> +            <reg>R_EDX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_FEATURES</tcg_features>
> +    </feature_word>
> +    <feature_word index="FEAT_1_ECX">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature>"pni"</feature><!-- Intel,AMD sse3 -->
> +            <feature>"pclmulqdq"</feature>
> +            <feature>"dtes64"</feature>
> +            <feature>"monitor"</feature>
> +            <feature>"ds-cpl"</feature>
> +            <feature>"vmx"</feature>
> +            <feature>"smx"</feature>
> +            <feature>"est"</feature>
> +            <feature>"tm2"</feature>
> +            <feature>"ssse3"</feature>
> +            <feature>"cid"</feature>
> +            <feature></feature>
> +            <feature>"fma"</feature>
> +            <feature>"cx16"</feature>
> +            <feature>"xtpr"</feature>
> +            <feature>"pdcm"</feature>
> +            <feature></feature>
> +            <feature>"pcid"</feature>
> +            <feature>"dca"</feature>
> +            <feature>"sse4.1"</feature>
> +            <feature>"sse4.2"</feature>
> +            <feature>"x2apic"</feature>
> +            <feature>"movbe"</feature>
> +            <feature>"popcnt"</feature>
> +            <feature>"tsc-deadline"</feature>
> +            <feature>"aes"</feature>
> +            <feature>"xsave"</feature>
> +            <feature></feature><!-- osxsave -->
> +            <feature>"avx"</feature>
> +            <feature>"f16c"</feature>
> +            <feature>"rdrand"</feature>
> +            <feature>"hypervisor"</feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>1</eax>
> +            <reg>R_ECX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_EXT_FEATURES</tcg_features>
> +    </feature_word>
> +    <!-- Feature names that are already defined on feature_name[] but
> +     * are set on CPUID[8000_0001].EDX on AMD CPUs don't have their
> +     * names on feat_names below. They are copied automatically
> +     * to features[FEAT_8000_0001_EDX] if and only if CPU vendor is AMD. -->
> +    <feature_word index="FEAT_8000_0001_EDX">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature></feature><!-- fpu -->
> +            <feature></feature><!-- vme -->
> +            <feature></feature><!-- de -->
> +            <feature></feature><!-- pse -->
> +            <feature></feature><!-- tsc -->
> +            <feature></feature><!-- msr -->
> +            <feature></feature><!-- pae -->
> +            <feature></feature><!-- mce -->
> +            <feature></feature><!-- cx8 -->
> +            <feature></feature><!-- apic -->
> +            <feature></feature>
> +            <feature>"syscall"</feature>
> +            <feature></feature><!-- mtrr -->
> +            <feature></feature><!-- pge -->
> +            <feature></feature><!-- mca -->
> +            <feature></feature><!-- cmov -->
> +            <feature></feature><!-- pat -->
> +            <feature></feature><!-- pse36 -->
> +            <feature></feature>
> +            <feature></feature><!-- Linux mp -->
> +            <feature>"nx"</feature>
> +            <feature></feature>
> +            <feature>"mmxext"</feature>
> +            <feature></feature><!-- mmx -->
> +            <feature></feature><!-- fxsr -->
> +            <feature>"fxsr-opt"</feature>
> +            <feature>"pdpe1gb"</feature>
> +            <feature>"rdtscp"</feature>
> +            <feature></feature>
> +            <feature>"lm"</feature>
> +            <feature>"3dnowext"</feature>
> +            <feature>"3dnow"</feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>0x80000001</eax>
> +            <reg>R_EDX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_EXT2_FEATURES</tcg_features>
> +    </feature_word>
> +    <feature_word index="FEAT_8000_0001_ECX">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature>"lahf-lm"</feature>
> +            <feature>"cmp-legacy"</feature>
> +            <feature>"svm"</feature>
> +            <feature>"extapic"</feature>
> +            <feature>"cr8legacy"</feature>
> +            <feature>"abm"</feature>
> +            <feature>"sse4a"</feature>
> +            <feature>"misalignsse"</feature>
> +            <feature>"3dnowprefetch"</feature>
> +            <feature>"osvw"</feature>
> +            <feature>"ibs"</feature>
> +            <feature>"xop"</feature>
> +            <feature>"skinit"</feature>
> +            <feature>"wdt"</feature>
> +            <feature></feature>
> +            <feature>"lwp"</feature>
> +            <feature>"fma4"</feature>
> +            <feature>"tce"</feature>
> +            <feature></feature>
> +            <feature>"nodeid-msr"</feature>
> +            <feature></feature>
> +            <feature>"tbm"</feature>
> +            <feature>"topoext"</feature>
> +            <feature>"perfctr-core"</feature>
> +            <feature>"perfctr-nb"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>0x80000001</eax>
> +            <reg>R_ECX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_EXT3_FEATURES</tcg_features>
> +        <!-- * TOPOEXT is always allowed but can't be enabled blindly by
> +         * "-cpu host", as it requires consistent cache topology info
> +         * to be provided so it doesn't confuse guests. -->
> +        <no_autoenable_flags>CPUID_EXT3_TOPOEXT</no_autoenable_flags>
> +    </feature_word>
> +    <feature_word index="FEAT_C000_0001_EDX">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"xstore"</feature>
> +            <feature>"xstore-en"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"xcrypt"</feature>
> +            <feature>"xcrypt-en"</feature>
> +            <feature>"ace2"</feature>
> +            <feature>"ace2-en"</feature>
> +            <feature>"phe"</feature>
> +            <feature>"phe-en"</feature>
> +            <feature>"pmm"</feature>
> +            <feature>"pmm-en"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>0xC0000001</eax>
> +            <reg>R_EDX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_EXT4_FEATURES</tcg_features>
> +    </feature_word>
> +    <feature_word index="FEAT_KVM">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature>"kvmclock"</feature>
> +            <feature>"kvm-nopiodelay"</feature>
> +            <feature>"kvm-mmu"</feature>
> +            <feature>"kvmclock"</feature>
> +            <feature>"kvm-asyncpf"</feature>
> +            <feature>"kvm-steal-time"</feature>
> +            <feature>"kvm-pv-eoi"</feature>
> +            <feature>"kvm-pv-unhalt"</feature>
> +            <feature></feature>
> +            <feature>"kvm-pv-tlb-flush"</feature>
> +            <feature></feature>
> +            <feature>"kvm-pv-ipi"</feature>
> +            <feature>"kvm-poll-control"</feature>
> +            <feature>"kvm-pv-sched-yield"</feature>
> +            <feature>"kvm-asyncpf-int"</feature>
> +            <feature>"kvm-msi-ext-dest-id"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"kvmclock-stable-bit"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>KVM_CPUID_FEATURES</eax>
> +            <reg>R_EAX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_KVM_FEATURES</tcg_features>
> +    </feature_word>
> +    <feature_word index="FEAT_KVM_HINTS">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature>"kvm-hint-dedicated"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>KVM_CPUID_FEATURES</eax>
> +            <reg>R_EDX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_KVM_FEATURES</tcg_features>
> +        <!-- * KVM hints aren't auto-enabled by -cpu host, they need to be
> +         * explicitly enabled in the command-line. -->
> +        <no_autoenable_flags>~0U</no_autoenable_flags>
> +    </feature_word>
> +    <feature_word index="FEAT_SVM">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature>"npt"</feature>
> +            <feature>"lbrv"</feature>
> +            <feature>"svm-lock"</feature>
> +            <feature>"nrip-save"</feature>
> +            <feature>"tsc-scale"</feature>
> +            <feature>"vmcb-clean"</feature>
> +            <feature>"flushbyasid"</feature>
> +            <feature>"decodeassists"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"pause-filter"</feature>
> +            <feature></feature>
> +            <feature>"pfthreshold"</feature>
> +            <feature>"avic"</feature>
> +            <feature></feature>
> +            <feature>"v-vmsave-vmload"</feature>
> +            <feature>"vgif"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vnmi"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"svme-addr-chk"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>0x8000000A</eax>
> +            <reg>R_EDX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_SVM_FEATURES</tcg_features>
> +    </feature_word>
> +    <feature_word index="FEAT_7_0_EBX">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature>"fsgsbase"</feature>
> +            <feature>"tsc-adjust"</feature>
> +            <feature>"sgx"</feature>
> +            <feature>"bmi1"</feature>
> +            <feature>"hle"</feature>
> +            <feature>"avx2"</feature>
> +            <feature></feature>
> +            <feature>"smep"</feature>
> +            <feature>"bmi2"</feature>
> +            <feature>"erms"</feature>
> +            <feature>"invpcid"</feature>
> +            <feature>"rtm"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"mpx"</feature>
> +            <feature></feature>
> +            <feature>"avx512f"</feature>
> +            <feature>"avx512dq"</feature>
> +            <feature>"rdseed"</feature>
> +            <feature>"adx"</feature>
> +            <feature>"smap"</feature>
> +            <feature>"avx512ifma"</feature>
> +            <feature>"pcommit"</feature>
> +            <feature>"clflushopt"</feature>
> +            <feature>"clwb"</feature>
> +            <feature>"intel-pt"</feature>
> +            <feature>"avx512pf"</feature>
> +            <feature>"avx512er"</feature>
> +            <feature>"avx512cd"</feature>
> +            <feature>"sha-ni"</feature>
> +            <feature>"avx512bw"</feature>
> +            <feature>"avx512vl"</feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>7</eax>
> +            <needs_ecx>true</needs_ecx>
> +            <ecx>0</ecx>
> +            <reg>R_EBX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_7_0_EBX_FEATURES</tcg_features>
> +    </feature_word>
> +    <feature_word index="FEAT_7_0_ECX">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature></feature>
> +            <feature>"avx512vbmi"</feature>
> +            <feature>"umip"</feature>
> +            <feature>"pku"</feature>
> +            <feature></feature><!-- ospke -->
> +            <feature>"waitpkg"</feature>
> +            <feature>"avx512vbmi2"</feature>
> +            <feature></feature>
> +            <feature>"gfni"</feature>
> +            <feature>"vaes"</feature>
> +            <feature>"vpclmulqdq"</feature>
> +            <feature>"avx512vnni"</feature>
> +            <feature>"avx512bitalg"</feature>
> +            <feature></feature>
> +            <feature>"avx512-vpopcntdq"</feature>
> +            <feature></feature>
> +            <feature>"la57"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"rdpid"</feature>
> +            <feature></feature>
> +            <feature>"bus-lock-detect"</feature>
> +            <feature>"cldemote"</feature>
> +            <feature></feature>
> +            <feature>"movdiri"</feature>
> +            <feature>"movdir64b"</feature>
> +            <feature></feature>
> +            <feature>"sgxlc"</feature>
> +            <feature>"pks"</feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>7</eax>
> +            <needs_ecx>true</needs_ecx>
> +            <ecx>0</ecx>
> +            <reg>R_ECX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_7_0_ECX_FEATURES</tcg_features>
> +    </feature_word>
> +    <feature_word index="FEAT_7_0_EDX">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"avx512-4vnniw"</feature>
> +            <feature>"avx512-4fmaps"</feature>
> +            <feature>"fsrm"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"avx512-vp2intersect"</feature>
> +            <feature></feature>
> +            <feature>"md-clear"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"serialize"</feature>
> +            <feature></feature>
> +            <feature>"tsx-ldtrk"</feature>
> +            <feature></feature>
> +            <feature></feature><!-- pconfig -->
> +            <feature>"arch-lbr"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"amx-bf16"</feature>
> +            <feature>"avx512-fp16"</feature>
> +            <feature>"amx-tile"</feature>
> +            <feature>"amx-int8"</feature>
> +            <feature>"spec-ctrl"</feature>
> +            <feature>"stibp"</feature>
> +            <feature>"flush-l1d"</feature>
> +            <feature>"arch-capabilities"</feature>
> +            <feature>"core-capability"</feature>
> +            <feature>"ssbd"</feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>7</eax>
> +            <needs_ecx>true</needs_ecx>
> +            <ecx>0</ecx>
> +            <reg>R_EDX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_7_0_EDX_FEATURES</tcg_features>
> +    </feature_word>
> +    <feature_word index="FEAT_7_1_EAX">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"avx-vnni"</feature>
> +            <feature>"avx512-bf16"</feature>
> +            <feature></feature>
> +            <feature>"cmpccxadd"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"fzrm"</feature>
> +            <feature>"fsrs"</feature>
> +            <feature>"fsrc"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"amx-fp16"</feature>
> +            <feature></feature>
> +            <feature>"avx-ifma"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>7</eax>
> +            <needs_ecx>true</needs_ecx>
> +            <ecx>1</ecx>
> +            <reg>R_EAX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_7_1_EAX_FEATURES</tcg_features>
> +    </feature_word>
> +    <feature_word index="FEAT_7_1_EDX">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"avx-vnni-int8"</feature>
> +            <feature>"avx-ne-convert"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"prefetchiti"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>7</eax>
> +            <needs_ecx>true</needs_ecx>
> +            <ecx>1</ecx>
> +            <reg>R_EDX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_7_1_EDX_FEATURES</tcg_features>
> +    </feature_word>
> +    <feature_word index="FEAT_7_2_EDX">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"mcdt-no"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>7</eax>
> +            <needs_ecx>true</needs_ecx>
> +            <ecx>2</ecx>
> +            <reg>R_EDX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_7_2_EDX_FEATURES</tcg_features>
> +    </feature_word>
> +    <feature_word index="FEAT_8000_0007_EDX">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"invtsc"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>0x80000007</eax>
> +            <reg>R_EDX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_APM_FEATURES</tcg_features>
> +        <unmigratable_flags>CPUID_APM_INVTSC</unmigratable_flags>
> +    </feature_word>
> +    <feature_word index="FEAT_8000_0008_EBX">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature>"clzero"</feature>
> +            <feature></feature>
> +            <feature>"xsaveerptr"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"wbnoinvd"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"ibpb"</feature>
> +            <feature></feature>
> +            <feature>"ibrs"</feature>
> +            <feature>"amd-stibp"</feature>
> +            <feature></feature>
> +            <feature>"stibp-always-on"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"amd-ssbd"</feature>
> +            <feature>"virt-ssbd"</feature>
> +            <feature>"amd-no-ssb"</feature>
> +            <feature></feature>
> +            <feature>"amd-psfd"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>0x80000008</eax>
> +            <reg>R_EBX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_8000_0008_EBX</tcg_features>
> +        <unmigratable_flags>0</unmigratable_flags>
> +    </feature_word>
> +    <feature_word index="FEAT_8000_0021_EAX">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature>"no-nested-data-bp"</feature>
> +            <feature></feature>
> +            <feature>"lfence-always-serializing"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"null-sel-clr-base"</feature>
> +            <feature></feature>
> +            <feature>"auto-ibrs"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>0x80000021</eax>
> +            <reg>R_EAX</reg>
> +        </cpuid>
> +        <tcg_features>0</tcg_features>
> +        <unmigratable_flags>0</unmigratable_flags>
> +    </feature_word>
> +    <feature_word index="FEAT_XSAVE">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature>"xsaveopt"</feature>
> +            <feature>"xsavec"</feature>
> +            <feature>"xgetbv1"</feature>
> +            <feature>"xsaves"</feature>
> +            <feature>"xfd"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>0xd</eax>
> +            <needs_ecx>true</needs_ecx>
> +            <ecx>1</ecx>
> +            <reg>R_EAX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_XSAVE_FEATURES</tcg_features>
> +    </feature_word>
> +    <feature_word index="FEAT_XSAVE_XSS_LO">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>0xD</eax>
> +            <needs_ecx>true</needs_ecx>
> +            <ecx>1</ecx>
> +            <reg>R_ECX</reg>
> +        </cpuid>
> +    </feature_word>
> +    <feature_word index="FEAT_XSAVE_XSS_HI">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <cpuid>
> +            <eax>0xD</eax>
> +            <needs_ecx>true</needs_ecx>
> +            <ecx>1</ecx>
> +            <reg>R_EDX</reg>
> +        </cpuid>
> +    </feature_word>
> +    <feature_word index="FEAT_6_EAX">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"arat"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>6</eax>
> +            <reg>R_EAX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_6_EAX_FEATURES</tcg_features>
> +    </feature_word>
> +    <feature_word index="FEAT_XSAVE_XCR0_LO">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <cpuid>
> +            <eax>0xD</eax>
> +            <needs_ecx>true</needs_ecx>
> +            <ecx>0</ecx>
> +            <reg>R_EAX</reg>
> +        </cpuid>
> +        <tcg_features>~0U</tcg_features>
> +        <migratable_flags>XSTATE_FP_MASK | XSTATE_SSE_MASK | XSTATE_YMM_MASK | XSTATE_BNDREGS_MASK | XSTATE_BNDCSR_MASK | XSTATE_OPMASK_MASK | XSTATE_ZMM_Hi256_MASK | XSTATE_Hi16_ZMM_MASK | XSTATE_PKRU_MASK</migratable_flags>
> +    </feature_word>
> +    <feature_word index="FEAT_XSAVE_XCR0_HI">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <cpuid>
> +            <eax>0xD</eax>
> +            <needs_ecx>true</needs_ecx>
> +            <ecx>0</ecx>
> +            <reg>R_EDX</reg>
> +        </cpuid>
> +        <tcg_features>~0U</tcg_features>
> +    </feature_word>
> +    <!-- Below are MSR exposed features -->
> +    <feature_word index="FEAT_ARCH_CAPABILITIES">
> +        <type>MSR_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature>"rdctl-no"</feature>
> +            <feature>"ibrs-all"</feature>
> +            <feature>"rsba"</feature>
> +            <feature>"skip-l1dfl-vmentry"</feature>
> +            <feature>"ssb-no"</feature>
> +            <feature>"mds-no"</feature>
> +            <feature>"pschange-mc-no"</feature>
> +            <feature>"tsx-ctrl"</feature>
> +            <feature>"taa-no"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"sbdr-ssdp-no"</feature>
> +            <feature>"fbsdp-no"</feature>
> +            <feature>"psdp-no"</feature>
> +            <feature></feature>
> +            <feature>"fb-clear"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"pbrsb-no"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <msr>MSR_IA32_ARCH_CAPABILITIES</msr>
> +        <!-- * FEAT_ARCH_CAPABILITIES only affects a read-only MSR, which
> +         * cannot be read from user mode.  Therefore, it has no impact
> +         > on any user-mode operation, and warnings about unsupported
> +         * features do not matter. -->
> +        <tcg_features>~0U</tcg_features>
> +    </feature_word>
> +    <feature_word index="FEAT_CORE_CAPABILITY">
> +        <type>MSR_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"split-lock-detect"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <msr>MSR_IA32_CORE_CAPABILITY</msr>
> +    </feature_word>
> +    <feature_word index="FEAT_PERF_CAPABILITIES">
> +        <type>MSR_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"full-width-write"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <msr>MSR_IA32_PERF_CAPABILITIES</msr>
> +    </feature_word>
> +    <feature_word index="FEAT_VMX_PROCBASED_CTLS">
> +        <type>MSR_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-vintr-pending"</feature>
> +            <feature>"vmx-tsc-offset"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-hlt-exit"</feature>
> +            <feature></feature>
> +            <feature>"vmx-invlpg-exit"</feature>
> +            <feature>"vmx-mwait-exit"</feature>
> +            <feature>"vmx-rdpmc-exit"</feature>
> +            <feature>"vmx-rdtsc-exit"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-cr3-load-noexit"</feature>
> +            <feature>"vmx-cr3-store-noexit"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-cr8-load-exit"</feature>
> +            <feature>"vmx-cr8-store-exit"</feature>
> +            <feature>"vmx-flexpriority"</feature>
> +            <feature>"vmx-vnmi-pending"</feature>
> +            <feature>"vmx-movdr-exit"</feature>
> +            <feature>"vmx-io-exit"</feature>
> +            <feature>"vmx-io-bitmap"</feature>
> +            <feature></feature>
> +            <feature>"vmx-mtf"</feature>
> +            <feature>"vmx-msr-bitmap"</feature>
> +            <feature>"vmx-monitor-exit"</feature>
> +            <feature>"vmx-pause-exit"</feature>
> +            <feature>"vmx-secondary-ctls"</feature>
> +        </feat_names>
> +        <msr>MSR_IA32_VMX_TRUE_PROCBASED_CTLS</msr>
> +    </feature_word>
> +    <feature_word index="FEAT_VMX_SECONDARY_CTLS">
> +        <type>MSR_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature>"vmx-apicv-xapic"</feature>
> +            <feature>"vmx-ept"</feature>
> +            <feature>"vmx-desc-exit"</feature>
> +            <feature>"vmx-rdtscp-exit"</feature>
> +            <feature>"vmx-apicv-x2apic"</feature>
> +            <feature>"vmx-vpid"</feature>
> +            <feature>"vmx-wbinvd-exit"</feature>
> +            <feature>"vmx-unrestricted-guest"</feature>
> +            <feature>"vmx-apicv-register"</feature>
> +            <feature>"vmx-apicv-vid"</feature>
> +            <feature>"vmx-ple"</feature>
> +            <feature>"vmx-rdrand-exit"</feature>
> +            <feature>"vmx-invpcid-exit"</feature>
> +            <feature>"vmx-vmfunc"</feature>
> +            <feature>"vmx-shadow-vmcs"</feature>
> +            <feature>"vmx-encls-exit"</feature>
> +            <feature>"vmx-rdseed-exit"</feature>
> +            <feature>"vmx-pml"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-xsaves"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-tsc-scaling"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <msr>MSR_IA32_VMX_PROCBASED_CTLS2</msr>
> +    </feature_word>
> +    <feature_word index="FEAT_VMX_PINBASED_CTLS">
> +        <type>MSR_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature>"vmx-intr-exit"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-nmi-exit"</feature>
> +            <feature></feature>
> +            <feature>"vmx-vnmi"</feature>
> +            <feature>"vmx-preemption-timer"</feature>
> +            <feature>"vmx-posted-intr"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <msr>MSR_IA32_VMX_TRUE_PINBASED_CTLS</msr>
> +    </feature_word>
> +    <feature_word index="FEAT_VMX_EXIT_CTLS">
> +        <type>MSR_FEATURE_WORD</type>
> +        <!-- * VMX_VM_EXIT_HOST_ADDR_SPACE_SIZE is copied from
> +         * the LM CPUID bit. -->
> +        <feat_names>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-exit-nosave-debugctl"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature><!-- vmx-exit-host-addr-space-size -->
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-exit-load-perf-global-ctrl"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-exit-ack-intr"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-exit-save-pat"</feature>
> +            <feature>"vmx-exit-load-pat"</feature>
> +            <feature>"vmx-exit-save-efer"</feature>
> +            <feature>"vmx-exit-load-efer"</feature>
> +            <feature>"vmx-exit-save-preemption-timer"</feature>
> +            <feature>"vmx-exit-clear-bndcfgs"</feature>
> +            <feature></feature>
> +            <feature>"vmx-exit-clear-rtit-ctl"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-exit-load-pkrs"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <msr>MSR_IA32_VMX_TRUE_EXIT_CTLS</msr>
> +    </feature_word>
> +    <feature_word index="FEAT_VMX_ENTRY_CTLS">
> +        <type>MSR_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-entry-noload-debugctl"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-entry-ia32e-mode"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-entry-load-perf-global-ctrl"</feature>
> +            <feature>"vmx-entry-load-pat"</feature>
> +            <feature>"vmx-entry-load-efer"</feature>
> +            <feature>"vmx-entry-load-bndcfgs"</feature>
> +            <feature></feature>
> +            <feature>"vmx-entry-load-rtit-ctl"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-entry-load-pkrs"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <msr>MSR_IA32_VMX_TRUE_ENTRY_CTLS</msr>
> +    </feature_word>
> +    <feature_word index="FEAT_VMX_MISC">
> +        <type>MSR_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-store-lma"</feature>
> +            <feature>"vmx-activity-hlt"</feature>
> +            <feature>"vmx-activity-shutdown"</feature>
> +            <feature>"vmx-activity-wait-sipi"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-vmwrite-vmexit-fields"</feature>
> +            <feature>"vmx-zero-len-inject"</feature>
> +            <feature></feature>
> +        </feat_names>
> +        <msr>MSR_IA32_VMX_MISC</msr>
> +    </feature_word>
> +    <feature_word index="FEAT_VMX_EPT_VPID_CAPS">
> +        <type>MSR_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature>"vmx-ept-execonly"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-page-walk-4"</feature>
> +            <feature>"vmx-page-walk-5"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-ept-2mb"</feature>
> +            <feature>"vmx-ept-1gb"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-invept"</feature>
> +            <feature>"vmx-eptad"</feature>
> +            <feature>"vmx-ept-advanced-exitinfo"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-invept-single-context"</feature>
> +            <feature>"vmx-invept-all-context"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-invvpid"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-invvpid-single-addr"</feature>
> +            <feature>"vmx-invept-single-context"</feature>
> +            <feature>"vmx-invvpid-all-context"</feature>
> +            <feature>"vmx-invept-single-context-noglobals"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <msr>MSR_IA32_VMX_EPT_VPID_CAP</msr>
> +    </feature_word>
> +    <feature_word index="FEAT_VMX_BASIC">
> +        <type>MSR_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"vmx-ins-outs"</feature>
> +            <feature>"vmx-true-ctls"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <msr>MSR_IA32_VMX_BASIC</msr>
> +        <!-- Just to be safe - we don't support setting the MSEG version field. -->
> +        <no_autoenable_flags>MSR_VMX_BASIC_DUAL_MONITOR</no_autoenable_flags>
> +    </feature_word>
> +    <feature_word index="FEAT_VMX_VMFUNC">
> +        <type>MSR_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature>"vmx-eptp-switching"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <msr>MSR_IA32_VMX_VMFUNC</msr>
> +    </feature_word>
> +    <feature_word index="FEAT_14_0_ECX">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"intel-pt-lip"</feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>0x14</eax>
> +            <needs_ecx>true</needs_ecx>
> +            <ecx>0</ecx>
> +            <reg>R_ECX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_14_0_ECX_FEATURES</tcg_features>
> +    </feature_word>
> +    <feature_word index="FEAT_SGX_12_0_EAX">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature>"sgx1"</feature>
> +            <feature>"sgx2"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"sgx-edeccssa"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>0x12</eax>
> +            <needs_ecx>true</needs_ecx>
> +            <ecx>0</ecx>
> +            <reg>R_EAX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_SGX_12_0_EAX_FEATURES</tcg_features>
> +    </feature_word>
> +    <feature_word index="FEAT_SGX_12_0_EBX">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature>"sgx-exinfo"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>0x12</eax>
> +            <needs_ecx>true</needs_ecx>
> +            <ecx>0</ecx>
> +            <reg>R_EBX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_SGX_12_0_EBX_FEATURES</tcg_features>
> +    </feature_word>
> +    <feature_word index="FEAT_SGX_12_1_EAX">
> +        <type>CPUID_FEATURE_WORD</type>
> +        <feat_names>
> +            <feature></feature>
> +            <feature>"sgx-debug"</feature>
> +            <feature>"sgx-mode64"</feature>
> +            <feature></feature>
> +            <feature>"sgx-provisionkey"</feature>
> +            <feature>"sgx-tokenkey"</feature>
> +            <feature></feature>
> +            <feature>"sgx-kss"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature>"sgx-aex-notify"</feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +            <feature></feature>
> +        </feat_names>
> +        <cpuid>
> +            <eax>0x12</eax>
> +            <needs_ecx>true</needs_ecx>
> +            <ecx>1</ecx>
> +            <reg>R_EAX</reg>
> +        </cpuid>
> +        <tcg_features>TCG_SGX_12_1_EAX_FEATURES</tcg_features>
> +    </feature_word>
> +</feature_words>
> -- 
> 2.39.2
> 
>
Philippe Mathieu-Daudé Sept. 6, 2023, 2:33 p.m. UTC | #4
On 21/8/23 11:54, Tim Wiederhake wrote:
> On Thu, 2023-08-17 at 12:07 +0100, Daniel P. Berrangé wrote:
>> On Fri, Aug 11, 2023 at 03:50:09PM +0200, Tim Wiederhake wrote:
>>> This is the data file that will be used to generate the C code.
>>> All information, including the comments, is preserved.
>>>
>>> Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
>>> ---
>>>   target/i386/feature_word_info.xml | 1607
>>> +++++++++++++++++++++++++++++
>>>   1 file changed, 1607 insertions(+)
>>>   create mode 100644 target/i386/feature_word_info.xml
>>>
>>> diff --git a/target/i386/feature_word_info.xml
>>> b/target/i386/feature_word_info.xml
>>> new file mode 100644
>>> index 0000000000..ff741b9f5a
>>> --- /dev/null
>>> +++ b/target/i386/feature_word_info.xml
>>> @@ -0,0 +1,1607 @@
>>> +<feature_words>
>>
>> I think adding data formats based on XML is pretty undesirable
>> for QEMU. AFAIK, the only place we've used XML is where we
>> needed to have interoperability with an external tool.
>>
>> Can we not just do this using JSON instead, which would avoid
>> the need to write python parsing code as we can directly load
>> it into a python object.
>>
>> With regards,
>> Daniel
> 
> I thought of json as well, but that has some drawbacks over xml here:
> 
> Integer values, e.g. "eax=0x80000008", would need to be stored in
> either decimal form or as a string. Both solutions are not desirable in
> my opinion.
> 
> Additionally, preserving the comments is not as straight forward.
> Comments in json are a non-standard extension and not understood by all
> parsers, e.g. python's json module. This would require some regex-
> preprocessing that comes with its own problems.

Would YAML work?
diff mbox series

Patch

diff --git a/target/i386/feature_word_info.xml b/target/i386/feature_word_info.xml
new file mode 100644
index 0000000000..ff741b9f5a
--- /dev/null
+++ b/target/i386/feature_word_info.xml
@@ -0,0 +1,1607 @@ 
+<feature_words>
+    <feature_word index="FEAT_1_EDX">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature>"fpu"</feature>
+            <feature>"vme"</feature>
+            <feature>"de"</feature>
+            <feature>"pse"</feature>
+            <feature>"tsc"</feature>
+            <feature>"msr"</feature>
+            <feature>"pae"</feature>
+            <feature>"mce"</feature>
+            <feature>"cx8"</feature>
+            <feature>"apic"</feature>
+            <feature></feature>
+            <feature>"sep"</feature>
+            <feature>"mtrr"</feature>
+            <feature>"pge"</feature>
+            <feature>"mca"</feature>
+            <feature>"cmov"</feature>
+            <feature>"pat"</feature>
+            <feature>"pse36"</feature>
+            <feature>"pn"</feature><!-- Intel psn -->
+            <feature>"clflush"</feature><!-- Intel clfsh -->
+            <feature></feature>
+            <feature>"ds"</feature><!-- Intel dts -->
+            <feature>"acpi"</feature>
+            <feature>"mmx"</feature>
+            <feature>"fxsr"</feature>
+            <feature>"sse"</feature>
+            <feature>"sse2"</feature>
+            <feature>"ss"</feature>
+            <feature>"ht"</feature><!-- Intel htt -->
+            <feature>"tm"</feature>
+            <feature>"ia64"</feature>
+            <feature>"pbe"</feature>
+        </feat_names>
+        <cpuid>
+            <eax>1</eax>
+            <reg>R_EDX</reg>
+        </cpuid>
+        <tcg_features>TCG_FEATURES</tcg_features>
+    </feature_word>
+    <feature_word index="FEAT_1_ECX">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature>"pni"</feature><!-- Intel,AMD sse3 -->
+            <feature>"pclmulqdq"</feature>
+            <feature>"dtes64"</feature>
+            <feature>"monitor"</feature>
+            <feature>"ds-cpl"</feature>
+            <feature>"vmx"</feature>
+            <feature>"smx"</feature>
+            <feature>"est"</feature>
+            <feature>"tm2"</feature>
+            <feature>"ssse3"</feature>
+            <feature>"cid"</feature>
+            <feature></feature>
+            <feature>"fma"</feature>
+            <feature>"cx16"</feature>
+            <feature>"xtpr"</feature>
+            <feature>"pdcm"</feature>
+            <feature></feature>
+            <feature>"pcid"</feature>
+            <feature>"dca"</feature>
+            <feature>"sse4.1"</feature>
+            <feature>"sse4.2"</feature>
+            <feature>"x2apic"</feature>
+            <feature>"movbe"</feature>
+            <feature>"popcnt"</feature>
+            <feature>"tsc-deadline"</feature>
+            <feature>"aes"</feature>
+            <feature>"xsave"</feature>
+            <feature></feature><!-- osxsave -->
+            <feature>"avx"</feature>
+            <feature>"f16c"</feature>
+            <feature>"rdrand"</feature>
+            <feature>"hypervisor"</feature>
+        </feat_names>
+        <cpuid>
+            <eax>1</eax>
+            <reg>R_ECX</reg>
+        </cpuid>
+        <tcg_features>TCG_EXT_FEATURES</tcg_features>
+    </feature_word>
+    <!-- Feature names that are already defined on feature_name[] but
+     * are set on CPUID[8000_0001].EDX on AMD CPUs don't have their
+     * names on feat_names below. They are copied automatically
+     * to features[FEAT_8000_0001_EDX] if and only if CPU vendor is AMD. -->
+    <feature_word index="FEAT_8000_0001_EDX">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature></feature><!-- fpu -->
+            <feature></feature><!-- vme -->
+            <feature></feature><!-- de -->
+            <feature></feature><!-- pse -->
+            <feature></feature><!-- tsc -->
+            <feature></feature><!-- msr -->
+            <feature></feature><!-- pae -->
+            <feature></feature><!-- mce -->
+            <feature></feature><!-- cx8 -->
+            <feature></feature><!-- apic -->
+            <feature></feature>
+            <feature>"syscall"</feature>
+            <feature></feature><!-- mtrr -->
+            <feature></feature><!-- pge -->
+            <feature></feature><!-- mca -->
+            <feature></feature><!-- cmov -->
+            <feature></feature><!-- pat -->
+            <feature></feature><!-- pse36 -->
+            <feature></feature>
+            <feature></feature><!-- Linux mp -->
+            <feature>"nx"</feature>
+            <feature></feature>
+            <feature>"mmxext"</feature>
+            <feature></feature><!-- mmx -->
+            <feature></feature><!-- fxsr -->
+            <feature>"fxsr-opt"</feature>
+            <feature>"pdpe1gb"</feature>
+            <feature>"rdtscp"</feature>
+            <feature></feature>
+            <feature>"lm"</feature>
+            <feature>"3dnowext"</feature>
+            <feature>"3dnow"</feature>
+        </feat_names>
+        <cpuid>
+            <eax>0x80000001</eax>
+            <reg>R_EDX</reg>
+        </cpuid>
+        <tcg_features>TCG_EXT2_FEATURES</tcg_features>
+    </feature_word>
+    <feature_word index="FEAT_8000_0001_ECX">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature>"lahf-lm"</feature>
+            <feature>"cmp-legacy"</feature>
+            <feature>"svm"</feature>
+            <feature>"extapic"</feature>
+            <feature>"cr8legacy"</feature>
+            <feature>"abm"</feature>
+            <feature>"sse4a"</feature>
+            <feature>"misalignsse"</feature>
+            <feature>"3dnowprefetch"</feature>
+            <feature>"osvw"</feature>
+            <feature>"ibs"</feature>
+            <feature>"xop"</feature>
+            <feature>"skinit"</feature>
+            <feature>"wdt"</feature>
+            <feature></feature>
+            <feature>"lwp"</feature>
+            <feature>"fma4"</feature>
+            <feature>"tce"</feature>
+            <feature></feature>
+            <feature>"nodeid-msr"</feature>
+            <feature></feature>
+            <feature>"tbm"</feature>
+            <feature>"topoext"</feature>
+            <feature>"perfctr-core"</feature>
+            <feature>"perfctr-nb"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <cpuid>
+            <eax>0x80000001</eax>
+            <reg>R_ECX</reg>
+        </cpuid>
+        <tcg_features>TCG_EXT3_FEATURES</tcg_features>
+        <!-- * TOPOEXT is always allowed but can't be enabled blindly by
+         * "-cpu host", as it requires consistent cache topology info
+         * to be provided so it doesn't confuse guests. -->
+        <no_autoenable_flags>CPUID_EXT3_TOPOEXT</no_autoenable_flags>
+    </feature_word>
+    <feature_word index="FEAT_C000_0001_EDX">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature></feature>
+            <feature></feature>
+            <feature>"xstore"</feature>
+            <feature>"xstore-en"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"xcrypt"</feature>
+            <feature>"xcrypt-en"</feature>
+            <feature>"ace2"</feature>
+            <feature>"ace2-en"</feature>
+            <feature>"phe"</feature>
+            <feature>"phe-en"</feature>
+            <feature>"pmm"</feature>
+            <feature>"pmm-en"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <cpuid>
+            <eax>0xC0000001</eax>
+            <reg>R_EDX</reg>
+        </cpuid>
+        <tcg_features>TCG_EXT4_FEATURES</tcg_features>
+    </feature_word>
+    <feature_word index="FEAT_KVM">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature>"kvmclock"</feature>
+            <feature>"kvm-nopiodelay"</feature>
+            <feature>"kvm-mmu"</feature>
+            <feature>"kvmclock"</feature>
+            <feature>"kvm-asyncpf"</feature>
+            <feature>"kvm-steal-time"</feature>
+            <feature>"kvm-pv-eoi"</feature>
+            <feature>"kvm-pv-unhalt"</feature>
+            <feature></feature>
+            <feature>"kvm-pv-tlb-flush"</feature>
+            <feature></feature>
+            <feature>"kvm-pv-ipi"</feature>
+            <feature>"kvm-poll-control"</feature>
+            <feature>"kvm-pv-sched-yield"</feature>
+            <feature>"kvm-asyncpf-int"</feature>
+            <feature>"kvm-msi-ext-dest-id"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"kvmclock-stable-bit"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <cpuid>
+            <eax>KVM_CPUID_FEATURES</eax>
+            <reg>R_EAX</reg>
+        </cpuid>
+        <tcg_features>TCG_KVM_FEATURES</tcg_features>
+    </feature_word>
+    <feature_word index="FEAT_KVM_HINTS">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature>"kvm-hint-dedicated"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <cpuid>
+            <eax>KVM_CPUID_FEATURES</eax>
+            <reg>R_EDX</reg>
+        </cpuid>
+        <tcg_features>TCG_KVM_FEATURES</tcg_features>
+        <!-- * KVM hints aren't auto-enabled by -cpu host, they need to be
+         * explicitly enabled in the command-line. -->
+        <no_autoenable_flags>~0U</no_autoenable_flags>
+    </feature_word>
+    <feature_word index="FEAT_SVM">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature>"npt"</feature>
+            <feature>"lbrv"</feature>
+            <feature>"svm-lock"</feature>
+            <feature>"nrip-save"</feature>
+            <feature>"tsc-scale"</feature>
+            <feature>"vmcb-clean"</feature>
+            <feature>"flushbyasid"</feature>
+            <feature>"decodeassists"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"pause-filter"</feature>
+            <feature></feature>
+            <feature>"pfthreshold"</feature>
+            <feature>"avic"</feature>
+            <feature></feature>
+            <feature>"v-vmsave-vmload"</feature>
+            <feature>"vgif"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vnmi"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"svme-addr-chk"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <cpuid>
+            <eax>0x8000000A</eax>
+            <reg>R_EDX</reg>
+        </cpuid>
+        <tcg_features>TCG_SVM_FEATURES</tcg_features>
+    </feature_word>
+    <feature_word index="FEAT_7_0_EBX">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature>"fsgsbase"</feature>
+            <feature>"tsc-adjust"</feature>
+            <feature>"sgx"</feature>
+            <feature>"bmi1"</feature>
+            <feature>"hle"</feature>
+            <feature>"avx2"</feature>
+            <feature></feature>
+            <feature>"smep"</feature>
+            <feature>"bmi2"</feature>
+            <feature>"erms"</feature>
+            <feature>"invpcid"</feature>
+            <feature>"rtm"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"mpx"</feature>
+            <feature></feature>
+            <feature>"avx512f"</feature>
+            <feature>"avx512dq"</feature>
+            <feature>"rdseed"</feature>
+            <feature>"adx"</feature>
+            <feature>"smap"</feature>
+            <feature>"avx512ifma"</feature>
+            <feature>"pcommit"</feature>
+            <feature>"clflushopt"</feature>
+            <feature>"clwb"</feature>
+            <feature>"intel-pt"</feature>
+            <feature>"avx512pf"</feature>
+            <feature>"avx512er"</feature>
+            <feature>"avx512cd"</feature>
+            <feature>"sha-ni"</feature>
+            <feature>"avx512bw"</feature>
+            <feature>"avx512vl"</feature>
+        </feat_names>
+        <cpuid>
+            <eax>7</eax>
+            <needs_ecx>true</needs_ecx>
+            <ecx>0</ecx>
+            <reg>R_EBX</reg>
+        </cpuid>
+        <tcg_features>TCG_7_0_EBX_FEATURES</tcg_features>
+    </feature_word>
+    <feature_word index="FEAT_7_0_ECX">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature></feature>
+            <feature>"avx512vbmi"</feature>
+            <feature>"umip"</feature>
+            <feature>"pku"</feature>
+            <feature></feature><!-- ospke -->
+            <feature>"waitpkg"</feature>
+            <feature>"avx512vbmi2"</feature>
+            <feature></feature>
+            <feature>"gfni"</feature>
+            <feature>"vaes"</feature>
+            <feature>"vpclmulqdq"</feature>
+            <feature>"avx512vnni"</feature>
+            <feature>"avx512bitalg"</feature>
+            <feature></feature>
+            <feature>"avx512-vpopcntdq"</feature>
+            <feature></feature>
+            <feature>"la57"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"rdpid"</feature>
+            <feature></feature>
+            <feature>"bus-lock-detect"</feature>
+            <feature>"cldemote"</feature>
+            <feature></feature>
+            <feature>"movdiri"</feature>
+            <feature>"movdir64b"</feature>
+            <feature></feature>
+            <feature>"sgxlc"</feature>
+            <feature>"pks"</feature>
+        </feat_names>
+        <cpuid>
+            <eax>7</eax>
+            <needs_ecx>true</needs_ecx>
+            <ecx>0</ecx>
+            <reg>R_ECX</reg>
+        </cpuid>
+        <tcg_features>TCG_7_0_ECX_FEATURES</tcg_features>
+    </feature_word>
+    <feature_word index="FEAT_7_0_EDX">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature></feature>
+            <feature></feature>
+            <feature>"avx512-4vnniw"</feature>
+            <feature>"avx512-4fmaps"</feature>
+            <feature>"fsrm"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"avx512-vp2intersect"</feature>
+            <feature></feature>
+            <feature>"md-clear"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"serialize"</feature>
+            <feature></feature>
+            <feature>"tsx-ldtrk"</feature>
+            <feature></feature>
+            <feature></feature><!-- pconfig -->
+            <feature>"arch-lbr"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"amx-bf16"</feature>
+            <feature>"avx512-fp16"</feature>
+            <feature>"amx-tile"</feature>
+            <feature>"amx-int8"</feature>
+            <feature>"spec-ctrl"</feature>
+            <feature>"stibp"</feature>
+            <feature>"flush-l1d"</feature>
+            <feature>"arch-capabilities"</feature>
+            <feature>"core-capability"</feature>
+            <feature>"ssbd"</feature>
+        </feat_names>
+        <cpuid>
+            <eax>7</eax>
+            <needs_ecx>true</needs_ecx>
+            <ecx>0</ecx>
+            <reg>R_EDX</reg>
+        </cpuid>
+        <tcg_features>TCG_7_0_EDX_FEATURES</tcg_features>
+    </feature_word>
+    <feature_word index="FEAT_7_1_EAX">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"avx-vnni"</feature>
+            <feature>"avx512-bf16"</feature>
+            <feature></feature>
+            <feature>"cmpccxadd"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"fzrm"</feature>
+            <feature>"fsrs"</feature>
+            <feature>"fsrc"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"amx-fp16"</feature>
+            <feature></feature>
+            <feature>"avx-ifma"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <cpuid>
+            <eax>7</eax>
+            <needs_ecx>true</needs_ecx>
+            <ecx>1</ecx>
+            <reg>R_EAX</reg>
+        </cpuid>
+        <tcg_features>TCG_7_1_EAX_FEATURES</tcg_features>
+    </feature_word>
+    <feature_word index="FEAT_7_1_EDX">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"avx-vnni-int8"</feature>
+            <feature>"avx-ne-convert"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"prefetchiti"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <cpuid>
+            <eax>7</eax>
+            <needs_ecx>true</needs_ecx>
+            <ecx>1</ecx>
+            <reg>R_EDX</reg>
+        </cpuid>
+        <tcg_features>TCG_7_1_EDX_FEATURES</tcg_features>
+    </feature_word>
+    <feature_word index="FEAT_7_2_EDX">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"mcdt-no"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <cpuid>
+            <eax>7</eax>
+            <needs_ecx>true</needs_ecx>
+            <ecx>2</ecx>
+            <reg>R_EDX</reg>
+        </cpuid>
+        <tcg_features>TCG_7_2_EDX_FEATURES</tcg_features>
+    </feature_word>
+    <feature_word index="FEAT_8000_0007_EDX">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"invtsc"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <cpuid>
+            <eax>0x80000007</eax>
+            <reg>R_EDX</reg>
+        </cpuid>
+        <tcg_features>TCG_APM_FEATURES</tcg_features>
+        <unmigratable_flags>CPUID_APM_INVTSC</unmigratable_flags>
+    </feature_word>
+    <feature_word index="FEAT_8000_0008_EBX">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature>"clzero"</feature>
+            <feature></feature>
+            <feature>"xsaveerptr"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"wbnoinvd"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"ibpb"</feature>
+            <feature></feature>
+            <feature>"ibrs"</feature>
+            <feature>"amd-stibp"</feature>
+            <feature></feature>
+            <feature>"stibp-always-on"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"amd-ssbd"</feature>
+            <feature>"virt-ssbd"</feature>
+            <feature>"amd-no-ssb"</feature>
+            <feature></feature>
+            <feature>"amd-psfd"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <cpuid>
+            <eax>0x80000008</eax>
+            <reg>R_EBX</reg>
+        </cpuid>
+        <tcg_features>TCG_8000_0008_EBX</tcg_features>
+        <unmigratable_flags>0</unmigratable_flags>
+    </feature_word>
+    <feature_word index="FEAT_8000_0021_EAX">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature>"no-nested-data-bp"</feature>
+            <feature></feature>
+            <feature>"lfence-always-serializing"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"null-sel-clr-base"</feature>
+            <feature></feature>
+            <feature>"auto-ibrs"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <cpuid>
+            <eax>0x80000021</eax>
+            <reg>R_EAX</reg>
+        </cpuid>
+        <tcg_features>0</tcg_features>
+        <unmigratable_flags>0</unmigratable_flags>
+    </feature_word>
+    <feature_word index="FEAT_XSAVE">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature>"xsaveopt"</feature>
+            <feature>"xsavec"</feature>
+            <feature>"xgetbv1"</feature>
+            <feature>"xsaves"</feature>
+            <feature>"xfd"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <cpuid>
+            <eax>0xd</eax>
+            <needs_ecx>true</needs_ecx>
+            <ecx>1</ecx>
+            <reg>R_EAX</reg>
+        </cpuid>
+        <tcg_features>TCG_XSAVE_FEATURES</tcg_features>
+    </feature_word>
+    <feature_word index="FEAT_XSAVE_XSS_LO">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <cpuid>
+            <eax>0xD</eax>
+            <needs_ecx>true</needs_ecx>
+            <ecx>1</ecx>
+            <reg>R_ECX</reg>
+        </cpuid>
+    </feature_word>
+    <feature_word index="FEAT_XSAVE_XSS_HI">
+        <type>CPUID_FEATURE_WORD</type>
+        <cpuid>
+            <eax>0xD</eax>
+            <needs_ecx>true</needs_ecx>
+            <ecx>1</ecx>
+            <reg>R_EDX</reg>
+        </cpuid>
+    </feature_word>
+    <feature_word index="FEAT_6_EAX">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature></feature>
+            <feature></feature>
+            <feature>"arat"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <cpuid>
+            <eax>6</eax>
+            <reg>R_EAX</reg>
+        </cpuid>
+        <tcg_features>TCG_6_EAX_FEATURES</tcg_features>
+    </feature_word>
+    <feature_word index="FEAT_XSAVE_XCR0_LO">
+        <type>CPUID_FEATURE_WORD</type>
+        <cpuid>
+            <eax>0xD</eax>
+            <needs_ecx>true</needs_ecx>
+            <ecx>0</ecx>
+            <reg>R_EAX</reg>
+        </cpuid>
+        <tcg_features>~0U</tcg_features>
+        <migratable_flags>XSTATE_FP_MASK | XSTATE_SSE_MASK | XSTATE_YMM_MASK | XSTATE_BNDREGS_MASK | XSTATE_BNDCSR_MASK | XSTATE_OPMASK_MASK | XSTATE_ZMM_Hi256_MASK | XSTATE_Hi16_ZMM_MASK | XSTATE_PKRU_MASK</migratable_flags>
+    </feature_word>
+    <feature_word index="FEAT_XSAVE_XCR0_HI">
+        <type>CPUID_FEATURE_WORD</type>
+        <cpuid>
+            <eax>0xD</eax>
+            <needs_ecx>true</needs_ecx>
+            <ecx>0</ecx>
+            <reg>R_EDX</reg>
+        </cpuid>
+        <tcg_features>~0U</tcg_features>
+    </feature_word>
+    <!-- Below are MSR exposed features -->
+    <feature_word index="FEAT_ARCH_CAPABILITIES">
+        <type>MSR_FEATURE_WORD</type>
+        <feat_names>
+            <feature>"rdctl-no"</feature>
+            <feature>"ibrs-all"</feature>
+            <feature>"rsba"</feature>
+            <feature>"skip-l1dfl-vmentry"</feature>
+            <feature>"ssb-no"</feature>
+            <feature>"mds-no"</feature>
+            <feature>"pschange-mc-no"</feature>
+            <feature>"tsx-ctrl"</feature>
+            <feature>"taa-no"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"sbdr-ssdp-no"</feature>
+            <feature>"fbsdp-no"</feature>
+            <feature>"psdp-no"</feature>
+            <feature></feature>
+            <feature>"fb-clear"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"pbrsb-no"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <msr>MSR_IA32_ARCH_CAPABILITIES</msr>
+        <!-- * FEAT_ARCH_CAPABILITIES only affects a read-only MSR, which
+         * cannot be read from user mode.  Therefore, it has no impact
+         > on any user-mode operation, and warnings about unsupported
+         * features do not matter. -->
+        <tcg_features>~0U</tcg_features>
+    </feature_word>
+    <feature_word index="FEAT_CORE_CAPABILITY">
+        <type>MSR_FEATURE_WORD</type>
+        <feat_names>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"split-lock-detect"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <msr>MSR_IA32_CORE_CAPABILITY</msr>
+    </feature_word>
+    <feature_word index="FEAT_PERF_CAPABILITIES">
+        <type>MSR_FEATURE_WORD</type>
+        <feat_names>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"full-width-write"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <msr>MSR_IA32_PERF_CAPABILITIES</msr>
+    </feature_word>
+    <feature_word index="FEAT_VMX_PROCBASED_CTLS">
+        <type>MSR_FEATURE_WORD</type>
+        <feat_names>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-vintr-pending"</feature>
+            <feature>"vmx-tsc-offset"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-hlt-exit"</feature>
+            <feature></feature>
+            <feature>"vmx-invlpg-exit"</feature>
+            <feature>"vmx-mwait-exit"</feature>
+            <feature>"vmx-rdpmc-exit"</feature>
+            <feature>"vmx-rdtsc-exit"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-cr3-load-noexit"</feature>
+            <feature>"vmx-cr3-store-noexit"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-cr8-load-exit"</feature>
+            <feature>"vmx-cr8-store-exit"</feature>
+            <feature>"vmx-flexpriority"</feature>
+            <feature>"vmx-vnmi-pending"</feature>
+            <feature>"vmx-movdr-exit"</feature>
+            <feature>"vmx-io-exit"</feature>
+            <feature>"vmx-io-bitmap"</feature>
+            <feature></feature>
+            <feature>"vmx-mtf"</feature>
+            <feature>"vmx-msr-bitmap"</feature>
+            <feature>"vmx-monitor-exit"</feature>
+            <feature>"vmx-pause-exit"</feature>
+            <feature>"vmx-secondary-ctls"</feature>
+        </feat_names>
+        <msr>MSR_IA32_VMX_TRUE_PROCBASED_CTLS</msr>
+    </feature_word>
+    <feature_word index="FEAT_VMX_SECONDARY_CTLS">
+        <type>MSR_FEATURE_WORD</type>
+        <feat_names>
+            <feature>"vmx-apicv-xapic"</feature>
+            <feature>"vmx-ept"</feature>
+            <feature>"vmx-desc-exit"</feature>
+            <feature>"vmx-rdtscp-exit"</feature>
+            <feature>"vmx-apicv-x2apic"</feature>
+            <feature>"vmx-vpid"</feature>
+            <feature>"vmx-wbinvd-exit"</feature>
+            <feature>"vmx-unrestricted-guest"</feature>
+            <feature>"vmx-apicv-register"</feature>
+            <feature>"vmx-apicv-vid"</feature>
+            <feature>"vmx-ple"</feature>
+            <feature>"vmx-rdrand-exit"</feature>
+            <feature>"vmx-invpcid-exit"</feature>
+            <feature>"vmx-vmfunc"</feature>
+            <feature>"vmx-shadow-vmcs"</feature>
+            <feature>"vmx-encls-exit"</feature>
+            <feature>"vmx-rdseed-exit"</feature>
+            <feature>"vmx-pml"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-xsaves"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-tsc-scaling"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <msr>MSR_IA32_VMX_PROCBASED_CTLS2</msr>
+    </feature_word>
+    <feature_word index="FEAT_VMX_PINBASED_CTLS">
+        <type>MSR_FEATURE_WORD</type>
+        <feat_names>
+            <feature>"vmx-intr-exit"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-nmi-exit"</feature>
+            <feature></feature>
+            <feature>"vmx-vnmi"</feature>
+            <feature>"vmx-preemption-timer"</feature>
+            <feature>"vmx-posted-intr"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <msr>MSR_IA32_VMX_TRUE_PINBASED_CTLS</msr>
+    </feature_word>
+    <feature_word index="FEAT_VMX_EXIT_CTLS">
+        <type>MSR_FEATURE_WORD</type>
+        <!-- * VMX_VM_EXIT_HOST_ADDR_SPACE_SIZE is copied from
+         * the LM CPUID bit. -->
+        <feat_names>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-exit-nosave-debugctl"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature><!-- vmx-exit-host-addr-space-size -->
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-exit-load-perf-global-ctrl"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-exit-ack-intr"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-exit-save-pat"</feature>
+            <feature>"vmx-exit-load-pat"</feature>
+            <feature>"vmx-exit-save-efer"</feature>
+            <feature>"vmx-exit-load-efer"</feature>
+            <feature>"vmx-exit-save-preemption-timer"</feature>
+            <feature>"vmx-exit-clear-bndcfgs"</feature>
+            <feature></feature>
+            <feature>"vmx-exit-clear-rtit-ctl"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-exit-load-pkrs"</feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <msr>MSR_IA32_VMX_TRUE_EXIT_CTLS</msr>
+    </feature_word>
+    <feature_word index="FEAT_VMX_ENTRY_CTLS">
+        <type>MSR_FEATURE_WORD</type>
+        <feat_names>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-entry-noload-debugctl"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-entry-ia32e-mode"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-entry-load-perf-global-ctrl"</feature>
+            <feature>"vmx-entry-load-pat"</feature>
+            <feature>"vmx-entry-load-efer"</feature>
+            <feature>"vmx-entry-load-bndcfgs"</feature>
+            <feature></feature>
+            <feature>"vmx-entry-load-rtit-ctl"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-entry-load-pkrs"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <msr>MSR_IA32_VMX_TRUE_ENTRY_CTLS</msr>
+    </feature_word>
+    <feature_word index="FEAT_VMX_MISC">
+        <type>MSR_FEATURE_WORD</type>
+        <feat_names>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-store-lma"</feature>
+            <feature>"vmx-activity-hlt"</feature>
+            <feature>"vmx-activity-shutdown"</feature>
+            <feature>"vmx-activity-wait-sipi"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-vmwrite-vmexit-fields"</feature>
+            <feature>"vmx-zero-len-inject"</feature>
+            <feature></feature>
+        </feat_names>
+        <msr>MSR_IA32_VMX_MISC</msr>
+    </feature_word>
+    <feature_word index="FEAT_VMX_EPT_VPID_CAPS">
+        <type>MSR_FEATURE_WORD</type>
+        <feat_names>
+            <feature>"vmx-ept-execonly"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-page-walk-4"</feature>
+            <feature>"vmx-page-walk-5"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-ept-2mb"</feature>
+            <feature>"vmx-ept-1gb"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-invept"</feature>
+            <feature>"vmx-eptad"</feature>
+            <feature>"vmx-ept-advanced-exitinfo"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-invept-single-context"</feature>
+            <feature>"vmx-invept-all-context"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-invvpid"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-invvpid-single-addr"</feature>
+            <feature>"vmx-invept-single-context"</feature>
+            <feature>"vmx-invvpid-all-context"</feature>
+            <feature>"vmx-invept-single-context-noglobals"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <msr>MSR_IA32_VMX_EPT_VPID_CAP</msr>
+    </feature_word>
+    <feature_word index="FEAT_VMX_BASIC">
+        <type>MSR_FEATURE_WORD</type>
+        <feat_names>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"vmx-ins-outs"</feature>
+            <feature>"vmx-true-ctls"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <msr>MSR_IA32_VMX_BASIC</msr>
+        <!-- Just to be safe - we don't support setting the MSEG version field. -->
+        <no_autoenable_flags>MSR_VMX_BASIC_DUAL_MONITOR</no_autoenable_flags>
+    </feature_word>
+    <feature_word index="FEAT_VMX_VMFUNC">
+        <type>MSR_FEATURE_WORD</type>
+        <feat_names>
+            <feature>"vmx-eptp-switching"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <msr>MSR_IA32_VMX_VMFUNC</msr>
+    </feature_word>
+    <feature_word index="FEAT_14_0_ECX">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"intel-pt-lip"</feature>
+        </feat_names>
+        <cpuid>
+            <eax>0x14</eax>
+            <needs_ecx>true</needs_ecx>
+            <ecx>0</ecx>
+            <reg>R_ECX</reg>
+        </cpuid>
+        <tcg_features>TCG_14_0_ECX_FEATURES</tcg_features>
+    </feature_word>
+    <feature_word index="FEAT_SGX_12_0_EAX">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature>"sgx1"</feature>
+            <feature>"sgx2"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"sgx-edeccssa"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <cpuid>
+            <eax>0x12</eax>
+            <needs_ecx>true</needs_ecx>
+            <ecx>0</ecx>
+            <reg>R_EAX</reg>
+        </cpuid>
+        <tcg_features>TCG_SGX_12_0_EAX_FEATURES</tcg_features>
+    </feature_word>
+    <feature_word index="FEAT_SGX_12_0_EBX">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature>"sgx-exinfo"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <cpuid>
+            <eax>0x12</eax>
+            <needs_ecx>true</needs_ecx>
+            <ecx>0</ecx>
+            <reg>R_EBX</reg>
+        </cpuid>
+        <tcg_features>TCG_SGX_12_0_EBX_FEATURES</tcg_features>
+    </feature_word>
+    <feature_word index="FEAT_SGX_12_1_EAX">
+        <type>CPUID_FEATURE_WORD</type>
+        <feat_names>
+            <feature></feature>
+            <feature>"sgx-debug"</feature>
+            <feature>"sgx-mode64"</feature>
+            <feature></feature>
+            <feature>"sgx-provisionkey"</feature>
+            <feature>"sgx-tokenkey"</feature>
+            <feature></feature>
+            <feature>"sgx-kss"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature>"sgx-aex-notify"</feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+            <feature></feature>
+        </feat_names>
+        <cpuid>
+            <eax>0x12</eax>
+            <needs_ecx>true</needs_ecx>
+            <ecx>1</ecx>
+            <reg>R_EAX</reg>
+        </cpuid>
+        <tcg_features>TCG_SGX_12_1_EAX_FEATURES</tcg_features>
+    </feature_word>
+</feature_words>