[X86] Attempt to use VPMADD52L/VPMULUDQ instead of VPMULLQ on slow VPMULLQ targets (or when VPMULLQ is unavailable) (#171760)
This pull request introduces a new tuning flag "TuningSlowPMULLQ" and
uses it to optimize 64-bit vector multiplication on Intel targets where
"VPMULLQ" is slow.
On recent Intel microarchitectures , the "VPMULLQ" instruction has a
high latency of 15 cycles . In contrast, the "VPMADD52LUQ" instruction
(available via AVX512IFMA) performs a similar operation with a latency
of only 4 cycles .
Reference data from uops.info (Ice Lake):
"VPMULLQ" : Latency 15, TP 1.5
"VPMADD52LUQ" : Latency 4, TP 0.5
Fixes #158854