llvm-6502/include/llvm/Target
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
..
CostTable.h Add a overload to CostTable which allows it to infer the size of the table. 2013-08-09 19:33:32 +00:00
Target.td [TableGen] Optionally forbid overlap between named and positional operands 2014-03-13 07:57:54 +00:00
TargetCallingConv.h Replace '#include ValueTypes.h' with forward declarations. 2014-03-12 08:00:24 +00:00
TargetCallingConv.td LLVM-1163: AAPCS-VFP violation when CPRC allocated to stack 2014-02-07 11:19:53 +00:00
TargetFrameLowering.h [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr. 2014-04-14 00:51:57 +00:00
TargetInstrInfo.h [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr. 2014-04-14 00:51:57 +00:00
TargetIntrinsicInfo.h [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr. 2014-04-15 06:32:26 +00:00
TargetItinerary.td I'm introducing a new machine model to simultaneously allow simple 2012-07-07 04:00:00 +00:00
TargetJITInfo.h Sort the #include lines for the include/... tree with the script. 2012-12-03 17:02:12 +00:00
TargetLibraryInfo.h SimplifyLibCalls: Push TLI through the exp2->ldexp transform. 2014-02-04 20:27:23 +00:00
TargetLowering.h [ARM64] Prevent bit extraction to be adjusted by following shift 2014-04-30 21:07:24 +00:00
TargetLoweringObjectFile.h [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr. 2014-04-14 00:51:57 +00:00
TargetMachine.h Fix comment 2014-04-28 18:11:51 +00:00
TargetOpcodes.h Replace PROLOG_LABEL with a new CFI_INSTRUCTION. 2014-03-07 06:08:31 +00:00
TargetOptions.h Create MCTargetOptions. 2014-04-23 11:16:03 +00:00
TargetRegisterInfo.h [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr. 2014-04-14 00:51:57 +00:00
TargetSchedule.td Machine model comments. Explain a ProcessorUnit's BufferSize. 2013-12-05 17:55:53 +00:00
TargetSelectionDAG.td ARM64: initial backend import 2014-03-29 10:18:08 +00:00
TargetSelectionDAGInfo.h Rename some member variables from TD to DL. 2014-02-18 15:33:12 +00:00
TargetSubtargetInfo.h Added temp flag -misched-bench for staging in default changes. 2013-09-26 05:53:35 +00:00