- May 23, 2013
-
-
Chad Rosier authored
llvm-svn: 182531
-
- Feb 05, 2013
-
-
Jakob Stoklund Olesen authored
Now that return value registers are return instruction uses, there is no need for special treatment of return blocks. llvm-svn: 174416
-
- Jan 28, 2013
-
-
Bill Schmidt authored
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. llvm-svn: 173706
-
- Dec 03, 2012
-
-
Chandler Carruth authored
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. =] llvm-svn: 169131
-
- Nov 29, 2012
-
-
Jakob Stoklund Olesen authored
This saves a bit of memory. llvm-svn: 168852
-
- Oct 16, 2012
-
-
Jakob Stoklund Olesen authored
Clients can use the equivalent functions in MRI. llvm-svn: 165990
-
- Jun 02, 2012
-
-
-
Jakob Stoklund Olesen authored
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). llvm-svn: 157854
-
- Jun 01, 2012
-
-
Jakob Stoklund Olesen authored
MCRegAliasIterator can optionally visit the register itself, allowing for simpler code. llvm-svn: 157837
-
- May 08, 2012
-
-
Jakob Stoklund Olesen authored
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! llvm-svn: 156328
-
- Mar 17, 2012
-
-
Benjamin Kramer authored
llvm-svn: 152999
-
- Mar 16, 2012
-
-
Benjamin Kramer authored
No functionality change. llvm-svn: 152927
-
- Mar 05, 2012
-
-
Craig Topper authored
llvm-svn: 152016
-
- Mar 04, 2012
-
-
Craig Topper authored
llvm-svn: 152001
-
Craig Topper authored
llvm-svn: 151996
-
- Feb 23, 2012
-
-
Jakob Stoklund Olesen authored
llvm-svn: 151223
-
- Feb 22, 2012
-
-
Andrew Trick authored
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. llvm-svn: 151135
-
- Jan 07, 2012
-
-
Evan Cheng authored
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 llvm-svn: 147716
-
- Dec 07, 2011
-
-
Evan Cheng authored
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
-
- Jun 27, 2011
-
-
Evan Cheng authored
llvm-svn: 133944
-
- Jun 16, 2011
-
-
Jakob Stoklund Olesen authored
No functional change was intended. llvm-svn: 133202
-
- Jun 02, 2011
-
-
Devang Patel authored
llvm-svn: 132487
-
- Feb 08, 2011
-
-
Andrew Trick authored
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. llvm-svn: 125089
-
- Feb 05, 2011
-
-
Andrew Trick authored
<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 llvm-svn: 124932
-
- Nov 02, 2010
-
-
rdar://problem/8612856Andrew Trick authored
breaker needs to check all definitions of the antidepenent register to avoid multiple defs of the same new register. llvm-svn: 118032
-
- Oct 02, 2010
-
-
Bob Wilson authored
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. llvm-svn: 115400
-
- Sep 11, 2010
-
-
Bob Wilson authored
llvm-svn: 113653
-
- Sep 02, 2010
-
-
Jim Grosbach authored
llvm-svn: 112832
-
- Jul 27, 2010
-
-
Dan Gohman authored
llvm-svn: 109468
-
- Jul 15, 2010
-
-
Bill Wendling authored
make sure to allocate enough space in the std::vector. llvm-svn: 108449
-
Chris Lattner authored
llvm-svn: 108419
-
Bill Wendling authored
get *very* large, but we only need it to be the size of thenumber of pregs. llvm-svn: 108411
-
- Jun 16, 2010
-
-
Evan Cheng authored
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. llvm-svn: 106091
-
- Jun 02, 2010
-
-
Jim Grosbach authored
for debug information. llvm-svn: 105324
-
-
- May 14, 2010
-
-
Jim Grosbach authored
llvm-svn: 103807
-
- Apr 20, 2010
-
-
Dan Gohman authored
and End arguments by-value rather than by-reference. llvm-svn: 101830
-
- Mar 05, 2010
-
-
Dale Johannesen authored
llvm-svn: 97765
-
- Jan 06, 2010
-
-
Jim Grosbach authored
multiple register definitions. llvm-svn: 92864
-
Jim Grosbach authored
llvm-svn: 92837
-