]> granicus.if.org Git - llvm/commit
[X86] Convert f32/f64 FANDN/FAND/FOR/FXOR to vector logic ops and scalar_to_vector...
authorCraig Topper <craig.topper@intel.com>
Mon, 10 Jun 2019 00:41:07 +0000 (00:41 +0000)
committerCraig Topper <craig.topper@intel.com>
Mon, 10 Jun 2019 00:41:07 +0000 (00:41 +0000)
commit3f74f4a162130b10bdeb0e497abd29f51050cb38
tree8387e724f811410c29ac5be728c0ba697afa8a92
parent735003305d0f7180bf124a75ae10256d0b0379a3
[X86] Convert f32/f64 FANDN/FAND/FOR/FXOR to vector logic ops and scalar_to_vector/extract_vector_elts to reduce isel patterns.

Previously we did the equivalent operation in isel patterns with
COPY_TO_REGCLASS operations to transition. By inserting
scalar_to_vetors and extract_vector_elts before isel we can
allow each piece to be selected individually and accomplish the
same final result.

I ideally we'd use vector operations earlier in lowering/combine,
but that looks to be more difficult.

The scalar-fp-to-i64.ll changes are because we have a pattern for
using movlpd for store+extract_vector_elt. While an f64 store
uses movsd. The encoding sizes are the same.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@362914 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelDAGToDAG.cpp
lib/Target/X86/X86InstrAVX512.td
lib/Target/X86/X86InstrSSE.td
test/CodeGen/X86/scalar-fp-to-i64.ll
test/CodeGen/X86/sqrt-fastmath-mir.ll