There are special CPU instructions that applications can use to detect what features (like SSE2, SSE3, etc.) a CPU supports.
With EVC enabled these instructions are trapped by the hypervisor and it will only return the subset of features as supported that are common to all CPUs in the cluster. So applications that "follow the CPU vendors' recommendations" and do a proper CPU feature detection will only use instructions that are supported on any host in an EVC enabled cluster.
On the other hand, applications that do not properly detect CPU features may use advanced CPU instructions that work on one host, but not on another, i.e. they may fail when being vmotioned - although EVC was enabled.
I have personally never stumbled over such applications, and I think that it is more of a theoretical possibility. At least that's not a reason for not enabling and using EVC.
- Andreas