Whether you are using the classic Enhanced vMotion Compatibility (EVC) on a vSphere Cluster or the new Per-VM EVC capability, the usable (user-level) CPU features from an ESXi host are then presented down into a Virtual Machine for consumption.
If you wanted to see what which CPU features are exposed for a particular VM or even custom CPU compatibility mask which hides certain CPU features, you can do so by using the vSphere API and accessing either the FeatureRequirement or FeatureMask properties, depending if Per-VM EVC is configured or not. The results from the vSphere API is a list of CPUID strings that may or may not be easy to translate to the friendly CPU processor feature name.
While doing some testing, I noticed that for VMs configured with Per-VM EVC, rather than listing out the CPUID strings, it actually lists the friendly CPU processor feature name.
I was not able to find any CPUID translator using the EvcManager API, but the vSphere UI must be getting this information somehow, right? After a bit of poking around in my vCenter Server Appliance (VCSA), I realized how this translation was occurring ...