- Sep 22, 2008
-
-
Dale Johannesen authored
default. llvm-svn: 56471
-
Evan Cheng authored
llvm-svn: 56469
-
Dale Johannesen authored
llvm-svn: 56468
-
Dale Johannesen authored
llvm-svn: 56456
-
Evan Cheng authored
(srl x, (trunc (and y, c))) -> (srl x, (and (trunc y), c)) etc. when both "trunc" and "and" have single uses. llvm-svn: 56452
-
Oscar Fuentes authored
llvm-svn: 56419
-
Bill Wendling authored
llvm-svn: 56418
-
- Sep 21, 2008
-
-
Dan Gohman authored
Handle{Virt,Phys}Reg{Def,Use}. Remove a redundant check for register zero, and redundant checks for isPhysicalRegister. llvm-svn: 56412
-
Owen Anderson authored
correct in the presence of things like EH labels. llvm-svn: 56410
-
Chris Lattner authored
llvm-svn: 56399
-
- Sep 20, 2008
-
-
Dale Johannesen authored
Check bits for preferred register. llvm-svn: 56384
-
Evan Cheng authored
Fix PR2808. When regalloc runs out of register, it spill a physical register around the live interval being allocated. Do not continue to try to spill another register, just grab the physical register and move on. llvm-svn: 56381
-
Evan Cheng authored
llvm-svn: 56372
-
Dan Gohman authored
results in better code for globals. Also, unbreak the local CSE for GlobalValue stub loads. llvm-svn: 56371
-
- Sep 19, 2008
-
-
Dale Johannesen authored
have previously been assigned conflicting physreg. llvm-svn: 56364
-
Evan Cheng authored
llvm-svn: 56352
-
Dale Johannesen authored
and redo as linked list walk. Logic moved into RA. Per review feedback. llvm-svn: 56326
-
Evan Cheng authored
llvm-svn: 56314
-
- Sep 18, 2008
-
-
Dan Gohman authored
defs to be necessarily live. llvm-svn: 56310
-
Dan Gohman authored
copy of the BURRList scheduler, but with several parts ripped out, such as backtracking, online topological sort maintenance (needed by backtracking), the priority queue, and Sethi-Ullman number computation and maintenance (needed by the priority queue). As a result of all this, it generates somewhat lower quality code, but that's its tradeoff for running about 30% faster than list-burr in -fast mode in many cases. This is somewhat experimental. Moving forward, major pieces of this can be refactored with pieces in common with ScheduleDAGRRList.cpp. llvm-svn: 56307
-
- Sep 17, 2008
-
-
Dale Johannesen authored
with an earlyclobber operand elsewhere. Propagate this bit and the earlyclobber bit through SDISel. Change linear-scan RA not to allocate regs in a way that conflicts with an earlyclobber. See also comments. llvm-svn: 56290
-
Evan Cheng authored
llvm-svn: 56287
-
Dan Gohman authored
llvm-svn: 56281
-
Dan Gohman authored
be used with fast-isel. llvm-svn: 56268
-
Evan Cheng authored
When converting a CopyFromReg to a copy instruction, use the register class of its uses to determine the right destination register class of the copy. This is important for targets where a physical register may belong to multiple register classes. llvm-svn: 56258
-
Dan Gohman authored
ConstantPoolSDNode, using the target's preferred alignment for the constant type. In LegalizeDAG, when performing loads from the constant pool, the ConstantPoolSDNode's alignment is used in the calls to getLoad and getExtLoad. This change prevents SelectionDAG::getLoad/getExtLoad from incorrectly choosing the ABI alignment for constant pool loads when Alignment == 0. The incorrect alignment is only a performance issue when ABI alignment does not equal preferred alignment (i.e., on x86 it was generating MOVUPS instead of MOVAPS for v4f32 constant loads when the default ABI alignment for 128bit vectors is forced to 1 byte.) Patch by Paul Redmond! llvm-svn: 56253
-
- Sep 16, 2008
-
-
Bill Wendling authored
Apologies for the thrashing. llvm-svn: 56251
-
Dan Gohman authored
llvm-svn: 56250
-
Bill Wendling authored
- Add linkage to SymbolSDNode (default to external). - Change ISD::ExternalSymbol to ISD::Symbol. - Change ISD::TargetExternalSymbol to ISD::TargetSymbol These changes pave the way to allowing SymbolSDNodes with non-external linkage. llvm-svn: 56249
-
Dan Gohman authored
MachineConstantPool::getConstantPoolIndex actually expects a log2-encoded alignment. llvm-svn: 56248
-
Dan Gohman authored
are not enabled. Instead just omit the tail call flag when calls are created. llvm-svn: 56235
-
Owen Anderson authored
Live intervals for live-in registers should begin at the beginning of a basic block, not at the first instruction. Also, their valno's should have an unknown def. This has no effect currently, but was causing issues when StrongPHIElimination was enabled. llvm-svn: 56231
-
- Sep 15, 2008
-
-
Dan Gohman authored
libcalls, as in this testcase on ARM. llvm-svn: 56226
-
Evan Cheng authored
Correctly update kill infos after extending a live range and merge 2 val#'s; fix 56165 - do not mark val# copy field if the copy does not define the val#. llvm-svn: 56199
-
- Sep 14, 2008
-
-
Dale Johannesen authored
llvm-svn: 56194
-
- Sep 13, 2008
-
-
Dan Gohman authored
isImmediate(), isRegister(), and friends, to avoid confusion about having two different names with the same meaning. I'm not attached to the longer names, and would be ok with changing to the shorter names if others prefer it. llvm-svn: 56189
-
Dan Gohman authored
Currently it just holds the calling convention and flags for isVarArgs and isTailCall. And it has several utility methods, which eliminate magic 5+2*i and similar index computations in several places. CallSDNodes are not CSE'd. Teach UpdateNodeOperands to handle nodes that are not CSE'd gracefully. llvm-svn: 56183
-
- Sep 12, 2008
-
-
Evan Cheng authored
vr2 = OR vr0, vr1 => vr2 = OR vr1, vr1 // after coalescing vr0 with vr1 Update the value# of the destination register with the copy instruction if that happens. llvm-svn: 56165
-
Dan Gohman authored
ConstantFP* instead of APInt and APFloat directly. This reduces the amount of time to create ConstantSDNode and ConstantFPSDNode nodes when ConstantInt* and ConstantFP* respectively are already available, as is the case in SelectionDAGBuild.cpp. Also, it reduces the amount of time to legalize constants into constant pools, and the amount of time to add ConstantFP operands to MachineInstrs, due to eliminating ConstantInt::get and ConstantFP::get calls. It increases the amount of work needed to create new constants in cases where the client doesn't already have a ConstantInt* or ConstantFP*, such as legalize expanding 64-bit integer constants to 32-bit constants. And it adds a layer of indirection for the accessor methods. But these appear to be outweight by the benefits in most cases. It will also make it easier to make ConstantSDNode and ConstantFPNode more consistent with ConstantInt and ConstantFP. llvm-svn: 56162
-
Dale Johannesen authored
representation; coalescer and RA need to know about it. No functional change. llvm-svn: 56161
-