History log of /llvm-project/llvm/lib/CodeGen/MachineSink.cpp (Results 201 – 225 of 275)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 8c549b58 31-Jul-2012 Manman Ren <mren@apple.com>

MachineSink: Sort the successors before trying to find SuccToSinkTo.

One motivating example is to sink an instruction from a basic block which has
two successors: one outside the loop, the other ins

MachineSink: Sort the successors before trying to find SuccToSinkTo.

One motivating example is to sink an instruction from a basic block which has
two successors: one outside the loop, the other inside the loop. We should try
to sink the instruction outside the loop.

rdar://11980766

llvm-svn: 161062

show more ...


Revision tags: llvmorg-3.1.0, llvmorg-3.1.0-rc3, llvmorg-3.1.0-rc2, llvmorg-3.1.0-rc1
# 1fa5bcbe 08-Feb-2012 Andrew Trick <atrick@apple.com>

Codegen pass definition cleanup. No functionality.

Moving toward a uniform style of pass definition to allow easier target configuration.
Globally declare Pass ID.
Globally declare pass initializer.

Codegen pass definition cleanup. No functionality.

Moving toward a uniform style of pass definition to allow easier target configuration.
Globally declare Pass ID.
Globally declare pass initializer.
Use INITIALIZE_PASS consistently.
Add a call to the initializer from CodeGen.cpp.
Remove redundant "createPass" functions and "getPassName" methods.

While cleaning up declarations, cleaned up comments (sorry for large diff).

llvm-svn: 150100

show more ...


# 9e761997 08-Feb-2012 Andrew Trick <atrick@apple.com>

whitespace

llvm-svn: 150094


# 86ae07f0 16-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk>

Extract method for detecting constant unallocatable physregs.

It is safe to move uses of such registers.

llvm-svn: 148259


# c2686886 14-Dec-2011 Devang Patel <dpatel@apple.com>

Do not sink instruction, if it is not profitable.

On ARM, peephole optimization for ABS creates a trivial cfg triangle which tempts machine sink to sink instructions in code which is really straight

Do not sink instruction, if it is not profitable.

On ARM, peephole optimization for ABS creates a trivial cfg triangle which tempts machine sink to sink instructions in code which is really straight line code. Sometimes this sinking may alter register allocator input such that use and def of a reg is divided by a branch in between, which may result in extra spills. Now mahine sink avoids sinking if final sink destination is post dominator.

Radar 10266272.

llvm-svn: 146604

show more ...


# 706574a9 09-Dec-2011 Devang Patel <dpatel@apple.com>

Fix comment.

llvm-svn: 146226


# 2f9a0e1b 09-Dec-2011 Devang Patel <dpatel@apple.com>

Update stale comment.

llvm-svn: 146220


# 202cf2f6 08-Dec-2011 Devang Patel <dpatel@apple.com>

Revert r146184. I am seeing performance regression cause by this patch in one test case.

llvm-svn: 146205


# b94c9a47 08-Dec-2011 Devang Patel <dpatel@apple.com>

Refactor. No intentional functionality change.

llvm-svn: 146187


# 1a3c1697 08-Dec-2011 Devang Patel <dpatel@apple.com>

Filter "sink to" candidate blocks sooner. This avoids unnecessary computation to determine whether the block dominates all uses or not.

llvm-svn: 146184


# 7f8e563a 07-Dec-2011 Evan Cheng <evan.cheng@apple.com>

Add bundle aware API for querying instruction properties and switch the code
generator to it. For non-bundle instructions, these behave exactly the same
as the MC layer API.

For properties like mayL

Add bundle aware API for querying instruction properties and switch the code
generator to it. For non-bundle instructions, these behave exactly the same
as the MC layer API.

For properties like mayLoad / mayStore, look into the bundle and if any of the
bundled instructions has the property it would return true.
For properties like isPredicable, only return true if *all* of the bundled
instructions have the property.
For properties like canFoldAsLoad, isCompare, conservatively return false for
bundles.

llvm-svn: 146026

show more ...


Revision tags: llvmorg-3.0.0, llvmorg-3.0.0-rc4, llvmorg-3.0.0-rc3, llvmorg-3.0.0-rc2, llvmorg-3.0.0-rc1
# 9de7a7db 07-Sep-2011 Devang Patel <dpatel@apple.com>

While sinking machine instructions, sink matching DBG_VALUEs also otherwise live debug variable pass will drop DBG_VALUEs on the floor.

llvm-svn: 139208


# fe917efc 11-Apr-2011 Evan Cheng <evan.cheng@apple.com>

Fix a couple of places where changes are made but not tracked.

llvm-svn: 129287


Revision tags: llvmorg-2.9.0, llvmorg-2.9.0-rc3, llvmorg-2.9.0-rc2, llvmorg-2.9.0-rc1
# 6c18d1aa 19-Oct-2010 Owen Anderson <resistor@mac.com>

Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which
must be called in the pass's constructor. This function uses static dependency

Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which
must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize
the pass's dependencies.

Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the
CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h
before parsing commandline arguments.

I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems
with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass
registration/creation, please send the testcase to me directly.

llvm-svn: 116820

show more ...


# 8ac477ff 12-Oct-2010 Owen Anderson <resistor@mac.com>

Begin adding static dependence information to passes, which will allow us to
perform initialization without static constructors AND without explicit initialization
by the client. For the moment, pas

Begin adding static dependence information to passes, which will allow us to
perform initialization without static constructors AND without explicit initialization
by the client. For the moment, passes are required to initialize both their
(potential) dependencies and any passes they preserve. I hope to be able to relax
the latter requirement in the future.

llvm-svn: 116334

show more ...


# df7a4f25 07-Oct-2010 Owen Anderson <resistor@mac.com>

Now with fewer extraneous semicolons!

llvm-svn: 115996


Revision tags: llvmorg-2.8.0, llvmorg-2.8.0-rc3
# d4b31a76 23-Sep-2010 Evan Cheng <evan.cheng@apple.com>

Don't sink insert_subreg, subreg_to_reg, reg_sequence. They are meant to be
close to their sources to facilitate coalescing.

llvm-svn: 114631


# f3e9a485 20-Sep-2010 Evan Cheng <evan.cheng@apple.com>

Enable machine sinking critical edge splitting. e.g.

define double @foo(double %x, double %y, i1 %c) nounwind {
%a = fdiv double %x, 3.2
%z = select i1 %c, double %a, double %y
ret double %z
}

Enable machine sinking critical edge splitting. e.g.

define double @foo(double %x, double %y, i1 %c) nounwind {
%a = fdiv double %x, 3.2
%z = select i1 %c, double %a, double %y
ret double %z
}

Was:
_foo:
divsd LCPI0_0(%rip), %xmm0
testb $1, %dil
jne LBB0_2
movaps %xmm1, %xmm0
LBB0_2:
ret

Now:
_foo:
testb $1, %dil
je LBB0_2
divsd LCPI0_0(%rip), %xmm0
ret
LBB0_2:
movaps %xmm1, %xmm0
ret

This avoids the divsd when early exit is taken.
rdar://8454886

llvm-svn: 114372

show more ...


# 2031b768 20-Sep-2010 Evan Cheng <evan.cheng@apple.com>

Avoid splitting critical edge twice for a set of PHI uses.

llvm-svn: 114338


Revision tags: llvmorg-2.8.0-rc2
# b339f3da 18-Sep-2010 Evan Cheng <evan.cheng@apple.com>

Fix code that break critical edges for PHI uses. Watch out for multiple PHIs in different blocks.

llvm-svn: 114270


# e53ab6df 17-Sep-2010 Evan Cheng <evan.cheng@apple.com>

Teach machine sink to
1) Do forward copy propagation. This makes it easier to estimate the cost of the
instruction being sunk.
2) Break critical edges on demand, including cases where the value is

Teach machine sink to
1) Do forward copy propagation. This makes it easier to estimate the cost of the
instruction being sunk.
2) Break critical edges on demand, including cases where the value is used by
PHI nodes.
Critical edge splitting is not yet enabled by default.

llvm-svn: 114227

show more ...


Revision tags: llvmorg-2.8.0-rc1, llvmorg-2.8.0-rc0
# e5af9301 19-Aug-2010 Evan Cheng <evan.cheng@apple.com>

Update debug logs.

llvm-svn: 111575


# 361b9be7 19-Aug-2010 Evan Cheng <evan.cheng@apple.com>

It's possible to sink a def if its local uses are PHI's.

llvm-svn: 111537


# 681d0c25 19-Aug-2010 Evan Cheng <evan.cheng@apple.com>

Remove disabled assertion.

llvm-svn: 111531


# ae9939c8 19-Aug-2010 Evan Cheng <evan.cheng@apple.com>

Teach machine-sink to break critical edges when appropriate. Work in progress.

llvm-svn: 111530


1234567891011