History log of /llvm-project/llvm/include/llvm/CodeGen/SelectionDAGNodes.h (Results 326 – 350 of 866)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# b4690e3f 31-May-2014 Adam Nemet <anemet@apple.com>

[SelectionDAG] Force cycle detection in AssignTopologicalOrder before aborting

DAG cycle detection is only enabled with ENABLE_EXPENSIVE_CHECKS. However we
can run it just before we would crash in

[SelectionDAG] Force cycle detection in AssignTopologicalOrder before aborting

DAG cycle detection is only enabled with ENABLE_EXPENSIVE_CHECKS. However we
can run it just before we would crash in order to provide more informative
diagnostics.

Now in addition to the "Overran sorted position" message we also get the Node
printed if a cycle was detected.

Tested by building several configs: Debug+Assert, Debug+Assert+Check (this is
ENABLE_EXPENSIVE_CHECKS), Release+Assert and Release. Also tried that the
AssignTopologicalOrder assert produces the expected results.

llvm-svn: 209977

show more ...


# 7d39430a 31-May-2014 Adam Nemet <anemet@apple.com>

[SelectionDAG] Pass DAG to checkForCycles

Pass the DAG down to checkForCycles from all callers where we have it. This
allows target-specific nodes to be printed properly.

Also print some missing n

[SelectionDAG] Pass DAG to checkForCycles

Pass the DAG down to checkForCycles from all callers where we have it. This
allows target-specific nodes to be printed properly.

Also print some missing newlines.

llvm-svn: 209976

show more ...


Revision tags: llvmorg-3.4.2, llvmorg-3.4.2-rc1
# 2893b2e1 27-Apr-2014 Craig Topper <craig.topper@gmail.com>

Fix an assert I accidentally broke to hopefully fix the build bots.

llvm-svn: 207380


# bb533072 27-Apr-2014 Craig Topper <craig.topper@gmail.com>

Convert SDNode constructor to use ArrayRef.

llvm-svn: 207375


# 2d7d6052 27-Apr-2014 Craig Topper <craig.topper@gmail.com>

Const-correct SelectionDAG::getAtomic.

llvm-svn: 207373


# 206fcd45 26-Apr-2014 Craig Topper <craig.topper@gmail.com>

Convert getMemIntrinsicNode to take ArrayRef of SDValue instead of pointer and size.

llvm-svn: 207329


Revision tags: llvmorg-3.4.1, llvmorg-3.4.1-rc2
# aad475b3 15-Apr-2014 Nick Lewycky <nicholas@mxc.ca>

