- Feb 13, 2008
-
-
Evan Cheng authored
Fix a potential serious problem where kills belonging to the val# defined by a two-address instruction is also on the val# that defines the input. llvm-svn: 47057
-
Evan Cheng authored
* Ignore copy instructions which have already been coalesced. llvm-svn: 47056
-
Chris Lattner authored
node as soon as we create it in SDISel. Previously we would lower it in legalize. The problem with this is that it only exposes the argument loads implied by FORMAL_ARGUMENTs after legalize, so that only dag combine 2 can hack on them. This causes us to miss some optimizations because datatype expansion also happens here. Exposing the loads early allows us to do optimizations on them. For example we now compile arg-cast.ll to: _foo: movl $2147483647, %eax andl 8(%esp), %eax ret where we previously produced: _foo: subl $12, %esp movsd 16(%esp), %xmm0 movsd %xmm0, (%esp) movl $2147483647, %eax andl 4(%esp), %eax addl $12, %esp ret It might also make sense to do this for ISD::CALL nodes, which have implicit stores on many targets. llvm-svn: 47054
-
Chris Lattner authored
DAGCombine is now quite good at zapifying them. llvm-svn: 47053
-
Chris Lattner authored
llvm-svn: 47052
-
Nate Begeman authored
llvm-svn: 47051
-
Nate Begeman authored
type is not legal. llvm-svn: 47048
-
Evan Cheng authored
PR1877. A3 = op A2 B0<kill> ... B1 = A3 <- this copy ... = op A3 <- more uses ==> B2 = op B0 A2<kill> ... B1 = B2 <- now an identify copy ... = op B2 <- more uses This speeds up FreeBench/neural by 29%, Olden/bh by 12%, oopack_v1p8 by 53%. llvm-svn: 47046
-
Nate Begeman authored
llvm-svn: 47045
-
Evan Cheng authored
- removeRange() can now update value# information. llvm-svn: 47044
-
Evan Cheng authored
llvm-svn: 47043
-
Evan Cheng authored
llvm-svn: 47042
-
Dan Gohman authored
Add an overload that supports the uint64_t interface for use by clients that haven't been updated yet. llvm-svn: 47039
-
Dale Johannesen authored
Spotted by Nick Kledzik. llvm-svn: 47037
-
- Feb 12, 2008
-
-
Nate Begeman authored
llvm-svn: 47036
-
Nate Begeman authored
Move formats into the formats file llvm-svn: 47035
-
Owen Anderson authored
bugs fixed. This now passes PPC bootstrap. llvm-svn: 47026
-
Duncan Sands authored
handle arbitrary precision integers and any number of parts. For example, on a 32 bit machine an i50 corresponds to two i32 parts. getCopyToParts will extend the i50 to an i64 then write half of the i64 to each part; getCopyFromParts will combine the two i32 parts into an i64 then truncate the result to i50. llvm-svn: 47024
-
Evan Cheng authored
llvm-svn: 47020
-
Evan Cheng authored
llvm-svn: 47019
-
Wojciech Matyjewicz authored
variable (with step 1) and m is its final value. Then, the correct trip count is SMAX(m,n)-n. Previously, we used SMAX(0,m-n), but m-n may overflow and can't in general be interpreted as signed. Patch by Nick Lewycky. llvm-svn: 47007
-
Eli Friedman authored
checks for a malloc/alloca immediately followed by a load. llvm-svn: 47006
-
Evan Cheng authored
llvm-svn: 47002
-
Evan Cheng authored
llvm-svn: 47001
-
Nate Begeman authored
llvm-svn: 46979
-
- Feb 11, 2008
-
-
Duncan Sands authored
in preparation for apint support. These changes are intended to have no functional effect. llvm-svn: 46967
-
Dan Gohman authored
llvm-svn: 46964
-
Dan Gohman authored
llvm-svn: 46963
-
Dan Gohman authored
llvm-svn: 46962
-
Dan Gohman authored
llvm-svn: 46961
-
Wojciech Matyjewicz authored
to the RHS. This simple change allows to compute loop iteration count for loops with condition similar to the one in the testcase (which seems to be quite common). llvm-svn: 46959
-
Ted Kremenek authored
Added member template "Add" to FoldingSetNodeID that allows "adding" arbitrary objects to a profile via dispatch to FoldingSetTrait<T>::Profile(). Removed FoldingSetNodeID::AddAPFloat and FoldingSetNodeID::APInt, as their functionality is now replaced using the above mentioned member template. llvm-svn: 46957
-
Wojciech Matyjewicz authored
arbitrary iteration. The patch: 1) changes SCEVSDivExpr into SCEVUDivExpr, 2) replaces PartialFact() function with BinomialCoefficient(); the computations (essentially, the division) in BinomialCoefficient() are performed with the apprioprate bitwidth necessary to avoid overflow; unsigned division is used instead of the signed one. Computations in BinomialCoefficient() require support from the code generator for APInts. Currently, we use a hack rounding up the neccessary bitwidth to the nearest power of 2. The hack is easy to turn off in future. One remaining issue: we assume the divisor of the binomial coefficient formula can be computed accurately using 16 bits. It means we can handle AddRecs of length up to 9. In future, we should use APInts to evaluate the divisor. Thanks to Nicholas for cooperation! llvm-svn: 46955
-
Duncan Sands authored
llvm-svn: 46954
-
Evan Cheng authored
Determine whether a spill kills the register it's spilling before insertion rather than trying to undo the kill marker afterwards. llvm-svn: 46953
-
Nate Begeman authored
Add some notes to the README. llvm-svn: 46949
-
Nate Begeman authored
llvm-svn: 46948
-
- Feb 10, 2008
-
-
Chris Lattner authored
This fixes the store case, my previous patch just fixed the load case. rdar://5707076. llvm-svn: 46932
-
Nate Begeman authored
llvm-svn: 46931
-
Dan Gohman authored
llvm-svn: 46930
-