llvm-6502/include/llvm/Transforms
Nadav Rotem 8383b539ff Add support for bottom-up SLP vectorization infrastructure.
This commit adds the infrastructure for performing bottom-up SLP vectorization (and other optimizations) on parallel computations.
The infrastructure has three potential users:

  1. The loop vectorizer needs to be able to vectorize AOS data structures such as (sum += A[i] + A[i+1]).

  2. The BB-vectorizer needs this infrastructure for bottom-up SLP vectorization, because bottom-up vectorization is faster to compute.

  3. A loop-roller needs to be able to analyze consecutive chains and roll them into a loop, in order to reduce code size. A loop roller does not need to create vector instructions, and this infrastructure separates the chain analysis from the vectorization.

This patch also includes a simple (100 LOC) bottom up SLP vectorizer that uses the infrastructure, and can vectorize this code:

void SAXPY(int *x, int *y, int a, int i) {
  x[i]   = a * x[i]   + y[i];
  x[i+1] = a * x[i+1] + y[i+1];
  x[i+2] = a * x[i+2] + y[i+2];
  x[i+3] = a * x[i+3] + y[i+3];
}



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179117 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-09 19:44:35 +00:00
..
IPO Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
Utils Enhance integer division emulation support to handle types smaller than 32 bits, 2013-02-26 23:33:20 +00:00
Instrumentation.h [ASan] emit instrumentation for initialization order checking by default 2013-03-14 12:38:58 +00:00
IPO.h Use an ArrayRef instead of a std::vector&. 2012-12-11 16:36:02 +00:00
ObjCARC.h Extracted ObjCARC.cpp into its own library libLLVMObjCARCOpts in preparation for refactoring the ARC Optimizer. 2013-01-28 01:35:51 +00:00
Scalar.h Fix typo in comment. 2013-03-14 01:26:17 +00:00
Vectorize.h Add support for bottom-up SLP vectorization infrastructure. 2013-04-09 19:44:35 +00:00