- Feb 23, 2004
-
-
Alkis Evlogimenos authored
llvm-svn: 11720
-
Alkis Evlogimenos authored
llvm-svn: 11719
-
- Feb 22, 2004
-
-
Chris Lattner authored
use FP instructions. This reduces the number of instructions inserted in 176.gcc (for example) from 58074 to 101 (it doesn't use much FP, which is typical). This reduction speeds up the entire code generator. In the case of 176.gcc, llc went from taking 31.38s to 24.78s. The passes that sped up the most are the register allocator and the 2 live variable analysis passes, which sped up 2.3, 1.3, and 1.5s respectively. The asmprinter pass also sped up because it doesn't print the instructions in comments :) Note that this patch is likely to expose latent bugs in machine code passes, because now basicblock can be empty, where they were never empty before. I cleaned out regalloclocal, but who knows about linscan :) llvm-svn: 11717
-
Chris Lattner authored
llvm-svn: 11716
-
Alkis Evlogimenos authored
switch statements in the constructors and simplifies the implementation of the getUseType() member function. You will have to specify defs using MachineOperand::Def instead of MOTy::Def though (similarly for Use and UseAndDef). llvm-svn: 11715
-
Chris Lattner authored
one terminator instruction in each basic block. llvm-svn: 11714
-
Chris Lattner authored
Also, make an assertion actually fireable! llvm-svn: 11713
-
Chris Lattner authored
AFTER the GEP that was emitted. :( llvm-svn: 11712
-
Chris Lattner authored
(minor) benefits right now: 1. An extra dummy MOVrr32 is gone. This move would often be coallesced by both allocators anyway. 2. The code now uses the gep_type_iterator to walk the gep, which should future proof it a bit. It still assumes that array indexes are Longs though. These don't really justify rewriting the code. The big benefit will come later though. llvm-svn: 11710
-
Alkis Evlogimenos authored
leave register operands with the same use/def flags as the original instruction. llvm-svn: 11709
-
Chris Lattner authored
llvm-svn: 11707
-
Chris Lattner authored
llvm-svn: 11706
-
Chris Lattner authored
this should be folded into it. llvm-svn: 11705
-
Alkis Evlogimenos authored
llvm-svn: 11704
-
Chris Lattner authored
hot 164.gzip loop. llvm-svn: 11702
-
Chris Lattner authored
value is a physreg and one is a virtreg. For this reason, disable copy folding entirely for physregs. Also, use the new isMoveInstr target hook which gives us folding of FP moves as well. llvm-svn: 11700
-
Alkis Evlogimenos authored
Also make it less aggressive as the current implementation breaks in some cases. llvm-svn: 11696
-
Chris Lattner authored
FIX MAJOR BUG, whereby we didn't merge null edges correctly. Correcting this fixes poolallocation on 175.vpr, and possibly others. llvm-svn: 11695
-
- Feb 21, 2004
-
-
Chris Lattner authored
correctly merged over! llvm-svn: 11693
-
Chris Lattner authored
llvm-svn: 11692
-
Misha Brukman authored
llvm-svn: 11690
-
Chris Lattner authored
in a signal handler, allocating memory or doing other unsafe things is bad, which means we should do it in a different process. llvm-svn: 11689
-
Alkis Evlogimenos authored
llvm-svn: 11687
-
Chris Lattner authored
BU propagation, clone the globals into the GG of EACH FUNCTION that finishes processing! The GlobalsGraph *must* include all globals and effects from all functions in the program. Fixing this makes pool allocation work better on 175.vpr, but it still ultimately crashes. llvm-svn: 11686
-
Chris Lattner authored
end of the BU and CBU passes. The globals will be marked incomplete, so it doesn't matter if they are missing some info, and merging isn't guaranteed to bring everything in anyway! llvm-svn: 11684
-
Chris Lattner authored
printf and scanf families! llvm-svn: 11683
-
- Feb 20, 2004
-
-
Alkis Evlogimenos authored
llvm-svn: 11676
-
Alkis Evlogimenos authored
llvm-svn: 11675
-
Alkis Evlogimenos authored
llvm-svn: 11674
-
Chris Lattner authored
llvm-svn: 11673
-
Alkis Evlogimenos authored
llvm-svn: 11659
-
Brian Gaeke authored
llvm-svn: 11658
-
Alkis Evlogimenos authored
llvm-svn: 11655
-
Alkis Evlogimenos authored
1. LiveIntervals now implement a 4 slot per instruction model. Load, Use, Def and a Store slot. This is required in order to correctly represent caller saved register clobbering on function calls, register reuse in the same instruction (def resues last use) and also spill code added later by the allocator. The previous representation (2 slots per instruction) was insufficient and as a result was causing subtle bugs. 2. Fixes in spill code generation. This was the major cause of failures in the test suite. 3. Linear scan now has core support for folding memory operands. This is untested and not enabled (the live interval update function does not attempt to fold loads/stores in instructions). 4. Lots of improvements in the debugging output of both live intervals and linear scan. Give it a try... it is beautiful :-) In summary the above fixes all the issues with the recent reserved register elimination changes and get the allocator very close to the next big step: folding memory operands. llvm-svn: 11654
-
Chris Lattner authored
compiling 129.compress... so don't! llvm-svn: 11649
-
- Feb 19, 2004
-
-
Chris Lattner authored
call breaks on sparcs llvm-svn: 11635
-
Chris Lattner authored
llvm-svn: 11631
-
Alkis Evlogimenos authored
llvm-svn: 11629
-
Chris Lattner authored
variable information to take into account the change of instruction address. llvm-svn: 11628
-
Chris Lattner authored
llvm-svn: 11627
-