- May 15, 2012
-
-
Daniel Dunbar authored
llvm-svn: 156857
-
Bill Wendling authored
llvm-svn: 156852
-
Kevin Enderby authored
-macho to disassemble the last symbol to the end of the section. llvm-svn: 156850
-
Nuno Lopes authored
this gives a speedup of > 80 in a debug build in the test case of PR12825 (php_sha512_crypt_r) llvm-svn: 156849
-
Jakob Stoklund Olesen authored
Now both SrcReg and DstReg can be sub-registers of the final coalesced register. CoalescerPair::setRegisters still rejects such copies because RegisterCoalescer doesn't yet handle them. llvm-svn: 156848
-
Akira Hatanaka authored
llvm-svn: 156847
-
Andrew Trick authored
This feature avoids creating edges in the scheduler's dependence graph for non-aliasing memory operations according to whichever alias analysis is available. It has been fully tested in Hexagon. Before making this default, it needs to be extended to handle multiple MachineMemOperands, compile time needs more evaluation, and benchmarking on X86 and ARM is needed. Patch by Sergei Larin! llvm-svn: 156842
-
Kevin Enderby authored
that has more than one symbol. The last symbol was not being disassembled to the end of the section. llvm-svn: 156840
-
Daniel Dunbar authored
- These libraries are only reported by llvm-config when run from a development tree. llvm-svn: 156838
-
Daniel Dunbar authored
llvm-svn: 156837
-
Daniel Dunbar authored
check. llvm-svn: 156836
-
Jim Grosbach authored
Many targets always use the same bitwise encoding value for physical registers in all (or most) instructions. Add this mapping to the .td files and TableGen'erate the information and expose an accessor in MCRegisterInfo. patch by Tom Stellard. llvm-svn: 156829
-
Jim Grosbach authored
Add the MCRegisterInfo to the factories and constructors. Patch by Tom Stellard <Tom.Stellard@amd.com>. llvm-svn: 156828
-
Sirish Pande authored
llvm-svn: 156824
-
Nuno Lopes authored
minor simplification to code: Ty is already a SCEV type; don't need to run getEffectiveSCEVType() twice llvm-svn: 156823
-
David Chisnall authored
llvm-svn: 156819
-
David Majnemer authored
llvm-svn: 156815
-
Bill Wendling authored
llvm-svn: 156812
-
Stepan Dyatkovskiy authored
llvm-svn: 156810
-
Stepan Dyatkovskiy authored
llvm-svn: 156808
-
Stepan Dyatkovskiy authored
SelectionDAGBuilder::Clusterify : main functinality was replaced with CRSBuilder::optimize, so big part of Clusterify's code was reduced. llvm-svn: 156804
-
Akira Hatanaka authored
resolved. llvm-svn: 156801
-
Jakob Stoklund Olesen authored
Besides the weight, we also want to store up to two root registers per unit. Most units will have a single root, the leaf register they represent. Units created for ad hoc aliasing get two roots: The two aliasing registers. The root registers can be used to compute the set of overlapping registers. llvm-svn: 156792
-
Bill Wendling authored
llvm-svn: 156791
-
Akira Hatanaka authored
The purpose of this option is to silence error messages issued by machine verifier passes and enable them to run to the end. If this option is not provided, -verify-machineinstrs complains when it discovers there is a non-terminator instruction (an instruction that is in a delay slot) after the first terminator in a basic block. llvm-svn: 156790
-
Michael J. Spencer authored
llvm-svn: 156787
-
Michael J. Spencer authored
llvm-svn: 156785
-
- May 14, 2012
-
-
David Blaikie authored
Found by GCC's maybe-uninitialized. llvm-svn: 156780
-
Jakob Stoklund Olesen authored
This should unbreak llvm-x86_64-linux. llvm-svn: 156778
-
Jakob Stoklund Olesen authored
RAFast must add an <imp-def> operand when it is rewriting a sub-register def that isn't a read-modify-write. llvm-svn: 156777
-
Chad Rosier authored
so that it can be reused in MemCpyOptimizer. This analysis is needed to remove an unnecessary memcpy when returning a struct into a local variable. rdar://11341081 PR12686 llvm-svn: 156776
-
Brendon Cahoon authored
llvm-svn: 156775
-
Dan Gohman authored
llvm-svn: 156774
-
Akira Hatanaka authored
llvm-svn: 156772
-
Andrew Trick authored
llvm-svn: 156770
-
Jakob Stoklund Olesen authored
Returning a temporary BitVector is very expensive. If you must, create the temporary explicitly: Use BitVector(A).flip() instead of ~A. llvm-svn: 156768
-
Jakob Stoklund Olesen authored
These operators were crazy slow, calling malloc to return a temporary result. At the same time, they look very innocent when used in code. If you need temporary BitVectors to compute your thing, create them explicitly, and use the inplace logical operators. This makes the high cost explicit in the code. llvm-svn: 156767
-
Jakob Stoklund Olesen authored
Register units can be used to compute if two registers overlap: A overlaps B iff units(A) intersects units(B). With this change, the above holds true even on targets that use ad hoc aliasing (currently only ARM). This means that register units can be used to implement regsOverlap() more efficiently, and the register allocator can use the concept to model interference. When there is no ad hoc aliasing, the register units correspond to the maximal cliques in the register overlap graph. This is optimal, no other register unit assignment can have fewer units. With ad hoc aliasing, weird things are possible, and we don't try too hard to compute the maximal cliques. The current approach is always correct, and it works very well (probably optimally) as long as the ad hoc aliasing doesn't have cliques larger than pairs. It seems unlikely that any target would need more. llvm-svn: 156763
-
Jakob Stoklund Olesen authored
The ad hoc aliasing specified in the 'Aliases' list in .td files is currently only used by computeOverlaps(). It will soon be needed to build accurate register units as well, so build the undirected graph in CodeGenRegister::buildObjectGraph() instead. Aliasing is a symmetric relationship with only one direction specified in the .td files. Make sure both directions are represented in getExplicitAliases(). llvm-svn: 156762
-
Jakob Stoklund Olesen authored
TableGen creates new register classes and sub-register indices based on the sub-register structure present in the register bank. So far, it has been doing that on a per-register basis, but that is not very efficient. This patch teaches TableGen to compute topological signatures for registers, and use that to reduce the amount of redundant computation. Registers get the same TopoSig if they have identical sub-register structure. TopoSigs are not currently exposed outside TableGen. llvm-svn: 156761
-