llvm-project/llvm/lib
Sanjay Patel 07410ed234 [InstCombine] fold bitcasts around an extractelement
Example:
  bitcast (extractelement (bitcast <2 x float> %X to <2 x i32>), 1) to float
    --->
  extractelement <2 x float> %X, i32 1

This is part of fixing PR25543:
https://llvm.org/bugs/show_bug.cgi?id=25543

The next step will be to generalize this fold:
trunc ( lshr ( bitcast X) ) -> extractelement (X)

Ie, I'm hoping to replace the existing transform of:
bitcast ( trunc ( lshr ( bitcast X)))
added by:
http://reviews.llvm.org/rL112232

with 2 less specific transforms to catch the case in the bug report.

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

llvm-svn: 255124
2015-12-09 16:17:20 +00:00
..
Analysis Re-commit r255115, with the PredicatedScalarEvolution class moved to 2015-12-09 16:06:28 +00:00
AsmParser [CXX TLS calling convention] Add CXX TLS calling convention. 2015-12-04 17:40:13 +00:00
Bitcode Remove "ExportingModule" from ThinLTO Index (NFC) 2015-12-03 02:37:23 +00:00
CodeGen Fix cycle in selection DAG introduced by extractelement legalization 2015-12-09 14:34:10 +00:00
DebugInfo [llvm-dwp] Retrieve the DWOID from the CU for the cu_index entry 2015-12-04 17:20:04 +00:00
ExecutionEngine [Orc] Rename IndirectStubsManagerBase to IndirectStubsManager. 2015-12-06 19:44:45 +00:00
Fuzzer [libFuzzer] don't reload the corpus more than once every second 2015-12-05 02:09:22 +00:00
IR Don't drop attributes when inlining through "deopt" operand bundles 2015-12-09 01:01:28 +00:00
IRReader Return a unique_ptr from getLazyBitcodeModule and parseBitcodeFile. NFC. 2015-06-16 22:27:55 +00:00
LTO MSVC complains about this being ambiguous. 2015-12-04 22:26:21 +00:00
LibDriver [Option] Use an ArrayRef to store the Option Infos in OptTable. NFC 2015-10-21 16:30:42 +00:00
LineEditor
Linker Move all private members together. NFC. 2015-12-08 14:54:49 +00:00
MC Replace uint16_t with the MCPhysReg typedef in many places. A lot of physical register arrays already use this typedef. 2015-12-05 07:13:35 +00:00
Object Use make_range to reduce mentions of iterator type. NFC 2015-12-06 05:08:07 +00:00
Option [Option] Use an ArrayRef to store the Option Infos in OptTable. NFC 2015-10-21 16:30:42 +00:00
Passes [PM] Port StripDeadPrototypes to the new pass manager 2015-10-30 23:28:12 +00:00
ProfileData [PGO] Add version to getPGOFuncName method 2015-12-05 05:16:36 +00:00
Support Revert "raw_ostream: << operator for callables with raw_stream argument" 2015-12-03 23:00:28 +00:00
TableGen [TblGen] ArrayRefize TGParser. No functional change intended. 2015-10-24 12:46:45 +00:00
Target ARM: don't use a deleted node as the BaseReg in complex pattern. 2015-12-09 15:54:50 +00:00
Transforms [InstCombine] fold bitcasts around an extractelement 2015-12-09 16:17:20 +00:00
CMakeLists.txt LibDriver, llvm-lib: introduce. 2015-06-09 21:50:22 +00:00
LLVMBuild.txt Wrap some long lines in LLVMBuild files. NFC 2015-06-12 18:44:57 +00:00
Makefile LibDriver, llvm-lib: introduce. 2015-06-09 21:50:22 +00:00