llvm-6502/lib
Weiming Zhao fa1cf8cd68 [ARM64] Prevent bit extraction to be adjusted by following shift
For pattern like ((x >> C1) & Mask) << C2, DAG combiner may convert it
into (x >> (C1-C2)) & (Mask << C2), which makes pattern matching of ubfx
more difficult.
For example:
Given
  %shr = lshr i64 %x, 4
  %and = and i64 %shr, 15
  %arrayidx = getelementptr inbounds [8 x [64 x i64]]* @arr, i64 0, %i64 2, i64 %and
  %0 = load i64* %arrayidx
With current shift folding, it takes 3 instrs to compute base address:
  lsr x8, x0, #1
  and x8, x8, #0x78
  add x8, x9, x8

If using ubfx, it only needs 2 instrs:
  ubfx  x8, x0, #4, #4
  add x8, x9, x8, lsl #3

This fixes bug 19589


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207702 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-30 21:07:24 +00:00
..
Analysis [LCG] Add the really, *really* boring edge insertion case: adding an 2014-04-30 10:48:36 +00:00
AsmParser
Bitcode raw_ostream: Forward declare OpenFlags and include FileSystem.h only where necessary. 2014-04-29 23:26:49 +00:00
CodeGen [ARM64] Prevent bit extraction to be adjusted by following shift 2014-04-30 21:07:24 +00:00
DebugInfo [DWARF parser] Cleanup code in DWARFDebugLine. 2014-04-30 00:09:19 +00:00
ExecutionEngine [ARM64] Try and make the ELF MCJIT *slightly* less broken for ARM64. 2014-04-30 10:15:41 +00:00
IR IR: Conservatively verify inalloca arguments 2014-04-30 17:22:00 +00:00
IRReader
LineEditor
Linker
LTO
MC Simplify ELFObjectWriter::SymbolValue. 2014-04-30 16:59:35 +00:00
Object ELFObjectWriter: deduplicate suffices in strtab 2014-04-30 16:25:02 +00:00
Option
ProfileData raw_ostream: Forward declare OpenFlags and include FileSystem.h only where necessary. 2014-04-29 23:26:49 +00:00
Support raw_ostream: Forward declare OpenFlags and include FileSystem.h only where necessary. 2014-04-29 23:26:49 +00:00
TableGen raw_ostream: Forward declare OpenFlags and include FileSystem.h only where necessary. 2014-04-29 23:26:49 +00:00
Target [ARM64] Prevent bit extraction to be adjusted by following shift 2014-04-30 21:07:24 +00:00
Transforms Revert r207571 - Add slp vectorization to LTO passes 2014-04-30 19:27:24 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile