llvm/lib/Transforms/InstCombine
Simon Pilgrim e6204cf2f1 [InstCombine] Improve Vector Demanded Bits Through Bitcasts
Currently SimplifyDemandedVectorElts can only peek through bitcasts if the vectors have the same number of elements.

This patch fixes and enables some existing (disabled) code to support bitcasting to vectors with more/fewer elements. It currently only accepts cases when vectors alias cleanly (i.e. number of elements are an exact multiple of the other vector).

This was added to improve the demanded vector elements support for SSE vector shifts which require the __m128i (<2 x i64>) argument type to be bitcast to the vector type for the builtin shift. I've added extra tests for various additional bitcasts.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@248784 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-29 08:19:11 +00:00
..
CMakeLists.txt Use ADDITIONAL_HEADER_DIRS in all LLVM CMake projects. 2015-02-11 03:28:02 +00:00
InstCombineAddSub.cpp don't repeat function names in comments; NFC 2015-09-09 15:24:36 +00:00
InstCombineAndOrXor.cpp [InstCombine] match De Morgan's Law hidden by zext ops (PR22723) 2015-09-25 23:21:38 +00:00
InstCombineCalls.cpp [X86][SSE] Replace 128-bit SSE41 PMOVSX intrinsics with native IR 2015-09-23 08:48:33 +00:00
InstCombineCasts.cpp There is a trunc(lshr (zext A), Cst) optimization in InstCombineCasts that 2015-09-10 11:31:20 +00:00
InstCombineCompares.cpp [InstCombine] FoldICmpCstShrCst failed for ashr when comparing against -1 2015-09-19 00:48:31 +00:00
InstCombineInternal.h [InstCombine] fold zexts and constants into a phi (PR24766) 2015-09-27 20:34:31 +00:00
InstCombineLoadStoreAlloca.cpp Clean up: Refactoring the hardcoded value of 6 for FindAvailableLoadedValue()'s parameter MaxInstsToScan. (Complete version of r247497. See D12886) 2015-09-18 19:14:35 +00:00
InstCombineMulDivRem.cpp don't repeat function names in comments; NFC 2015-09-09 15:24:36 +00:00
InstCombinePHI.cpp [InstCombine] fold zexts and constants into a phi (PR24766) 2015-09-27 20:34:31 +00:00
InstCombineSelect.cpp don't repeat function names in comments; NFC 2015-09-09 15:24:36 +00:00
InstCombineShifts.cpp Convert PHI getIncomingValue() to foreach over incoming_values(). NFC. 2015-05-12 20:05:31 +00:00
InstCombineSimplifyDemanded.cpp [InstCombine] Improve Vector Demanded Bits Through Bitcasts 2015-09-29 08:19:11 +00:00
InstCombineVectorOps.cpp don't repeat function names in comments; NFC 2015-09-09 15:24:36 +00:00
InstructionCombining.cpp add ShouldChangeType() variant that takes bitwidths 2015-09-21 16:09:37 +00:00
LLVMBuild.txt Update libdeps since TLI was moved from Target to Analysis in r226078. 2015-01-15 05:21:00 +00:00
Makefile