History log of /external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
78477ffdfd63ddf1ba22d9d2121c8f6ed9f9efa1 03-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl instead of SmallVector as method argument to avoid specifying vector size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185513 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
f22fd3f7b557a967b1edc1fa9ae770006a39e97c 03-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl instead of SmallVector for iterators and references to avoid specifying the vector size unnecessarily.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185512 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
62c320a755ac27ac2b7f64e927892249e0f486e0 23-May-2013 Chad Rosier <mcrosier@apple.com> Simplify logic now that r182490 is in place. No functional change intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182531 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
b45e4deb102d47602f5b941da7f412ecc9a867e9 05-Feb-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove special-casing of return blocks for liveness.

Now that return value registers are return instruction uses, there is no
need for special treatment of return blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174416 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
5ff776bfde2dd5d993e51f8f78904ce331b5528c 28-Jan-2013 Bill Schmidt <wschmidt@linux.vnet.ibm.com> This patch addresses bug 15031.

The common code in the post-RA scheduler to break anti-dependencies on the
critical path contained a flaw. In the reported case, an anti-dependency
between the overlapping registers %X4 and %R4 exists:

%X29<def> = OR8 %X4, %X4
%R4<def>, %X3<def,dead,tied3> = LBZU 1, %X3<kill,tied1>

The unpatched code breaks the dependency by replacing %R4 and its uses
with %R3, the first register on the available list. However, %R3 and
%X3 overlap, so this creates two overlapping definitions on the same
instruction.

The fix is straightforward, preventing selection of a register that
overlaps any other defined register on the same instruction.

The test case is reduced from the bug report, and verifies that we no
longer produce "lbzu 3, 1(3)" when breaking this anti-dependency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173706 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
d04a8d4b33ff316ca4cf961e06c9e312eff8e64f 03-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Use the new script to sort the includes of every file under lib.

Sooooo many of these had incorrect or strange main module includes.
I have manually inspected all of these, and fixed the main module
include to be the nearest plausible thing I could find. If you own or
care about any of these source files, I encourage you to take some time
and check that these edits were sensible. I can't have broken anything
(I strictly added headers, and reordered them, never removed), but they
may not be the headers you'd really like to identify as containing the
API being implemented.

Many forward declarations and missing includes were added to a header
files to allow them to parse cleanly when included first. The main
module rule does in fact have its merits. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169131 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
39b5c0c049a19c7a7feffc9506da07923cc136e4 29-Nov-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use MCPhysReg for RegisterClassInfo allocation orders.

This saves a bit of memory.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168852 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
14d1dd95c7c969e07defebb6fe65df2fae1b30cf 16-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove RegisterClassInfo::isReserved() and isAllocatable().

Clients can use the equivalent functions in MRI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165990 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
d9b0b025612992a0b724eeca8bdf10b1d7a5c355 02-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Fix typos found by http://github.com/lyda/misspell-check

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157885 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
396618b43a85e12d290a90b181c6af5d7c0c5f11 02-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch all register list clients to the new MC*Iterator interface.

No functional change intended.

Sorry for the churn. The iterator classes are supposed to help avoid
giant commits like this one in the future. The TableGen-produced
register lists are getting quite large, and it may be necessary to
change the table representation.

This makes it possible to do so without changing all clients (again).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157854 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
f152fe8d487c46873bbdd4abab43200f783e978b 01-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch some getAliasSet clients to MCRegAliasIterator.

MCRegAliasIterator can optionally visit the register itself, allowing
for simpler code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157837 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
397fc4874efe9c17e737d4c5c50bd19dc3bf27f5 08-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an MF argument to TRI::getPointerRegClass() and TII::getRegClass().

The getPointerRegClass() hook can return register classes that depend on
the calling convention of the current function (ptr_rc_tailcall).

So far, we have been able to infer the calling convention from the
subtarget alone, but as we add support for multiple calling conventions
per target, that no longer works.

