History log of /llvm-project/llvm/lib/CodeGen/MachineSink.cpp (Results 251 – 275 of 275)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# be8137b0 07-Oct-2009 Dan Gohman <gohman@apple.com>

Replace TargetInstrInfo::isInvariantLoad and its target-specific
implementations with a new MachineInstr::isInvariantLoad, which uses
MachineMemOperands and is target-independent. This brings Machine

Replace TargetInstrInfo::isInvariantLoad and its target-specific
implementations with a new MachineInstr::isInvariantLoad, which uses
MachineMemOperands and is target-independent. This brings MachineLICM
and other functionality to targets which previously lacked an
isInvariantLoad implementation.

llvm-svn: 83475

show more ...


# 2f5bdcb7 26-Sep-2009 Dan Gohman <gohman@apple.com>

Don't hoist or sink instructions with physreg uses if the physreg is
allocatable. Even if it doesn't appear to have any defs, it may latter
on after register allocation.

llvm-svn: 82834


# a317687e 25-Sep-2009 Dan Gohman <gohman@apple.com>

Fix MachineSink to be able to sink instructions that use physical registers
which have no defs anywhere in the function. In particular, this fixes sinking
of instructions that reference RIP on x86-64

Fix MachineSink to be able to sink instructions that use physical registers
which have no defs anywhere in the function. In particular, this fixes sinking
of instructions that reference RIP on x86-64, which is currently being modeled
as a register.

llvm-svn: 82815

show more ...


# 5edd45a7 25-Sep-2009 Dan Gohman <gohman@apple.com>

Simplify this code by using use_iterator instead of reg_iterator
and skipping the defs.

llvm-svn: 82811


# 565449d7 23-Aug-2009 Chris Lattner <sabre@nondot.org>

remove std::ostream versions of printing stuff for MBB and MF,
upgrading a few things to use raw_ostream

llvm-svn: 79811


# 63aa0000 22-Aug-2009 Bill Wendling <isanbard@gmail.com>

Convert DOUT to DEBUG(errs()...).

llvm-svn: 79755


# 5d79a2c6 05-Aug-2009 Dan Gohman <gohman@apple.com>

Various comment fixes.

llvm-svn: 78139


# 0402315d 31-Jul-2009 Dan Gohman <gohman@apple.com>

Use setPreservesAll and setPreservesCFG in CodeGen passes.

llvm-svn: 77754


# 30c3de64 10-Apr-2009 Chris Lattner <sabre@nondot.org>

fix two problems with machine sinking:
1. Sinking would crash when the first instruction of a block was
sunk due to iterator problems.
2. Instructions could be sunk to their current block, causing

fix two problems with machine sinking:
1. Sinking would crash when the first instruction of a block was
sunk due to iterator problems.
2. Instructions could be sunk to their current block, causing an
infinite loop.

This fixes PR3968

llvm-svn: 68787

show more ...


Revision tags: llvmorg-2.5.0
# 2510436e 15-Feb-2009 Evan Cheng <evan.cheng@apple.com>

Fix PR3522. It's not safe to sink into landing pad BB's.

llvm-svn: 64582


# 47a65a16 07-Feb-2009 Evan Cheng <evan.cheng@apple.com>

Don't sink the instruction if TargetRegisterInfo::isSafeToMoveRegClassDefs doesn't think it's safe. This works around PR1911.

llvm-svn: 63994


# 906152a2 05-Jan-2009 Dan Gohman <gohman@apple.com>

Tidy up #includes, deleting a bunch of unnecessary #includes.

llvm-svn: 61715


Revision tags: llvmorg-2.4.0
# 0d1e9a8e 03-Oct-2008 Dan Gohman <gohman@apple.com>

Switch the MachineOperand accessors back to the short names like
isReg, etc., from isRegister, etc.

llvm-svn: 57006


# 38453eeb 13-Sep-2008 Dan Gohman <gohman@apple.com>

Remove isImm(), isReg(), and friends, in favor of
isImmediate(), isRegister(), and friends, to avoid confusion
about having two different names with the same meaning. I'm
not attached to the longer

Remove isImm(), isReg(), and friends, in favor of
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

show more ...


