llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
27.84k stars 11.47k forks source link

[X86] Should we prefer AVX VBLENDPS/VBLENDPS over VMOVSS/VMOVSD even with AVX512? #34224

Open topperc opened 6 years ago

topperc commented 6 years ago
Bugzilla Link 34876
Version trunk
OS All
CC @RKSimon

Extended Description

There are no EVEX versions of VBLENDPS/VBLENDPD so when AVX512 is enabled we prefer EVEX VMOVSS/VMOVSD. This enables us to use the XMM16-XMM31 registers, but the BLEND instructions have better throughput and that may outweight the increased register freedom.

topperc commented 5 years ago

We are currently preferring BLENDPS/BLENDPD for the X86ISD::MOVSS/MOVSD opcodes emitted from isel. We are also prefering blendps+xorps for X86::VZEXT_MOVL for vXi32/vXf32 types. For X86::VZEXT_MOVL with vXf64/vXi64 types we use MOVQ for the zeroing the upper bits.