llvm-project/llvm/test
Sanjay Patel b67e6b6044 [InstCombine] fold bitcasts around an extractelement (2nd try)
This is a redo of r255124 (reverted at r255126) with an added check for a
scalar destination type and an added test for the failure seen in Clang's
test/CodeGen/vector.c. The extra test shows a different missing optimization.

Original commit message:

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: 255137
2015-12-09 18:57:16 +00:00
..
Analysis Don't punish vectorized arithmetic instruction whose type will be split to multiple registers 2015-12-04 00:36:58 +00:00
Assembler AsmParser: Make the code for parsing unnamed aliases more closely resemble that for unnamed globals. 2015-11-25 02:54:07 +00:00
Bindings Disable Go bindings test with MSan, it has tons of linker errors 2015-11-19 00:05:20 +00:00
Bitcode Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
BugPoint [bugpoint] Add a named metadata (+their operands) reducer 2015-11-06 00:12:50 +00:00
CodeGen [WebAssembly] Reintroduce ARGUMENT moving logic 2015-12-09 16:23:59 +00:00
DebugInfo Revert "Implement a new pass - LiveDebugValues - to compute the set of live DEBUG_VALUEs at each basic block and insert them. Reviewed and accepted at: http://reviews.llvm.org/D11933" 2015-12-09 08:17:42 +00:00
Examples
ExecutionEngine [RuntimeDyld] Don't allocate unnecessary stub buffer space 2015-11-23 21:47:51 +00:00
Feature Have 'optnone' respect the -fast-isel=false option. 2015-11-30 21:56:16 +00:00
FileCheck
Instrumentation Create llvm.global_ctors in the new format. 2015-12-06 16:18:25 +00:00
Integer
JitListener DI: Reverse direction of subprogram -> function edge. 2015-11-05 22:03:56 +00:00
LTO [LTO] Add options to llvm-lto to select output format and dump merged module 2015-11-20 00:13:05 +00:00
LibDriver
Linker Add a test showing that we internalize lazily linked GVs. 2015-12-08 02:38:14 +00:00
MC [AArch64] Fix FP16 vector instructions that should only accept low registers 2015-12-09 14:32:11 +00:00
Object Stabilize llvm/test/Object/archive-update.test a bit. 2015-12-07 23:15:57 +00:00
Other [llc/opt] Add an option to run all passes twice 2015-12-04 21:56:46 +00:00
SymbolRewriter [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
TableGen Add new vector types for 512-, 1024- and 2048-bit vectors 2015-11-24 13:07:35 +00:00
Transforms [InstCombine] fold bitcasts around an extractelement (2nd try) 2015-12-09 18:57:16 +00:00
Unit
Verifier [Verifier] Fix !dbg validation if Scope is the Subprogram 2015-12-06 23:05:38 +00:00
YAMLParser
tools [llvm-dwp] Restructure inputs for test case so they're all grouped together 2015-12-07 18:46:41 +00:00
.clang-format
CMakeLists.txt [llvm-dwp] Add missing dependency from llvm tests on the llvm-dwp tool 2015-12-01 00:57:05 +00:00
Makefile Add a way to skip the Go bindings tests even when Go is configured in 2015-09-10 05:47:43 +00:00
Makefile.tests
TestRunner.sh
lit.cfg check-llvm: Introduce the new feature "tls". 2015-12-01 01:14:58 +00:00
lit.site.cfg.in Add a way to skip the Go bindings tests even when Go is configured in 2015-09-10 05:47:43 +00:00