| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 47380
|
| |
|
|
| |
llvm-svn: 47368
|
| |
|
|
|
|
|
|
| |
AddNodeIDNode does profiling for a ConstantSDNode, but so does
SelectionDAG::getConstant. This profiling should be moved to a common
static function in ConstantSDNode.
llvm-svn: 47359
|
| |
|
|
|
|
|
|
| |
check if it's essentially a SCALAR_TO_VECTOR. Avoid turning (v8i16) <10, u, u, u> to <10, 0, u, u, u, u, u, u>. Instead, simply convert it to a SCALAR_TO_VECTOR of the proper type.
- X86 now normalize SCALAR_TO_VECTOR to (BIT_CONVERT (v4i32 SCALAR_TO_VECTOR)). Get rid of X86ISD::S2VEC.
llvm-svn: 47290
|
| |
|
|
| |
llvm-svn: 47204
|
| |
|
|
| |
llvm-svn: 47128
|
| |
|
|
| |
llvm-svn: 47101
|
| |
|
|
| |
llvm-svn: 47098
|
| |
|
|
|
|
| |
to pass the mask APInt by value, not by reference.
llvm-svn: 47096
|
| |
|
|
|
|
|
| |
Add an overload that supports the uint64_t interface for use by clients
that haven't been updated yet.
llvm-svn: 47039
|
| |
|
|
|
|
|
|
|
|
| |
Added member template "Add" to FoldingSetNodeID that allows "adding" arbitrary
objects to a profile via dispatch to FoldingSetTrait<T>::Profile().
Removed FoldingSetNodeID::AddAPFloat and FoldingSetNodeID::APInt, as their
functionality is now replaced using the above mentioned member template.
llvm-svn: 46957
|
| |
|
|
| |
llvm-svn: 46930
|
| |
|
|
| |
llvm-svn: 46926
|
| |
|
|
|
|
| |
begin adding some methods to use it this way.
llvm-svn: 46899
|
| |
|
|
| |
llvm-svn: 46876
|
| |
|
|
|
|
|
| |
to return pointers instead of references, since this is always what
is needed.
llvm-svn: 46857
|
| |
|
|
|
|
|
|
| |
initializer problem, a minor tweak to the way the
DAGISelEmitter finds load/store nodes, and a renaming of the
new PseudoSourceValue objects.
llvm-svn: 46827
|
| |
|
|
| |
llvm-svn: 46776
|
| |
|
|
| |
llvm-svn: 46725
|
| |
|
|
|
|
|
|
|
|
| |
DAGUpdateListener object pointer instead of just returning a vector
of deleted nodes. This makes the interfaces more efficient (no more
allocating a vector [at least a malloc], filling it in, then walking
it) and more clean. This also allows the client to be notified of
nodes that are *changed* but not deleted.
llvm-svn: 46677
|
| |
|
|
|
|
|
|
|
| |
SelectionDAG::ReplaceAllUsesWith to handle replacement of
an SDOperand with *any* sdoperand, not just one for a node with
a single result. Note that this has a horrible FIXME'd hack in it
to work around PR1975. This should be removed when PR1975 is fixed.
llvm-svn: 46674
|
| |
|
|
|
|
|
|
|
| |
information descriptor and its corresponding stack frame index in MachineModuleInfo. This only works if the local variable is "homed" in the stack frame. It does not work for byval parameter, etc.
Added ISD::DECLARE node type to represent llvm.dbg.declare intrinsic. Now the intrinsic calls are lowered into a SDNode and lives on through out the codegen passes.
For now, since all the debugging information recording is done at isel time, when a ISD::DECLARE node is selected, it has the side effect of also recording the variable. This is a short term solution that should be fixed in time.
llvm-svn: 46659
|
| |
|
|
|
|
| |
re-commit.
llvm-svn: 46623
|
| |
|
|
|
|
| |
or misc labels. This fixes the EH breakage. However I am not convinced this is *the* solution.
llvm-svn: 46609
|
| |
|
|
|
|
| |
with the real FLT_ROUNDS (defined in <float.h>).
llvm-svn: 46587
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
in the backend. Introduce a new SDNode type, MemOperandSDNode, for
holding a MemOperand in the SelectionDAG IR, and add a MemOperand
list to MachineInstr, and code to manage them. Remove the offset
field from SrcValueSDNode; uses of SrcValueSDNode that were using
it are all all using MemOperandSDNode now.
Also, begin updating some getLoad and getStore calls to use the
PseudoSourceValue objects.
Most of this was written by Florian Brander, some
reorganization and updating to TOT by me.
llvm-svn: 46585
|
| |
|
|
|
|
|
|
| |
and StoreSDNode into their common base class LSBaseSDNode. Member
functions getLoadedVT and getStoredVT are replaced with the common
getMemoryVT to simplify code that will handle both loads and stores.
llvm-svn: 46538
|
| |
|
|
| |
llvm-svn: 46514
|
| |
|
|
|
|
| |
occurs expanding i64 ops.
llvm-svn: 46383
|
| |
|
|
|
|
|
|
| |
NDEBUG. This is in response to a really nasty bug I introduced that
Dale tracked down, hopefully this won't happen in the future.
Many thanks Dale.
llvm-svn: 46254
|
| |
|
|
| |
llvm-svn: 46204
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
and switch various codegen pieces and the X86 backend over
to using it.
* Add some comments to SelectionDAGNodes.h
* Introduce a second argument to FP_ROUND, which indicates
whether the FP_ROUND changes the value of its input. If
not it is safe to xform things like fp_extend(fp_round(x)) -> x.
llvm-svn: 46125
|
| |
|
|
|
|
| |
simplification. This fixes automotive-basicmath on PPC.
llvm-svn: 46072
|
| |
|
|
|
|
|
| |
a public SDOperand::reachesChainWithoutSideEffects method. No
functionality change.
llvm-svn: 46050
|
| |
|
|
|
|
| |
as well as PPC codegen
llvm-svn: 46001
|
| |
|
|
| |
llvm-svn: 45680
|
| |
|
|
| |
llvm-svn: 45418
|
| |
|
|
| |
llvm-svn: 45322
|
| |
|
|
|
|
| |
store node id.
llvm-svn: 45167
|
| |
|
|
| |
llvm-svn: 45164
|
| |
|
|
| |
llvm-svn: 45151
|
| |
|
|
|
|
|
|
| |
SelectionDAG::getConstant, in the same way as vector floating-point
constants. This allows the legalize expansion code for @llvm.ctpop and
friends to be usable with vector types.
llvm-svn: 44954
|
| |
|
|
| |
llvm-svn: 44837
|
| |
|
|
|
|
| |
Codegen bits and llvm-gcc support will follow.
llvm-svn: 44182
|
| |
|
|
|
|
|
|
| |
offload to getStore rather than trying to handle
both cases at once (the assertions for example
assume the store really is truncating).
llvm-svn: 43498
|
| |
|
|
|
|
|
|
|
| |
asserts in later checks rather than producing
the ordinary load it is supposed to. Avoid all
such hassles by directly returning an ordinary
load in this case.
llvm-svn: 43174
|
| |
|
|
|
|
|
|
|
|
| |
To do this it is necessary to add a "always inline" argument to the
memcpy node. For completeness I have also added this node to memmove
and memset. I have also added getMem* functions, because the extra
argument makes it cumbersome to use getNode and because I get confused
by it :-)
llvm-svn: 43172
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
types. This is needed for SIGN_EXTEND_INREG at least.
It is not clear if this is correct for other operations.
On the other hand, for the various load/store actions
it seems to correct to return the type action, as is
currently done.
Also, it seems that SelectionDAG::getValueType can be
called for extended value types; introduce a map for
holding these, since we don't really want to extend
the vector to be 2^32 pointers long!
Generalize DAGTypeLegalizer::PromoteResult_TRUNCATE
and DAGTypeLegalizer::PromoteResult_INT_EXTEND to handle
the various funky possibilities that apints introduce,
for example that you can promote to a type that needs
to be expanded.
llvm-svn: 43071
|
| |
|
|
|
|
|
| |
Remove the assumption that this will happen from
various places.
llvm-svn: 43053
|
| |
|
|
|
|
|
|
|
|
| |
codegen support. This should have no effect on codegen
for other types. Debatable bits: (1) the use (abuse?)
of a set in SDNode::getValueTypeList; (2) the length of
getTypeToTransformTo, which maybe should be refactored
with a non-inline part for extended value types.
llvm-svn: 43030
|