ARM64EC is a new ARM64 variant introduced in Windows 11 that uses an
ABI similar to AMD64, which allows for better interoperability with
emulated AMD64 applications. When enabled in MSVC, it defines _M_AMD64
and _M_ARM64EC, but not _M_ARM64, so we need to check for _M_ARM64EC.
The arch detection code used by cmake build exports ppc arch names in an
abbreviated way, e.g. ppc64le instead of powerpc64le. Some parts of
CMakeLists.txt are using the longer form instead, which will not
properly match the desired subarch as expected. Switch to using the
longer form everywhere for consistency with 'configure' script and with
arch names obtained when running under QEMU.
Add the scaffolding for future optimizations for POWER processors. Now
the build is capable of correctly detecting multiple processor
sub-architectures (ppc, ppc64 and ppc64le) and also if features
needed for the optimizations are available during build and runtime.
With these changes, adding a new optimized function for POWER should be
as simple as adding a new file under arch/power/, appending build
instructions to the build files and editing functable.c accordingly.
The UNALIGNED_OK flag is now also added by default for powerpc64le
targets.