summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/LoopVectorize/gcc-examples.ll
Commit message (Collapse)AuthorAgeFilesLines
* Update Transforms tests to use CHECK-LABEL for easier debugging. No ↵Stephen Lin2013-07-141-21/+21
| | | | | | | | | | | | | | | | | | | | | | functionality change. This update was done with the following bash script: find test/Transforms -name "*.ll" | \ while read NAME; do echo "$NAME" if ! grep -q "^; *RUN: *llc" $NAME; then TEMP=`mktemp -t temp` cp $NAME $TEMP sed -n "s/^define [^@]*@\([A-Za-z0-9_]*\)(.*$/\1/p" < $NAME | \ while read FUNC; do sed -i '' "s/;\(.*\)\([A-Za-z0-9_]*\):\( *\)@$FUNC\([( ]*\)\$/;\1\2-LABEL:\3@$FUNC(/g" $TEMP done mv $TEMP $NAME fi done llvm-svn: 186268
* Remove the -licm pass from the loop vectorizer test because the loop ↵Nadav Rotem2013-01-091-2/+2
| | | | | | vectorizer does it now. llvm-svn: 171930
* iLoopVectorize: Non commutative operators can be used as reduction variables ↵Nadav Rotem2013-01-051-1/+1
| | | | | | | | as long as the reduction chain is used in the LHS. PR14803. llvm-svn: 171583
* Force a fixed unroll count on the target independent tests.Nadav Rotem2013-01-051-1/+1
| | | | | | This should fix clang-native-arm-cortex-a9. Thanks Renato. llvm-svn: 171582
* Do not vectorize loops with subtraction reductionsPaul Redmond2013-01-041-1/+1
| | | | | | | | | Since subtraction does not commute the loop vectorizer incorrectly vectorizes reductions such as x = A[i] - x. Disabling for now. llvm-svn: 171537
* LoopVectorizer:Nadav Rotem2013-01-041-0/+39
| | | | | | | | 1. Add code to estimate register pressure. 2. Add code to select the unroll factor based on register pressure. 3. Add bits to TargetTransformInfo to provide the number of registers. llvm-svn: 171469
* LoopVectorizer: Optimize the vectorization of consecutive memory access when ↵Nadav Rotem2012-12-261-1/+2
| | | | | | the iteration step is -1 llvm-svn: 171114
* Loop Vectorize: optimize the vectorization of trunc(induction_var). The ↵Nadav Rotem2012-12-111-1/+1
| | | | | | truncation is now done on scalars. llvm-svn: 169904
* Add support for reverse induction variables. For example:Nadav Rotem2012-12-101-4/+2
| | | | | | | while (i--) sum+=A[i]; llvm-svn: 169752
* LoopVectorizer: Add initial support for pointer induction variables (for ↵Nadav Rotem2012-11-171-2/+1
| | | | | | | | example: *dst++ = *src++). At the moment we still require to have an integer induction variable (for example: i++). llvm-svn: 168231
* Relax the restrictions on vector of pointer types, and vector getelementptr.Duncan Sands2012-11-131-2/+2
| | | | | | | | | | | | | | | Previously in a vector of pointers, the pointer couldn't be any pointer type, it had to be a pointer to an integer or floating point type. This is a hassle for dragonegg because the GCC vectorizer happily produces vectors of pointers where the pointer is a pointer to a struct or whatever. Vector getelementptr was restricted to just one index, but now that vectors of pointers can have any pointer type it is more natural to allow arbitrary vector getelementptrs. There is however the issue of struct GEPs, where if each lane chose different struct fields then from that point on each lane will be working down into unrelated types. This seems like too much pain for too little gain, so when you have a vector struct index all the elements are required to be the same. llvm-svn: 167828
* LoopVectorize: Preserve NSW, NUW and IsExact flags.Nadav Rotem2012-10-311-1/+3
| | | | llvm-svn: 167174
* LoopVectorizer: Add a basic cost model which uses the VTTI interface.Nadav Rotem2012-10-241-1/+1
| | | | llvm-svn: 166620
* Vectorizer: Add support for loop reductions.Nadav Rotem2012-10-191-2/+1
| | | | | | | | | For example: for (i=0; i<n; i++) sum += A[i] + B[i] + i; llvm-svn: 166351
* Vectorizer: Add support for loops with an unknown count. For example:Nadav Rotem2012-10-181-4/+2
| | | | | | | | for (i=0; i<n; i++){ a[i] = b[i+1] + c[i+3]; } llvm-svn: 166165
* Add a loop vectorizer.Nadav Rotem2012-10-171-0/+651
llvm-svn: 166112
OpenPOWER on IntegriCloud