llvm-6502/lib
Andrea Di Biagio 5d0ff9c928 [X86] Add ISel patterns to select SSE3/AVX ADDSUB instructions.
This patch adds ISel patterns to select SSE3/AVX ADDSUB instructions
from a sequence of "vadd + vsub + blend".

Example:

///
typedef float float4 __attribute__((ext_vector_type(4)));

float4 foo(float4 A, float4 B) {
  float4 X = A - B;
  float4 Y = A + B;
  return (float4){X[0], Y[1], X[2], Y[3]};
}
///

Before this patch, (with flag -mcpu=corei7) llc produced the following
assembly sequence:
  movaps  %xmm0, %xmm2
  addps   %xmm1, %xmm2
  subps   %xmm1, %xmm0
  blendps $10, %xmm2, %xmm0


With this patch, we now get a single
  addsubps  %xmm1, %xmm0



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211427 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-21 01:31:15 +00:00
..
Analysis Support: Write ScaledNumber::getQuotient() and getProduct() 2014-06-20 21:47:47 +00:00
AsmParser IR: add "cmpxchg weak" variant to support permitted failure. 2014-06-13 14:24:07 +00:00
Bitcode Revert a C API difference that I incorrectly introduced. 2014-06-18 20:07:35 +00:00
CodeGen Generate native unwind info on Win64 2014-06-20 20:35:47 +00:00
DebugInfo [DWARF parser] Use distinction between DW_AT_ranges_base and DW_AT_GNU_ranges_base instead of DWARF version 2014-06-13 22:31:03 +00:00
ExecutionEngine Revert "Replace Execution Engine's mutex with std::recursive_mutex." 2014-06-20 21:07:14 +00:00
IR The count() function for STL datatypes returns unsigned, even where it's 2014-06-20 10:26:56 +00:00
IRReader Remove 'using std::errro_code' from lib. 2014-06-13 02:24:39 +00:00
LineEditor
Linker Replace some assert(0)'s with llvm_unreachable. 2014-06-18 05:05:13 +00:00
LTO Use the assignment operator. 2014-06-19 22:27:46 +00:00
MC Always use a temp symbol for CIE. 2014-06-20 23:54:32 +00:00
Object Fix a warning about the use of const being ignored with a cast. 2014-06-20 18:07:34 +00:00
Option ArgList: use MakeArgList overloads in subclasses and clean up some calls. 2014-06-20 04:36:29 +00:00
ProfileData Renaming SwapByteOrder() to getSwappedBytes() 2014-06-14 11:36:01 +00:00
Support Fix the MinGW builder. Apparently std::call_once and 2014-06-21 00:24:51 +00:00
TableGen Convert some assert(0) to llvm_unreachable or fold an 'if' condition into the assert. 2014-06-19 06:10:58 +00:00
Target [X86] Add ISel patterns to select SSE3/AVX ADDSUB instructions. 2014-06-21 01:31:15 +00:00
Transforms Commited patch from Björn Steinbrink: 2014-06-20 19:11:56 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile