llvm/lib/Transforms/InstCombine
Sanjay Patel be9ee96926 [X86, AVX] instcombine common cases of vperm2* intrinsics into shuffles
vperm2* intrinsics are just shuffles. 
In a few special cases, they're not even shuffles.

Optimizing intrinsics in InstCombine is better than
handling this in the front-end for at least two reasons:

1. Optimizing custom-written SSE intrinsic code at -O0 makes vector coders
   really angry (and so I have regrets about some patches from last week).

2. Doing mask conversion logic in header files is hard to write and 
   subsequently read.

There are a couple of TODOs in this patch to complete this optimization.

Differential Revision: http://reviews.llvm.org/D8486



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232852 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-20 21:47:56 +00:00
..
CMakeLists.txt Use ADDITIONAL_HEADER_DIRS in all LLVM CMake projects. 2015-02-11 03:28:02 +00:00
InstCombineAddSub.cpp DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
InstCombineAndOrXor.cpp [ConstantRange] Split makeICmpRegion in two. 2015-03-18 00:41:24 +00:00
InstCombineCalls.cpp [X86, AVX] instcombine common cases of vperm2* intrinsics into shuffles 2015-03-20 21:47:56 +00:00
InstCombineCasts.cpp [opaque pointer type] IRBuilder gep migration progress 2015-03-15 01:03:19 +00:00
InstCombineCompares.cpp DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
InstCombineInternal.h Fix an infinite loop in InstCombine when an instruction with no users and side effects can be constant folded. 2015-03-10 05:13:47 +00:00
InstCombineLoadStoreAlloca.cpp Update InstCombine to transform aggregate stores into scalar stores. 2015-03-14 22:19:33 +00:00
InstCombineMulDivRem.cpp DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
InstCombinePHI.cpp [opaque pointer type] Start migrating GEP creation to explicitly specify the pointee type 2015-03-14 01:53:18 +00:00
InstCombineSelect.cpp DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
InstCombineShifts.cpp DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
InstCombineSimplifyDemanded.cpp DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
InstCombineVectorOps.cpp [opaque pointer type] more gep API migrations 2015-03-14 19:24:04 +00:00
InstructionCombining.cpp [InstCombine] Don't fold a GEP into itself through a PHI node 2015-03-19 11:05:08 +00:00
LLVMBuild.txt
Makefile