Break PseudoSourceValue out of the Value hierarchy. It is now the root of its own tree containing FixedStackPseudoSourceValue (which you can use isa/dyn_cast on) and MipsCallEntry (which you can't).

Break PseudoSourceValue out of the Value hierarchy. It is now the root of its own tree containing FixedStackPseudoSourceValue (which you can use isa/dyn_cast on) and MipsCallEntry (which you can't). Anything that needs to use either a PseudoSourceValue* and Value* is strongly encouraged to use a MachinePointerInfo instead.

llvm-svn: 206255

show more ...


# c0196b1b 14-Apr-2014 Craig Topper <craig.topper@gmail.com>

[C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr.

llvm-svn: 206142


Revision tags: llvmorg-3.4.1-rc1
# e2e1c355 11-Apr-2014 Jim Grosbach <grosbach@apple.com>

SDNode: Add uses() iterator_range convenience methods.

llvm-svn: 206005


# 5b0aacf1 22-Mar-2014 Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net>

[DAG] Fix an assertion failure caused by an invalid cast in method 'BuildVectorSDNode::isConstantSplat'

This patch renames method 'isConstantSplat' as 'getConstantSplatValue'
(mainly for consistency

[DAG] Fix an assertion failure caused by an invalid cast in method 'BuildVectorSDNode::isConstantSplat'

This patch renames method 'isConstantSplat' as 'getConstantSplatValue'
(mainly for consistency reasons), and rewrites its logic to ensure
that we always perform a legal 'cast<ConstantSDNode>'.

Added test shift-combine-crash.ll to verify that DAGCombiner no longer crashes with an assertion failure in the attempt to simplify a vector shift by a vector of all undef counts.

llvm-svn: 204536

show more ...


# 985b9de4 17-Mar-2014 Matt Arsenault <Matthew.Arsenault@amd.com>

Make DAGCombiner work on vector bitshifts with constant splat vectors.

llvm-svn: 204071


# e94a518a 11-Mar-2014 Tim Northover <tnorthover@apple.com>

IR: add a second ordering operand to cmpxhg for failure

The syntax for "cmpxchg" should now look something like:

cmpxchg i32* %addr, i32 42, i32 3 acquire monotonic

where the second ordering argu

IR: add a second ordering operand to cmpxhg for failure

The syntax for "cmpxchg" should now look something like:

cmpxchg i32* %addr, i32 42, i32 3 acquire monotonic

where the second ordering argument gives the required semantics in the case
that no exchange takes place. It should be no stronger than the first ordering
constraint and cannot be either "release" or "acq_rel" (since no store will
have taken place).

rdar://problem/15996804

llvm-svn: 203559

show more ...


# 3d994021 11-Mar-2014 Matt Arsenault <Matthew.Arsenault@amd.com>

Add helpers for getting scalar sizes of vector value types.

llvm-svn: 203526


# 92051407 05-Mar-2014 Chandler Carruth <chandlerc@gmail.com>

[Layering] Move DebugLoc.h into the IR library. The implementation
already lived there and it is where it belongs -- this is the in-memory
debug location representation.

This is just cleanup -- Modu

[Layering] Move DebugLoc.h into the IR library. The implementation
already lived there and it is where it belongs -- this is the in-memory
debug location representation.

This is just cleanup -- Modules can actually cope with this, but that
doesn't make it right. After chatting with folks that have out-of-tree
stuff, going ahead and moving the rest of the headers seems preferable.

llvm-svn: 202960

show more ...


# b2f034b8 03-Mar-2014 Benjamin Kramer <benny.kra@googlemail.com>

[C++11] Use std::tie to simplify compare operators.

No functionality change.

llvm-svn: 202751


# b6d0bd48 02-Mar-2014 Benjamin Kramer <benny.kra@googlemail.com>

[C++11] Replace llvm::next and llvm::prior with std::next and std::prev.

Remove the old functions.

llvm-svn: 202636


# b598f7b8 24-Feb-2014 Matt Arsenault <Matthew.Arsenault@amd.com>

Add missing const

llvm-svn: 202074


# 73afb432 27-Jan-2014 Reid Kleckner <reid@kleckner.net>

Silence MSVC warning on 'uint16_t |= bool' with a cast

This isn't C4800, it's C4805. MSVC says this is unsafe, but it
generates correct code.

llvm-svn: 200229


# f26beda7 25-Jan-2014 Juergen Ributzka <juergen@apple.com>

Revert "Revert "Add Constant Hoisting Pass" (r200034)"

This reverts commit r200058 and adds the using directive for
ARMTargetTransformInfo to silence two g++ overload warnings.

llvm-svn: 200062


# 4d67a2e8 25-Jan-2014 Hans Wennborg <hans@hanshq.net>

Revert "Add Constant Hoisting Pass" (r200034)

This commit caused -Woverloaded-virtual warnings. The two new
TargetTransformInfo::getIntImmCost functions were only added to the superclass,
and to the

Revert "Add Constant Hoisting Pass" (r200034)

This commit caused -Woverloaded-virtual warnings. The two new
TargetTransformInfo::getIntImmCost functions were only added to the superclass,
and to the X86 subclass. The other targets were not updated, and the
warning highlighted this by pointing out that e.g. ARMTTI::getIntImmCost was
hiding the two new getIntImmCost variants.

We could pacify the warning by adding "using TargetTransformInfo::getIntImmCost"
to the various subclasses, or turning it off, but I suspect that it's wrong to
leave the functions unimplemnted in those targets. The default implementations
return TCC_Free, which I don't think is right e.g. for ARM.

llvm-svn: 200058

show more ...


# 4f3df4ad 24-Jan-2014 Juergen Ributzka <juergen@apple.com>

Add Constant Hoisting Pass

Retry commit r200022 with a fix for the build bot errors. Constant expressions
have (unlike instructions) module scope use lists and therefore may have users
in different

Add Constant Hoisting Pass

Retry commit r200022 with a fix for the build bot errors. Constant expressions
have (unlike instructions) module scope use lists and therefore may have users
in different functions. The fix is to simply ignore these out-of-function uses.

llvm-svn: 200034

show more ...


# 50e7e80d 24-Jan-2014 Juergen Ributzka <juergen@apple.com>

Revert "Add Constant Hoisting Pass"

This reverts commit r200022 to unbreak the build bots.

llvm-svn: 200024


# 38b67d0c 24-Jan-2014 Juergen Ributzka <juergen@apple.com>

Add Constant Hoisting Pass

This pass identifies expensive constants to hoist and coalesces them to
better prepare it for SelectionDAG-based code generation. This works around the
limitations of the

Add Constant Hoisting Pass

This pass identifies expensive constants to hoist and coalesces them to
better prepare it for SelectionDAG-based code generation. This works around the
limitations of the basic-block-at-a-time approach.

First it scans all instructions for integer constants and calculates its
cost. If the constant can be folded into the instruction (the cost is
TCC_Free) or the cost is just a simple operation (TCC_BASIC), then we don't
consider it expensive and leave it alone. This is the default behavior and
the default implementation of getIntImmCost will always return TCC_Free.

If the cost is more than TCC_BASIC, then the integer constant can't be folded
into the instruction and it might be beneficial to hoist the constant.
Similar constants are coalesced to reduce register pressure and
materialization code.

When a constant is hoisted, it is also hidden behind a bitcast to force it to
be live-out of the basic block. Otherwise the constant would be just
duplicated and each basic block would have its own copy in the SelectionDAG.
The SelectionDAG recognizes such constants as opaque and doesn't perform
certain transformations on them, which would create a new expensive constant.

This optimization is only applied to integer constants in instructions and
simple (this means not nested) constant cast experessions. For example:
%0 = load i64* inttoptr (i64 big_constant to i64*)

Reviewed by Eric

llvm-svn: 200022

show more ...


# 7384405f 13-Jan-2014 Juergen Ributzka <juergen@apple.com>

[DAG] Teach DAG to also reassociate vector operations

This commit teaches DAG to reassociate vector ops, which in turn enables
constant folding of vector op chains that appear later on during custom

[DAG] Teach DAG to also reassociate vector operations

This commit teaches DAG to reassociate vector ops, which in turn enables
constant folding of vector op chains that appear later on during custom lowering
and DAG combine.

Reviewed by Andrea Di Biagio

llvm-svn: 199135

show more ...


# 46dcddb3 27-Dec-2013 Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net>

Teach DAGCombiner how to fold a SIGN_EXTEND_INREG of a BUILD_VECTOR of
ConstantSDNodes (or UNDEFs) into a simple BUILD_VECTOR.

For example, given the following sequence of dag nodes:

i32 C = Cons

Teach DAGCombiner how to fold a SIGN_EXTEND_INREG of a BUILD_VECTOR of
ConstantSDNodes (or UNDEFs) into a simple BUILD_VECTOR.

For example, given the following sequence of dag nodes:

i32 C = Constant<1>
v4i32 V = BUILD_VECTOR C, C, C, C
v4i32 Result = SIGN_EXTEND_INREG V, ValueType:v4i1

The SIGN_EXTEND_INREG node can be folded into a build_vector since
the vector in input is a BUILD_VECTOR of constants.

The optimized sequence is:

i32 C = Constant<-1>
v4i32 Result = BUILD_VECTOR C, C, C, C

llvm-svn: 198084

show more ...


1...<<11121314151617181920>>...35