- Aug 05, 2008
-
-
Eli Friedman authored
version uses a new algorithm for evaluating the binomial coefficients which is significantly more efficient for AddRecs of more than 2 terms (see the comments in the code for details on how the algorithm works). It also fixes some bugs: it removes the arbitrary length restriction for AddRecs, it fixes the silent generation of incorrect code for AddRecs which require a wide calculation width, and it fixes an issue where we were incorrectly truncating the iteration count too far when evaluating an AddRec expression narrower than the induction variable. There are still a few related issues I know of: I think there's still an issue with the SCEVExpander expansion of AddRec in terms of the width of the induction variable used. The hack to avoid generating too-wide integers shouldn't be necessary; instead, the callers should be considering the cost of the expansion before expanding it (in addition to not expanding too-wide integers, we might not want to expand expressions that are really expensive, especially when optimizing for size; calculating an length-17 32-bit AddRec currently generates about 250 instructions of straight-line code on X86). Also, for long 32-bit AddRecs on X86, CodeGen really sucks at scheduling the code. I'm planning on filing follow-up PRs for these issues. llvm-svn: 54332
-
Dan Gohman authored
This allows it to work correctly on aggregate values. This fixes PR2623. llvm-svn: 54331
-
Dan Gohman authored
This allows it to work correctly on nested aggregate values. This fixes PR2625. llvm-svn: 54330
-
Dan Gohman authored
llvm-svn: 54329
-
- Aug 04, 2008
-
-
Bruno Cardoso Lopes authored
aren't used anyway, they also used to broke compiling when fastcc was specified for a function, but not anymore. llvm-svn: 54316
-
Bruno Cardoso Lopes authored
llvm-svn: 54315
-
- Aug 03, 2008
-
-
Andrew Lenharth authored
llvm-svn: 54314
-
Chris Lattner authored
llvm-svn: 54313
-
Bruno Cardoso Lopes authored
llvm-svn: 54312
-
- Aug 02, 2008
-
-
Bruno Cardoso Lopes authored
Added hi,lo registers to be used,def implicitly. This provides better handle of instructions which use hi/lo. Fixes a small BranchAnalysis bug llvm-svn: 54274
-
Bruno Cardoso Lopes authored
llvm-svn: 54273
-
- Aug 01, 2008
-
-
Duncan Sands authored
llvm-svn: 54266
-
- Jul 31, 2008
-
-
Bruno Cardoso Lopes authored
llvm-svn: 54250
-
Bruno Cardoso Lopes authored
the default legalizer. llvm-svn: 54249
-
Dale Johannesen authored
switches use the binary search algorithm) for environments that don't support it. PPC64 JIT is such an environment; turn the flag on for that. llvm-svn: 54248
-
Dan Gohman authored
llvm-svn: 54239
-
- Jul 30, 2008
-
-
Bruno Cardoso Lopes authored
access). Added pattern to match bitconvert node. Fixed MTC1 asm string bug. llvm-svn: 54229
-
Dan Gohman authored
it isn't always visible to gdb. llvm-svn: 54228
-
Dan Gohman authored
empty structs. This fixes PR2612. llvm-svn: 54226
-
Owen Anderson authored
Use existing LiveInterval methods to simplify live interval merging. Thanks to Evan for pointing these out. llvm-svn: 54225
-
Dan Gohman authored
subreg form on x86-64, to avoid the problem with x86-32 having GPRs that don't have 8-bit subregs. Also, change several 16-bit instructions to use equivalent 32-bit instructions. These have a smaller encoding and avoid partial-register updates. llvm-svn: 54223
-
Owen Anderson authored
llvm-svn: 54218
-
Bruno Cardoso Lopes authored
llvm-svn: 54215
-
Bruno Cardoso Lopes authored
llvm-svn: 54214
-
Bruno Cardoso Lopes authored
llvm-svn: 54213
-
Bruno Cardoso Lopes authored
llvm-svn: 54212
-
Mon P Wang authored
to different address spaces. This alters the naming scheme for those intrinsics, e.g., atomic.load.add.i32 => atomic.load.add.i32.p0i32 llvm-svn: 54195
-
Eli Friedman authored
time applying to the implicit comparison in smin expressions. The correct way to transform an inequality into the opposite inequality, either signed or unsigned, is with a not expression. I looked through the SCEV code, and I don't think there are any more occurrences of this issue. llvm-svn: 54194
-
Owen Anderson authored
llvm-svn: 54186
-
Owen Anderson authored
When merging live intervals, we also need to merge in any live ranges that are inputs to two-address instructions that themselves define a range we already care about. llvm-svn: 54185
-
Eli Friedman authored
SGT exit condition. Essentially, the correct way to flip an inequality in 2's complement is the not operator, not the negation operator. That said, the difference only affects cases involving INT_MIN. Also, enhance the pre-test search logic to be a bit smarter about inequalities flipped with a not operator, so it can eliminate the smax from the iteration count for simple loops. llvm-svn: 54184
-
- Jul 29, 2008
-
-
Owen Anderson authored
When merging a PHI operand's live interval into the PHI's live interval, we need to merge over all liveranges in the operand's interval that share the relevant value number, not just the range that immediately precedes the PHI. llvm-svn: 54174
-
Owen Anderson authored
llvm-svn: 54173
-
Duncan Sands authored
to be marked invalid regardless of whether it is a debug, an exception handling or (hopefully) a GC label. llvm-svn: 54172
-
Bruno Cardoso Lopes authored
llvm-svn: 54169
-
Nate Begeman authored
llvm-svn: 54168
-
Bruno Cardoso Lopes authored
llvm-svn: 54167
-
Nate Begeman authored
The CellSPU codegen is broken, but needs to be fixed before we can put this back in. llvm-svn: 54164
-
Nate Begeman authored
CodeGen & Clang work coming next. llvm-svn: 54161
-
Matthijs Kooijman authored
partially unroll a loop when fully unrolling would not fit under the threshold. Patch by Mikael Lepistö. llvm-svn: 54160
-