| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
RA problem by expanding the live interval of an
earlyclobber def back one slot. Remove
overlap-earlyclobber throughout. Remove
earlyclobber bits and their handling from
live internals.
llvm-svn: 56539
|
|
|
|
|
|
| |
the addressing mode, it requires the same logic for PIC relative addressing, etc.
llvm-svn: 56526
|
|
|
|
| |
llvm-svn: 56513
|
|
|
|
|
|
| |
object. This will be needed to support debug info.
llvm-svn: 56508
|
|
|
|
|
|
|
| |
track of the number of live registers, which is all the set was
being used for.
llvm-svn: 56498
|
|
|
|
|
|
|
| |
load address has an offset from the base of the constant pool
entry.
llvm-svn: 56479
|
|
|
|
|
|
| |
default.
llvm-svn: 56471
|
|
|
|
|
|
|
| |
(srl x, (trunc (and y, c))) -> (srl x, (and (trunc y), c))
etc. when both "trunc" and "and" have single uses.
llvm-svn: 56452
|
|
|
|
| |
llvm-svn: 56419
|
|
|
|
|
|
| |
functionality change.
llvm-svn: 56418
|
|
|
|
| |
llvm-svn: 56399
|
|
|
|
|
|
|
| |
results in better code for globals. Also, unbreak the local CSE for
GlobalValue stub loads.
llvm-svn: 56371
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
copy of the BURRList scheduler, but with several parts ripped
out, such as backtracking, online topological sort maintenance
(needed by backtracking), the priority queue, and Sethi-Ullman
number computation and maintenance (needed by the priority
queue). As a result of all this, it generates somewhat lower
quality code, but that's its tradeoff for running about 30%
faster than list-burr in -fast mode in many cases.
This is somewhat experimental. Moving forward, major pieces of
this can be refactored with pieces in common with
ScheduleDAGRRList.cpp.
llvm-svn: 56307
|
|
|
|
|
|
|
|
|
| |
with an earlyclobber operand elsewhere. Propagate
this bit and the earlyclobber bit through SDISel.
Change linear-scan RA not to allocate regs in a way
that conflicts with an earlyclobber. See also comments.
llvm-svn: 56290
|
|
|
|
| |
llvm-svn: 56281
|
|
|
|
|
|
| |
of its uses to determine the right destination register class of the copy. This is important for targets where a physical register may belong to multiple register classes.
llvm-svn: 56258
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ConstantPoolSDNode, using the target's preferred alignment for the
constant type.
In LegalizeDAG, when performing loads from the constant pool, the
ConstantPoolSDNode's alignment is used in the calls to getLoad and
getExtLoad.
This change prevents SelectionDAG::getLoad/getExtLoad from incorrectly
choosing the ABI alignment for constant pool loads when Alignment == 0.
The incorrect alignment is only a performance issue when ABI alignment
does not equal preferred alignment (i.e., on x86 it was generating
MOVUPS instead of MOVAPS for v4f32 constant loads when the default ABI
alignment for 128bit vectors is forced to 1 byte.)
Patch by Paul Redmond!
llvm-svn: 56253
|
|
|
|
|
|
| |
Apologies for the thrashing.
llvm-svn: 56251
|
|
|
|
| |
llvm-svn: 56250
|
|
|
|
|
|
|
|
|
|
| |
- Add linkage to SymbolSDNode (default to external).
- Change ISD::ExternalSymbol to ISD::Symbol.
- Change ISD::TargetExternalSymbol to ISD::TargetSymbol
These changes pave the way to allowing SymbolSDNodes with non-external linkage.
llvm-svn: 56249
|
|
|
|
|
|
|
| |
are not enabled. Instead just omit the tail call flag when calls are
created.
llvm-svn: 56235
|
|
|
|
|
|
| |
libcalls, as in this testcase on ARM.
llvm-svn: 56226
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently it just holds the calling convention and flags
for isVarArgs and isTailCall.
And it has several utility methods, which eliminate magic
5+2*i and similar index computations in several places.
CallSDNodes are not CSE'd. Teach UpdateNodeOperands to handle
nodes that are not CSE'd gracefully.
llvm-svn: 56183
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ConstantFP* instead of APInt and APFloat directly.
This reduces the amount of time to create ConstantSDNode
and ConstantFPSDNode nodes when ConstantInt* and ConstantFP*
respectively are already available, as is the case in
SelectionDAGBuild.cpp. Also, it reduces the amount of time
to legalize constants into constant pools, and the amount of
time to add ConstantFP operands to MachineInstrs, due to
eliminating ConstantInt::get and ConstantFP::get calls.
It increases the amount of work needed to create new constants
in cases where the client doesn't already have a ConstantInt*
or ConstantFP*, such as legalize expanding 64-bit integer constants
to 32-bit constants. And it adds a layer of indirection for the
accessor methods. But these appear to be outweight by the benefits
in most cases.
It will also make it easier to make ConstantSDNode and
ConstantFPNode more consistent with ConstantInt and ConstantFP.
llvm-svn: 56162
|
|
|
|
|
|
|
| |
representation; coalescer and RA need to know
about it. No functional change.
llvm-svn: 56161
|
|
|
|
|
|
|
| |
with ConstantInt. This led to fixing a bug in TargetLowering.cpp
using getValue instead of getAPIntValue.
llvm-svn: 56159
|
|
|
|
|
|
| |
safe in the presence of NaNs.
llvm-svn: 56136
|
|
|
|
| |
llvm-svn: 56069
|
|
|
|
| |
llvm-svn: 56068
|
|
|
|
|
|
|
| |
to static allocas. As part of this change, refactor the
address mode code for laods and stores.
llvm-svn: 56066
|
|
|
|
|
|
|
| |
I shuffled the fast-isel command-line options around. This fixes
a bunch of fast-isel failures.
llvm-svn: 56057
|
|
|
|
| |
llvm-svn: 56049
|
|
|
|
| |
llvm-svn: 56048
|
|
|
|
| |
llvm-svn: 56036
|
|
|
|
|
|
|
|
|
|
|
| |
form:
powf(10.0f, x);
If this is the case, and also we want limited precision floating-point
calculations, then lower to do the limited-precision stuff.
llvm-svn: 56035
|
|
|
|
| |
llvm-svn: 56032
|
|
|
|
|
|
|
|
| |
to being off by default. Also, add assertion checks to check that
the various fast-isel-related command-line options are only used
when -fast-isel itself is enabled.
llvm-svn: 56029
|
|
|
|
| |
llvm-svn: 56028
|
|
|
|
|
|
| |
function.
llvm-svn: 56025
|
|
|
|
|
|
| |
floating-point numbers.
llvm-svn: 56023
|
|
|
|
|
|
|
| |
-fast-isel-no-abort to get a dump of all unhandled instructions,
without an abort.
llvm-svn: 56021
|
|
|
|
| |
llvm-svn: 56009
|
|
|
|
|
|
|
| |
values.
- Refactored some of the code.
llvm-svn: 56008
|
|
|
|
| |
llvm-svn: 56005
|
|
|
|
|
|
| |
precisions.
llvm-svn: 56000
|
|
|
|
|
|
|
|
| |
With this change,
all of MultiSource/Applications passes on Darwin/X86 under FastISel.
llvm-svn: 55982
|
|
|
|
|
|
|
|
| |
the case of loads, stores, and conditional branches. It can
handle those now, so any that aren't handled should trigger
the abort.
llvm-svn: 55977
|
|
|
|
|
|
| |
funky getelementptr embedded in the address operand.
llvm-svn: 55975
|
|
|
|
|
|
| |
and 18.
llvm-svn: 55968
|
|
|
|
| |
llvm-svn: 55958
|