| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
function with appropriate parameters. This allows us to support blocks on PPC.
llvm-svn: 56267
|
| |
|
|
|
|
| |
Apologies for the thrashing.
llvm-svn: 56251
|
| |
|
|
|
|
|
|
|
|
| |
- 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
|
| |
|
|
|
|
|
|
|
| |
isImmediate(), isRegister(), and friends, to avoid confusion
about having two different names with the same meaning. I'm
not attached to the longer names, and would be ok with
changing to the shorter names if others prefer it.
llvm-svn: 56189
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
with ConstantInt. This led to fixing a bug in TargetLowering.cpp
using getValue instead of getAPIntValue.
llvm-svn: 56159
|
| |
|
|
|
|
|
| |
__sync_fetch_and_nand as ANDC, even though that's
not what nand means.
llvm-svn: 56087
|
| |
|
|
|
|
|
|
|
|
| |
objects in llvm.used (thanks Anton). Makes visible
the magic 'l' prefix for symbols on Darwin which are
to be passed through the assembler, then removed at
linktime (previously all references to this had been
hidden in the ObjC FE code, oh well).
llvm-svn: 55973
|
| |
|
|
| |
llvm-svn: 55868
|
| |
|
|
| |
llvm-svn: 55779
|
| |
|
|
| |
llvm-svn: 55769
|
| |
|
|
|
|
| |
No functional change (and no FE change to generate them).
llvm-svn: 55753
|
| |
|
|
| |
llvm-svn: 55643
|
| |
|
|
|
|
| |
be const. Make corresponding changes.
llvm-svn: 55623
|
| |
|
|
| |
llvm-svn: 55588
|
| |
|
|
|
|
| |
Dale, Could you please review this?
llvm-svn: 55581
|
| |
|
|
| |
llvm-svn: 55554
|
| |
|
|
| |
llvm-svn: 55546
|
| |
|
|
|
|
| |
Node to reflect semantics
llvm-svn: 55504
|
| |
|
|
|
|
| |
when the compare value has a NaN
llvm-svn: 55499
|
| |
|
|
| |
llvm-svn: 55478
|
| |
|
|
| |
llvm-svn: 55394
|
| |
|
|
|
|
|
|
|
| |
requested
was inserted or not. This allows bitcast in fast isel to properly handle the case
where an appropriate reg-to-reg copy is not available.
llvm-svn: 55375
|
| |
|
|
|
|
| |
binary primitives.
llvm-svn: 55343
|
| |
|
|
|
|
|
|
| |
generic stuff works fine.
Mark rewritten cmp-and-swap as not using CR1.
llvm-svn: 55336
|
| |
|
|
|
|
|
| |
loads and stores but it's even more important for
it to store the right value.:(
llvm-svn: 55319
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
process up to a higher level. This allows FastISel to leverage
more of SelectionDAGISel's infastructure, such as updating Machine
PHI nodes.
Also, implement transitioning from SDISel back to FastISel in
the middle of a block, so it's now possible to go back and
forth. This allows FastISel to hand individual CallInsts and other
complicated things off to SDISel to handle, while handling the rest
of the block itself.
To help support this, reorganize the SelectionDAG class so that it
is allocated once and reused throughout a function, instead of
being completely reallocated for each block.
llvm-svn: 55219
|
| |
|
|
| |
llvm-svn: 55186
|
| |
|
|
|
|
|
| |
so that lwarx and stwcx are always executed the same number of times.
This is important for performance, I'm told.
llvm-svn: 55163
|
| |
|
|
|
|
| |
from all targets.
llvm-svn: 55124
|
| |
|
|
| |
llvm-svn: 55092
|
| |
|
|
| |
llvm-svn: 54888
|
| |
|
|
| |
llvm-svn: 54887
|
| |
|
|
| |
llvm-svn: 54847
|
| |
|
|
| |
llvm-svn: 54846
|
| |
|
|
|
|
| |
had to be propoagated down into all the targets and up into all clients of this API.
llvm-svn: 54802
|
| |
|
|
| |
llvm-svn: 54644
|
| |
|
|
| |
llvm-svn: 54540
|
| |
|
|
| |
llvm-svn: 54539
|
| |
|
|
| |
llvm-svn: 54538
|
| |
|
|
| |
llvm-svn: 54537
|
| |
|
|
| |
llvm-svn: 54536
|
| |
|
|
|
|
|
|
| |
switches use the binary search algorithm) for
environments that don't support it. PPC64 JIT
is such an environment; turn the flag on for that.
llvm-svn: 54248
|
| |
|
|
| |
llvm-svn: 54128
|
| |
|
|
|
|
|
| |
parallel its analogue, Value::value_use_iterator. The operator* method
now returns the user, rather than the use.
llvm-svn: 54127
|
| |
|
|
|
|
| |
(all of the parameter registers are used) are loaded from sp offsets that were off by 4.
llvm-svn: 53979
|
| |
|
|
|
|
|
|
|
|
|
|
| |
generic SDNode's (nodes with their own constructors
should do sanity checking in the constructor). Add
sanity checks for BUILD_VECTOR and fix all the places
that were producing bogus BUILD_VECTORs, as found by
"make check". My favorite is the BUILD_VECTOR with
only two operands that was being used to build a
vector with four elements!
llvm-svn: 53850
|
| |
|
|
| |
llvm-svn: 53801
|
| |
|
|
|
|
|
|
|
|
| |
returns a node with the right number of
return values. This fixes codegen of
Generic/cast-fp.ll, Generic/fp_to_int.ll
and PowerPC/multiple-return-values.ll
when using -march=ppc32 -mattr=+64bit.
llvm-svn: 53794
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
replacement of multiple values. This is slightly more efficient
than doing multiple ReplaceAllUsesOfValueWith calls, and theoretically
could be optimized even further. However, an important property of this
new function is that it handles the case where the source value set and
destination value set overlap. This makes it feasible for isel to use
SelectNodeTo in many very common cases, which is advantageous because
SelectNodeTo avoids a temporary node and it doesn't require CSEMap
updates for users of values that don't change position.
Revamp MorphNodeTo, which is what does all the work of SelectNodeTo, to
handle operand lists more efficiently, and to correctly handle a number
of corner cases to which its new wider use exposes it.
This commit also includes a change to the encoding of post-isel opcodes
in SDNodes; now instead of being sandwiched between the target-independent
pre-isel opcodes and the target-dependent pre-isel opcodes, post-isel
opcodes are now represented as negative values. This makes it possible
to test if an opcode is pre-isel or post-isel without having to know
the size of the current target's post-isel instruction set.
These changes speed up llc overall by 3% and reduce memory usage by 10%
on the InstructionCombining.cpp testcase with -fast and -regalloc=local.
llvm-svn: 53728
|