================
@@ -164,6 +164,9 @@ bool X86TargetInfo::initFeatureMap(
     for (const char *Sub :
          {"egpr", "push2pop2", "ppx", "ndd", "ccmp", "nf", "zu", "jmpabs"})
       setFeatureEnabled(Features, Sub, true);
+    // APX (EVEX) implies AVX-512, and WinCall expects every instruction to be
+    // EVEX-encoded so that no vzeroupper is needed at WinCall boundaries.
+    setFeatureEnabled(Features, "avx512f", true);
----------------
trcrsired wrote:

> > Very bad. we should avoid floating point registers as much as possible. 
> > Many kernels have strict rules on banning floating point registers. Plus fp 
> > registers can have latency issues and others. Always just use GPRs before 
> > using MM registers.
> 
> On recent AVX-512 CPUs, ZMM instructions no longer cause throttling as they 
> did in the past.
> 
> > Many kernels have strict rules on banning floating point registers.
> 
> I thought x86_64apx is a usermode-only ABI?

not a usermode-only abi. it should apply to uefi, cygwin/msys, win kernel etc 
too i think. but i haven't yet finished it. plus other x86_64 os may use the 
calling convention too in some specific windows related code

https://github.com/llvm/llvm-project/pull/215585
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to