| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 103104
|
|
|
|
|
|
| |
consecutive D registers as a REG_SEQUENCE.
llvm-svn: 103047
|
|
|
|
|
|
| |
extraction. This fixes PR5998.
llvm-svn: 102144
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
const_casts, and it reinforces the design of the Target classes being
immutable.
SelectionDAGISel::IsLegalToFold is now a static member function, because
PIC16 uses it in an unconventional way. There is more room for API
cleanup here.
And PIC16's AsmPrinter no longer uses TargetLowering.
llvm-svn: 101635
|
|
|
|
| |
llvm-svn: 101446
|
|
|
|
|
|
| |
is doing the right thing and codegen looks correct for both Thumb and Thumb2.
llvm-svn: 101410
|
|
|
|
|
|
|
|
| |
directly. In cases where there are two dyn_alloc in the same BB it would have caused the old SP value to be reused and badness ensues. rdar://7493908
llvm is generating poor code for dynamic alloca, I'll fix that later.
llvm-svn: 101383
|
|
|
|
|
|
|
|
|
|
| |
These instructions are only needed for codegen, so I've removed all the
explicit encoding bits for now; they should be set in the same way as the for
VLDMD and VSTMD whenever we add encodings for VFP. The use of addrmode5
requires that the instructions be custom-selected so that the number of
registers can be set in the AM5Opc value.
llvm-svn: 99309
|
|
|
|
|
|
|
| |
of D registers. Add a separate VST1q instruction with a Q register
source operand for use by storeRegToStackSlot.
llvm-svn: 99265
|
|
|
|
|
|
|
| |
of D registers. Add a separate VLD1q instruction with a Q register
destination operand for use by loadRegFromStackSlot.
llvm-svn: 99261
|
|
|
|
|
|
|
| |
corresponding NEON instructions, instead of operation they are currently
used for.
llvm-svn: 99189
|
|
|
|
|
|
|
| |
with changes to add a separate optional register update argument. Change all
the NEON instructions with address register writeback to use it.
llvm-svn: 99095
|
|
|
|
|
|
|
|
| |
load/stores with address register writeback, and use "odd" suffix to distinguish
instructions to access odd numbered registers (instead of "a" and "b").
No functional changes.
llvm-svn: 99066
|
|
|
|
| |
llvm-svn: 98692
|
|
|
|
|
|
|
| |
optional register update argument, which is currently unused -- when we add
support for that, it can just be a separate operand.
llvm-svn: 98683
|
|
|
|
|
|
|
|
|
|
|
|
| |
DoInstructionSelection. Inline "SelectRoot" into it from DAGISelHeader.
Sink some other stuff out of DAGISelHeader into SDISel.
Eliminate the various 'Indent' stuff from various targets, which dates
to when isel was recursive.
17 files changed, 114 insertions(+), 430 deletions(-)
llvm-svn: 97555
|
|
|
|
|
|
|
|
| |
IsLegalToFold and IsProfitableToFold. The generic version of the later simply checks whether the folding candidate has a single use.
This allows the target isel routines more flexibility in deciding whether folding makes sense. The specific case we are interested in is folding constant pool loads with multiple uses.
llvm-svn: 96255
|
|
|
|
|
|
|
|
|
| |
into TargetOpcodes.h. #include the new TargetOpcodes.h
into MachineInstr. Add new inline accessors (like isPHI())
to MachineInstr, and start using them throughout the
codebase.
llvm-svn: 95687
|
|
|
|
|
|
| |
and make sure we pick different instructions for ARM vs. Thumb2.
llvm-svn: 93829
|
|
|
|
|
|
|
| |
"On ARMv6T2 this turns cttz into rbit, clz instead of the 4 instruction
sequence it is now."
llvm-svn: 93758
|
|
|
|
|
|
| |
vector load-lane and store-lane instructions.
llvm-svn: 93673
|
|
|
|
|
|
|
|
|
| |
clear what information these functions are actually using.
This is also a micro-optimization, as passing a SDNode * around is
simpler than passing a { SDNode *, int } by value or reference.
llvm-svn: 92564
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
than doing the same via constpool:
1. Load from constpool costs 3 cycles on A9, movt/movw pair - just 2.
2. Load from constpool might stall up to 300 cycles due to cache miss.
3. Movt/movw does not use load/store unit.
4. Less constpool entries => better compiler performance.
This is only enabled on ELF systems, since darwin does not have needed
relocations (yet).
llvm-svn: 89720
|
|
|
|
|
|
| |
violations in ARMInstrNEON.td.
llvm-svn: 89542
|
|
|
|
|
|
| |
immediate forms of cmov instructions at all.
llvm-svn: 89423
|
|
|
|
|
|
| |
change.
llvm-svn: 89396
|
|
|
|
| |
llvm-svn: 89337
|
|
|
|
| |
llvm-svn: 86494
|
|
|
|
| |
llvm-svn: 86404
|
|
|
|
| |
llvm-svn: 86149
|
|
|
|
| |
llvm-svn: 85805
|
|
|
|
| |
llvm-svn: 85255
|
|
|
|
| |
llvm-svn: 84813
|
|
|
|
| |
llvm-svn: 84751
|
|
|
|
| |
llvm-svn: 84144
|
|
|
|
| |
llvm-svn: 84122
|
|
|
|
| |
llvm-svn: 84117
|
|
|
|
|
|
| |
vld lane intrinsics.
llvm-svn: 84110
|
|
|
|
| |
llvm-svn: 84109
|
|
|
|
|
|
|
| |
by creating TargetConstants during instruction selection instead of during
legalization.
llvm-svn: 84042
|
|
|
|
|
|
|
| |
be in a register. The previous use of ARM address mode 2 was completely
arbitrary and inappropriate for Thumb. Radar 7137468.
llvm-svn: 84022
|
|
|
|
| |
llvm-svn: 84017
|
|
|
|
| |
llvm-svn: 84009
|
|
|
|
| |
llvm-svn: 83600
|
|
|
|
| |
llvm-svn: 83598
|
|
|
|
| |
llvm-svn: 83596
|
|
|
|
|
|
| |
Also fix some copy-and-paste errors in previous changes.
llvm-svn: 83590
|
|
|
|
| |
llvm-svn: 83585
|
|
|
|
| |
llvm-svn: 83568
|
|
|
|
| |
llvm-svn: 83566
|