History log of /llvm-project-15.0.7/llvm/lib/CodeGen/SplitKit.cpp (Results 226 – 250 of 279)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 4cf8fe31 22-Oct-2010 Jakob Stoklund Olesen <[email protected]>

Be more strict about detecting multi-use blocks for isolation.

When a block has exactly two uses and the register is both live-in and live-out,
don't isolate the block. We would be inserting two cop

Be more strict about detecting multi-use blocks for isolation.

When a block has exactly two uses and the register is both live-in and live-out,
don't isolate the block. We would be inserting two copies, so we haven't really
made any progress.

If the live-in and live-out values separate into disconnected components after
splitting, we would be making progress. We can't detect that for now.

llvm-svn: 117169

show more ...


# 2d600755 22-Oct-2010 Jakob Stoklund Olesen <[email protected]>

Be more strict when detecting critical edges before loop splitting.

An exit block with a critical edge must only have predecessors in the loop, or
just before the loop. This guarantees that the inse

Be more strict when detecting critical edges before loop splitting.

An exit block with a critical edge must only have predecessors in the loop, or
just before the loop. This guarantees that the inserted copies in the loop
predecessors dominate the exit block.

llvm-svn: 117144

show more ...


# 9a743016 22-Oct-2010 Jakob Stoklund Olesen <[email protected]>

Add print methods

llvm-svn: 117143


# f4bbe50f 21-Oct-2010 Jakob Stoklund Olesen <[email protected]>

Don't include the destination interval in the union when computing
Parent - union(Y, ...). Doh.

llvm-svn: 117042


# 3f1f7b67 15-Oct-2010 Jakob Stoklund Olesen <[email protected]>

Eliminate curli from SplitEditor. Use the LiveRangeEdit reference instead.

llvm-svn: 116547


# 0f3e98ce 15-Oct-2010 Jakob Stoklund Olesen <[email protected]>

Move stack slot assignments into LiveRangeEdit.

All registers created during splitting or spilling are assigned to the same
stack slot as the parent register.

When splitting or rematting, we may no

Move stack slot assignments into LiveRangeEdit.

All registers created during splitting or spilling are assigned to the same
stack slot as the parent register.

When splitting or rematting, we may not spill at all. In that case the stack
slot is still assigned, but it will be dead.

llvm-svn: 116546

show more ...


# 72911e49 14-Oct-2010 Jakob Stoklund Olesen <[email protected]>

Create a new LiveRangeEdit class to keep track of the new registers created when
splitting or spillling, and to help with rematerialization.

Use LiveRangeEdit in InlineSpiller and SplitKit. This wil

Create a new LiveRangeEdit class to keep track of the new registers created when
splitting or spillling, and to help with rematerialization.

Use LiveRangeEdit in InlineSpiller and SplitKit. This will eventually make it
possible to share remat code between InlineSpiller and SplitKit.

llvm-svn: 116543

show more ...


# f1131801 14-Oct-2010 Jakob Stoklund Olesen <[email protected]>

Only split around a loop if the live range has uses outside the loop periphery.

Before we would also split around a loop if any peripheral block had multiple
uses. This could cause repeated splittin

Only split around a loop if the live range has uses outside the loop periphery.

Before we would also split around a loop if any peripheral block had multiple
uses. This could cause repeated splitting when splitting a different live range
would insert uses into the periphery.

Now -spiller=inline passes the nightly test suite again.

llvm-svn: 116494

show more ...


# 959fcc6c 08-Oct-2010 Jakob Stoklund Olesen <[email protected]>

Rename SplitEditor::rewrite to finish() and break it out into a couple of new
functions: computeRemainder and rewrite.

When the remainder breaks up into multiple components, remember to rewrite thos

Rename SplitEditor::rewrite to finish() and break it out into a couple of new
functions: computeRemainder and rewrite.

When the remainder breaks up into multiple components, remember to rewrite those
uses as well.

llvm-svn: 116121

show more ...


# 0f1677e1 07-Oct-2010 Jakob Stoklund Olesen <[email protected]>

After splitting, the remaining LiveInterval may be fragmented into multiple
connected components. These components should be allocated different virtual
registers because there is no reason for them

After splitting, the remaining LiveInterval may be fragmented into multiple
connected components. These components should be allocated different virtual
registers because there is no reason for them to be allocated together.

Add the ConnectedVNInfoEqClasses class to calculate the connected components,
and move values to new LiveIntervals.

Use it from SplitKit::rewrite by creating new virtual registers for the
components.

llvm-svn: 116006

show more ...


# 9bfd9679 07-Oct-2010 Jakob Stoklund Olesen <[email protected]>

Print more loop info.

llvm-svn: 115951


# 7c317300 07-Oct-2010 Jakob Stoklund Olesen <[email protected]>

Print out MBB number when rewriting.

llvm-svn: 115950


# 49715fd4 07-Oct-2010 Jakob Stoklund Olesen <[email protected]>

Cache interval iterators in SplitEditor::addTruncSimpleRange so we only have to
do one find().

llvm-svn: 115929


# 9575af4b 07-Oct-2010 Jakob Stoklund Olesen <[email protected]>

Clean up debug printing.

llvm-svn: 115928


Revision tags: llvmorg-2.8.0
# 4d5156c7 05-Oct-2010 Jakob Stoklund Olesen <[email protected]>

Count uses in all nested loops, not just the deepest.

llvm-svn: 115710


# 56e2925e 05-Oct-2010 Jakob Stoklund Olesen <[email protected]>

Remove SplitAnalysis::removeUse. It was only used to make SplitAnalysis
reusable, but that is no longer relevant since a split will always replace the
original.

llvm-svn: 115709


# 0445e2a0 05-Oct-2010 Jakob Stoklund Olesen <[email protected]>

dupli always has an interval now.

llvm-svn: 115708


# 2dfa8be2 05-Oct-2010 Jakob Stoklund Olesen <[email protected]>

We can split around loops with multiple exits now.

llvm-svn: 115696


# 89d276aa 05-Oct-2010 Jakob Stoklund Olesen <[email protected]>

Update SplitEditor API to reflect the fact that the original live interval is
never kept after splitting.

Keeping the original interval made sense when the split region doesn't modify
the register,

Update SplitEditor API to reflect the fact that the original live interval is
never kept after splitting.

Keeping the original interval made sense when the split region doesn't modify
the register, and the original is spilled. We can get the same effect by
detecting reloaded values when spilling around copies.

llvm-svn: 115695

show more ...


# b46d3236 05-Oct-2010 Jakob Stoklund Olesen <[email protected]>

Intervals are half-open.

llvm-svn: 115694


# 671bab1c 05-Oct-2010 Jakob Stoklund Olesen <[email protected]>

When we find a reaching definition, make sure it is visited from all paths by
erasing it from the visited set. That ensures we create the right phi defs.

llvm-svn: 115666


# b0cedd5f 05-Oct-2010 Jakob Stoklund Olesen <[email protected]>

Don't use nextIndex to check for live out of instruction.
Insert copy after defining instruction.

Fix LiveIntervalMap::extendTo to properly handle live segments starting before
the current basic blo

Don't use nextIndex to check for live out of instruction.
Insert copy after defining instruction.

Fix LiveIntervalMap::extendTo to properly handle live segments starting before
the current basic block.

Make sure the open live range is extended to the inserted copy's use slot.

llvm-svn: 115665

show more ...


Revision tags: llvmorg-2.8.0-rc3
# 56495686 25-Sep-2010 Lang Hames <[email protected]>

Removed VNInfo::isDefAccurate(). Def "accuracy" can be checked by testing whether LiveIntervals::getInstructionFromIndex(def) returns NULL.

llvm-svn: 114791


# 6f8bd42e 21-Sep-2010 Jakob Stoklund Olesen <[email protected]>

Build the complement interval dupli after the split intervals instead of
creating it before and subtracting split ranges.

This way, the SSA update code in LiveIntervalMap can properly create and use

Build the complement interval dupli after the split intervals instead of
creating it before and subtracting split ranges.

This way, the SSA update code in LiveIntervalMap can properly create and use new
phi values in dupli. Now it is possible to create split regions where a value
escapes along two different CFG edges, creating phi values outside the split
region.

This is a work in progress and probably quite broken.

llvm-svn: 114492

show more ...


Revision tags: llvmorg-2.8.0-rc2
# 9855109b 16-Sep-2010 Jakob Stoklund Olesen <[email protected]>

Use the value mapping provided by LiveIntervalMap. This simplifies the code a
great deal because we don't have to worry about maintaining SSA form.

Unconditionally copy back to dupli when the regist

Use the value mapping provided by LiveIntervalMap. This simplifies the code a
great deal because we don't have to worry about maintaining SSA form.

Unconditionally copy back to dupli when the register is live out of the split
range, even if the live-out value was defined outside the range. Skipping the
back-copy only makes sense when the live range is going to spill outside the
split range, and we don't know that it will. Besides, this was a hack to avoid
SSA update issues.

Clear up some confusion about the end point of a half-open LiveRange. Methinks
LiveRanges need to be closed so both start and end are included in the range.
The low bits of a SlotIndex are symbolic, so a half-open range doesn't really
make sense. This would be a pervasive change, though.

llvm-svn: 114043

show more ...


12345678910>>...12