[x86] Start fixing our emission of ADDSUBPS and ADDSUBPD instructions by
authorChandler Carruth <chandlerc@gmail.com>
Mon, 15 Sep 2014 20:09:47 +0000 (20:09 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Mon, 15 Sep 2014 20:09:47 +0000 (20:09 +0000)
commitfa6cf7e73c9678e3aa50a5d8499afdd26bac831c
tree0ce36bf2d7fb3e5903aaa2c30f1ffac32e53fc9f
parent6c7ec4aae9c62e0a7d4b91187ae6a19078504730
[x86] Start fixing our emission of ADDSUBPS and ADDSUBPD instructions by
introducing a synthetic X86 ISD node representing this generic
operation.

The relevant patterns for mapping these nodes into the concrete
instructions are also added, and a gnarly bit of C++ code in the
target-specific DAG combiner is replaced with simple code emitting this
primitive.

The next step is to generically combine blends of adds and subs into
this node so that we can drop the reliance on an SSE4.1 ISD node
(BLENDI) when matching an SSE3 feature (ADDSUB).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217819 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86ISelLowering.h
lib/Target/X86/X86InstrFragmentsSIMD.td
lib/Target/X86/X86InstrSSE.td