Patch by Yiannis Tsiouris!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156328 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
cff4ad768ec721b72498dc6b605d882e36c1fb14 17-Mar-2012 Benjamin Kramer <benny.kra@googlemail.com> CriticalAntiDepBreaker: Replace a SmallSet of regs with a much denser BitVector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152999 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
87f3dbc446181dc5b1c525bd28ca89760f63bc76 16-Mar-2012 Benjamin Kramer <benny.kra@googlemail.com> CriticalAntiDepBreaker: BasicBlock::size is an expensive operation, reuse the cached value.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152927 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
9ebfbf8b9fd5f982e0db9293808bd32168615ba9 05-Mar-2012 Craig Topper <craig.topper@gmail.com> Convert more GenRegisterInfo tables from unsigned to uint16_t to reduce static data size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152016 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
e4fd907e72a599eddfa7a81eac4366b5b82523e3 04-Mar-2012 Craig Topper <craig.topper@gmail.com> Use uint16_t to store register overlaps to reduce static data.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152001 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
015f228861ef9b337366f92f637d4e8d624bb006 04-Mar-2012 Craig Topper <craig.topper@gmail.com> Use uint16_t to store registers in callee saved register tables to reduce size of static data.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151996 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
bbad2f1040fea671b4413f53b3fd816cb7bd2443 23-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle regmasks in CriticalAntiDepBreaker.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151223 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
b4566a999970b514d7c6973d99e293a6625d3f70 22-Feb-2012 Andrew Trick <atrick@apple.com> Initialize SUnits before DAG building.

Affect on SD scheduling and postRA scheduling:
Printing the DAG will display the nodes in top-down topological order.
This matches the order within the MBB and makes my life much easier in general.

Affect on misched:
We don't need to track virtual register uses at all. This is awesome.
I also intend to rely on the SUnit ID as a topo-sort index. So if A < B then we cannot have an edge B -> A.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151135 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
977679d6034791fd48a344e5b990503ba50fc242 07-Jan-2012 Evan Cheng <evan.cheng@apple.com> Added a late machine instruction copy propagation pass. This catches
opportunities that only present themselves after late optimizations
such as tail duplication .e.g.
## BB#1:
movl %eax, %ecx
movl %ecx, %eax
ret

The register allocator also leaves some of them around (due to false
dep between copies from phi-elimination, etc.)

This required some changes in codegen passes. Post-ra scheduler and the
pseudo-instruction expansion passes have been moved after branch folding
and tail merging. They were before branch folding before because it did
not always update block livein's. That's fixed now. The pass change makes
independently since we want to properly schedule instructions after
branch folding / tail duplication.

rdar://10428165
rdar://10640363



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147716 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
5a96b3dad2f634c9081c8b2b6c2575441dc5a2bd 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 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146026 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
15993f83a419950f06d2879d6701530ae6449317 27-Jun-2011 Evan Cheng <evan.cheng@apple.com> More refactoring. Move getRegClass from TargetOperandInfo to TargetInstrInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133944 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
fa796dd720f1b34596a043f17f098fac18ecc028 16-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach antidependency breakers to use RegisterClassInfo.

No functional change was intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133202 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
e29e8e100ea38be1771e5f010a5511cbb990d515 02-Jun-2011 Devang Patel <dpatel@apple.com> Update DBG_VALUEs while breaking anti dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132487 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
bc4bd92d52be2f6707a8c311873ded27a8f2481f 08-Feb-2011 Andrew Trick <atrick@apple.com> Fix PostRA antidependence breaker.

Avoid using the same register for two def operands or and earlyclobber
def and use operand. This fixes PR8986 and improves on the prior fix
for rdar://problem/8959122.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125089 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
278ba1f9b6c14ddf79040979c88b978d41f8c036 05-Feb-2011 Andrew Trick <atrick@apple.com> Fix an anti-dep breaker corner case.
<rdar://problem/8959122> illegal register operands for UMULL instruction in cfrac nightly test
I'm stil working on a unit test, but the case is:
rx = movcc rx, r3
r2 = ldr
r2, r3 = umull r2, r2

