- Apr 15, 2004
-
-
Chris Lattner authored
Instead of producing code like this: Loop: X = phi 0, X2 ... X2 = X + 1 if (X != N-1) goto Loop We now generate code that looks like this: Loop: X = phi 0, X2 ... X2 = X + 1 if (X2 != N) goto Loop This has two big advantages: 1. The trip count of the loop is now explicit in the code, allowing the direct implementation of Loop::getTripCount() 2. This reduces register pressure in the loop, and allows X and X2 to be put into the same register. As a consequence of the second point, the code we generate for loops went from: .LBB2: # no_exit.1 ... mov %EDI, %ESI inc %EDI cmp %ESI, 2 mov %ESI, %EDI jne .LBB2 # PC rel: no_exit.1 To: .LBB2: # no_exit.1 ... inc %ESI cmp %ESI, 3 jne .LBB2 # PC rel: no_exit.1 ... which has two fewer moves, and uses one less register. llvm-svn: 12961
-
Chris Lattner authored
llvm-svn: 12960
-
Chris Lattner authored
llvm-svn: 12958
-
Chris Lattner authored
llvm-svn: 12956
-
Chris Lattner authored
insert it once! llvm-svn: 12955
-
- Apr 14, 2004
-
-
John Criswell authored
The iterator is pointing at the next instruction which should not disappear when doing the load/store replacement. llvm-svn: 12954
-
Brian Gaeke authored
llvm-svn: 12953
-
Chris Lattner authored
at the bottom of the loop instead of the top. This reduces the number of overlapping live ranges a lot, for example, eliminating a spill in an important loop in 183.equake with linear scan. I still need to make the exit comparison of the loop use the post-incremented version of this variable, but this is an easy first step. llvm-svn: 12952
-
Brian Gaeke authored
This should unbreak the Sparc JIT again. llvm-svn: 12949
-
John Criswell authored
functions and is not needed here. Simplify the pointer type check per Chris's suggestions. llvm-svn: 12945
-
John Criswell authored
that matches its return type. llvm-svn: 12944
-
John Criswell authored
Sorry these didn't get in yesterday. llvm-svn: 12942
-
Chris Lattner authored
llvm-svn: 12940
-
Chris Lattner authored
even when the "optimization" I added before is turned off. It generates this extremely pointless code: test: fld QWORD PTR [%ESP + 4] mov %AL, 0 test %AL, %AL fcmove %ST(0), %ST(0) ret Good thing the optimizer will have removed this before code generation anyway. :) llvm-svn: 12939
-
John Criswell authored
On x86, memory operations occur in-order, so these are just lowered into volatile loads and stores. llvm-svn: 12936
-
- Apr 13, 2004
-
-
Chris Lattner authored
X86/2004-04-13-FPCMOV-Crash.llx A more robust fix is to follow. llvm-svn: 12935
-
Chris Lattner authored
test/Regression/Transforms/SCCP/calltest.ll llvm-svn: 12921
-
Chris Lattner authored
llvm-svn: 12919
-
Chris Lattner authored
llvm-svn: 12917
-
Brian Gaeke authored
llvm-svn: 12905
-
Brian Gaeke authored
llvm-svn: 12903
-
Chris Lattner authored
Fix several bugs in the intrinsics: 1. Make sure to copy the input registers before the instructions that use them 2. Make sure to copy the value returned by 'in' out of EAX into the register it is supposed to be in. This fixes assertions when using in/out and linear scan. llvm-svn: 12896
-
Chris Lattner authored
llvm-svn: 12895
-
Chris Lattner authored
llvm-svn: 12894
-
Chris Lattner authored
llvm-svn: 12893
-
Chris Lattner authored
LoopSimplify was not updating dominator frontiers correctly in some cases. llvm-svn: 12890
-
Chris Lattner authored
llvm-svn: 12888
-
Chris Lattner authored
This is fairly straight-forward, but was a real nightmare to get just perfect. aarg. :) llvm-svn: 12884
-
- Apr 12, 2004
-
-
Brian Gaeke authored
llvm-svn: 12874
-
Alkis Evlogimenos authored
llvm-svn: 12872
-
Chris Lattner authored
llvm-svn: 12871
-
Alkis Evlogimenos authored
llvm-svn: 12869
-
Alkis Evlogimenos authored
llvm-svn: 12866
-
Chris Lattner authored
execute other CallGraphSCCPasses after the inliner without crashing. llvm-svn: 12861
-
Chris Lattner authored
SCC passes much more useful. In particular, this should fix the incredibly stupid missed inlining opportunities that the inliner suffered from. llvm-svn: 12860
-
Chris Lattner authored
llvm-svn: 12859
-
Chris Lattner authored
llvm-svn: 12858
-
Chris Lattner authored
llvm-svn: 12857
-
Chris Lattner authored
llvm-svn: 12856
-
Chris Lattner authored
llvm-svn: 12855
-