- Feb 15, 2008
-
-
Evan Cheng authored
llvm-svn: 47164
-
Dan Gohman authored
with a hard-coded operand number. llvm-svn: 47163
-
- Feb 14, 2008
-
-
Chris Lattner authored
llvm-svn: 47128
-
Duncan Sands authored
the return value is zero-extended if it isn't sign-extended. It may also be any-extended. Also, if a floating point value was returned in a larger floating point type, pass 1 as the second operand to FP_ROUND, which tells it that all the precision is in the original type. I think this is right but I could be wrong. Finally, when doing libcalls, set isZExt on a parameter if it is "unsigned". Currently isSExt is set when signed, and nothing is set otherwise. This should be right for all calls to standard library routines. llvm-svn: 47122
-
Nate Begeman authored
1) ConstantFP is now expand by default 2) ConstantFP is not turned into TargetConstantFP during Legalize if it is legal. This allows ConstantFP to be handled like Constant, allowing for targets that can encode FP immediates as MachineOperands. As a bonus, fix up Itanium FP constants, which now correctly match, and match more constants! Hooray. llvm-svn: 47121
-
Nate Begeman authored
FP Immediates, crazily enough llvm-svn: 47117
-
Dan Gohman authored
llvm-svn: 47101
-
- Feb 13, 2008
-
-
Dan Gohman authored
llvm-svn: 47098
-
Dan Gohman authored
to pass the mask APInt by value, not by reference. llvm-svn: 47096
-
Nicolas Geoffray authored
llvm-svn: 47079
-
Duncan Sands authored
CTTZ and CTPOP. The expansion code differs from that in LegalizeDAG in that it chooses to take the CTLZ/CTTZ count from the Hi/Lo part depending on whether the Hi/Lo value is zero, not on whether CTLZ/CTTZ of Hi/Lo returned 32 (or whatever the width of the type is) for it. I made this change because the optimizers may well know that Hi/Lo is zero and exploit it. The promotion code for CTTZ also differs from that in LegalizeDAG: it uses an "or" to get the right result when the original value is zero, rather than using a compare and select. This also means the value doesn't need to be zero extended. llvm-svn: 47075
-
Evan Cheng authored
llvm-svn: 47060
-
Evan Cheng authored
llvm-svn: 47058
-
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
llvm-svn: 47052
-
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
-
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
-
- Feb 12, 2008
-
-
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
-
- 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
-
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
-
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
-
- Feb 10, 2008
-
-
Dan Gohman authored
llvm-svn: 46930
-
Duncan Sands authored
llvm-svn: 46926
-
Bill Wendling authored
no-op). llvm-svn: 46922
-
Chris Lattner authored
llvm-svn: 46918
-
- Feb 09, 2008
-
-
Evan Cheng authored
llvm-svn: 46903
-
- Feb 08, 2008
-
-
Dan Gohman authored
begin adding some methods to use it this way. llvm-svn: 46899
-
Evan Cheng authored
llvm-svn: 46896
-
Evan Cheng authored
llvm-svn: 46895
-