The anti-dep breaker should not convert this into an illegal instruction:
r2, r2 = umull


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124932 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
46388526963aba92344ee8ebd9e86d3556baa088 02-Nov-2010 Andrew Trick <atrick@apple.com> Fixes <rdar://problem/8612856>: During postRAsched, the antidependence
breaker needs to check all definitions of the antidepenent register to
avoid multiple defs of the same new register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118032 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
f70007e89e7b252abc9dc175aab92191c09bebf7 02-Oct-2010 Bob Wilson <bob.wilson@apple.com> Fix a miscompile in 186.crafty for Thumb2 that was exposed by Evan's
scheduling change in svn 115121. The CriticalAntiDepBreaker had bad
liveness information. It was calculating the KillIndices for one scheduling
region in a basic block, rescheduling that region so the KillIndices were
no longer valid, and then using those wrong KillIndices to make decisions
for the next scheduling region. I've not been able to reduce a small
testcase for this. Radar 8502534.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115400 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
59718a4f42551fc0034b860cb8119f728023c303 11-Sep-2010 Bob Wilson <bob.wilson@apple.com> Fix a comment typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113653 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
9b041c92efb5b0f6e74e154f0a6151968dc1ab58 02-Sep-2010 Jim Grosbach <grosbach@apple.com> Anti-dependency breaking needs to be careful not to use reserved regs

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112832 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
3eca15bdb5823d0f9ff5059a179a1759fee1a185 27-Jul-2010 Dan Gohman <gohman@apple.com> Fix a use-after-free.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109468 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
9c2a034730b289a2cf48bc91aa2ef69737a7afbb 15-Jul-2010 Bill Wendling <isanbard@gmail.com> Use std::vector instead of TargetRegisterInfo::FirstVirtualRegister. This time
make sure to allocate enough space in the std::vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108449 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
7fa889b946266f5cf3f386acf2487aed244e5d10 15-Jul-2010 Chris Lattner <sabre@nondot.org> revert bill's patches in an attempt to fix the buildbot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108419 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
f7f72bc1eaf01bfc6f09094d200e6aea35921f65 15-Jul-2010 Bill Wendling <isanbard@gmail.com> Use std::vector instead of a hard-coded array. The length of that array could
get *very* large, but we only need it to be the size of thenumber of pregs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108411 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
46df4eb46e784036cf895db271fe29e1cf2a975a 16-Jun-2010 Evan Cheng <evan.cheng@apple.com> Make post-ra scheduling, anti-dep breaking, and register scavenger (conservatively) aware of predicated instructions. This enables ARM to move if-conversion before post-ra scheduler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106091 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
086723d244952aee690a8aa39485a0fa0d3a7700 02-Jun-2010 Jim Grosbach <grosbach@apple.com> Not all entries in the range will have an SUnit. Check for that when looking
for debug information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105324 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
533934e06e99a86e8c93f8ec9b9d3b2c527b747e 02-Jun-2010 Jim Grosbach <grosbach@apple.com> Update debug information when breaking anti-dependencies. rdar://7759363

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105300 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
01384ef159caa7eebff0e1d703638f2e2c862092 14-May-2010 Jim Grosbach <grosbach@apple.com> Remove trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103807 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
66db3a0f10e96ae190c8a46a1a8d5242928d068c 20-Apr-2010 Dan Gohman <gohman@apple.com> Make BreakAntiDependencies' SUnits argument const, and make the Begin
and End arguments by-value rather than by-reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101830 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
b0812f114b83a32c4b90a4b553c7177c557558b5 05-Mar-2010 Dale Johannesen <dalej@apple.com> Fix some more places where dbg_value affected codegen.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97765 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
80c2b0d9efc951b23f90a3cf12b9853177994961 06-Jan-2010 Jim Grosbach <grosbach@apple.com> Anti-dependency breaking needs to be careful regarding instructions with
multiple register definitions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92864 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
2973b57093b017f2e3b5f5edd0be9d4ea180f0e9 06-Jan-2010 Jim Grosbach <grosbach@apple.com> 80 column and whitespace cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92837 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
89d6a2426256b56780c7934ddad24e6ecc4f690a 04-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92490 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
990d2857654cb80e46d207533834be3047494830 09-Dec-2009 David Goodwin <david_goodwin@apple.com> <rdar://problem/7453528>. Track only physical registers that are valid for the target.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90970 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
557bbe6b5d13faaec38f85a266db457c7cb09ff2 20-Nov-2009 David Goodwin <david_goodwin@apple.com> Remove some old experimental code that is no longer needed. Remove additional, speculative scheduling pass as its cost did not translate into significant performance improvement. Minor tweaks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89471 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
4de099d8ca651e00fa5fac22bace4f4dba2d0292 03-Nov-2009 David Goodwin <david_goodwin@apple.com> Do a scheduling pass ignoring anti-dependencies to identify candidate registers that should be renamed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85939 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp
2e7be612d5d0eb42ee3ae08194dbb03b750cc6bf 26-Oct-2009 David Goodwin <david_goodwin@apple.com> Break anti-dependence breaking out into its own class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85127 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp