That is up to STEC and Jens Axboe (who STEC asked to merge the code). Looking at STEC's EnhanceIO github: they've recently done some volatile, endian and division cleanups. We haven't benchmarked EnhanceIO recently but it'll be interesting to have a bake-off with dm-cache. If you or others have a particular real-world workload (or synthetic benchmark that reflects your workload) that you'd like to see compared definitely let me know or send email to dm-devel@redhat.com
BTW, EnhanceIO has stopped using device-mapper (both the original dm-cache and flashcache used DM) and opted to make EnhanceIO a native block driver. They apparently did this to be able to transparently add a cache to any origin block device (even one that has partitions).
However, if the origin block device is already using bio-based DM (e.g. linear, striped, etc) then a dm-cache based cache can easily be transparently added to that origin device while that device is in use (DM's suspend/load table/resume makes this possible). And there are plans to make all Linux block devices DM-capable devices in the future; however designs for making that a reality are still forthcoming.