# a79db30d 04-Sep-2008 Dan Gohman <gohman@apple.com>

Tidy up several unbeseeming casts from pointer to intptr_t.

llvm-svn: 55779


Revision tags: llvmorg-2.3.0
# d78c400b 13-May-2008 Dan Gohman <gohman@apple.com>

Clean up the use of static and anonymous namespaces. This turned up
several things that were neither in an anonymous namespace nor static
but not intended to be global.

llvm-svn: 51017


# 399e1101 13-Mar-2008 Evan Cheng <evan.cheng@apple.com>

Refactor some code out of MachineSink into a MachineInstr query.

llvm-svn: 48311


Revision tags: llvmorg-2.2.0
# 3a4be0fd 10-Feb-2008 Dan Gohman <gohman@apple.com>

Rename MRegisterInfo to TargetRegisterInfo.

llvm-svn: 46930


# 08af5a9d 12-Jan-2008 Chris Lattner <sabre@nondot.org>

implement support for sinking a load out the bottom of a block that
has no stores between the load and the end of block. This works
great and sinks hundreds of stores, but we can't turn it on becau

implement support for sinking a load out the bottom of a block that
has no stores between the load and the end of block. This works
great and sinks hundreds of stores, but we can't turn it on because
machineinstrs don't have volatility information and we don't want to
sink volatile stores :(

llvm-svn: 45894

show more ...


# c8226f32 10-Jan-2008 Chris Lattner <sabre@nondot.org>

Simplify the side effect stuff a bit more and make licm/sinking
both work right according to the new flags.

This removes the TII::isReallySideEffectFree predicate, and adds
TII::isInvariantLoad.

I

Simplify the side effect stuff a bit more and make licm/sinking
both work right according to the new flags.

This removes the TII::isReallySideEffectFree predicate, and adds
TII::isInvariantLoad.

It removes NeverHasSideEffects+MayHaveSideEffects and adds
UnmodeledSideEffects as machine instr flags. Now the clients
can decide everything they need.

I think isRematerializable can be implemented in terms of the
flags we have now, though I will let others tackle that.

llvm-svn: 45843

show more ...


# f3bd2cd3 10-Jan-2008 Chris Lattner <sabre@nondot.org>

Clamp down on sinking of lots of instructions.

llvm-svn: 45841


# ee61d14b 05-Jan-2008 Chris Lattner <sabre@nondot.org>

The current impl is really trivial, add some comments about how it can be made better.

llvm-svn: 45625


# d11ca169 05-Jan-2008 Chris Lattner <sabre@nondot.org>

don't sink anything with side effects, this makes lots of stuff work, but sinks almost nothing.

llvm-svn: 45617


# 6ec78274 05-Jan-2008 Chris Lattner <sabre@nondot.org>

fix a common crash.

llvm-svn: 45614


# f3edc09f 04-Jan-2008 Chris Lattner <sabre@nondot.org>

Add a really quick hack at a machine code sinking pass, enabled with --enable-sinking.
It is missing validity checks, so it is known broken. However, it is powerful enough
to compile this contrive

Add a really quick hack at a machine code sinking pass, enabled with --enable-sinking.
It is missing validity checks, so it is known broken. However, it is powerful enough
to compile this contrived code:

void test1(int C, double A, double B, double *P) {
double Tmp = A*A+B*B;
*P = C ? Tmp : A;
}

into:

_test1:
movsd 8(%esp), %xmm0
cmpl $0, 4(%esp)
je LBB1_2 # entry
LBB1_1: # entry
movsd 16(%esp), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
LBB1_2: # entry
movl 24(%esp), %eax
movsd %xmm0, (%eax)
ret

instead of:

_test1:
movsd 16(%esp), %xmm0
mulsd %xmm0, %xmm0
movsd 8(%esp), %xmm1
movapd %xmm1, %xmm2
mulsd %xmm2, %xmm2
addsd %xmm0, %xmm2
cmpl $0, 4(%esp)
je LBB1_2 # entry
LBB1_1: # entry
movapd %xmm2, %xmm1
LBB1_2: # entry
movl 24(%esp), %eax
movsd %xmm1, (%eax)
ret

woo.

llvm-svn: 45570

show more ...


1...<<11