- May 05, 2006
-
-
Evan Cheng authored
that gets emitted as movl (for r32 to i16, i8) or a movw (for r16 to i8). And if the destination gets allocated a subregister of the source operand, then the instruction will not be emitted at all. llvm-svn: 28119
-
Chris Lattner authored
llvm-svn: 28118
-
Jeff Cohen authored
llvm-svn: 28117
-
Chris Lattner authored
of cross-block live ranges, and allows the bb-at-a-time selector to always coallesce these away, at isel time. This reduces the load on the coallescer and register allocator. For example on a codec on X86, we went from: 1643 asm-printer - Number of machine instrs printed 419 liveintervals - Number of loads/stores folded into instructions 1144 liveintervals - Number of identity moves eliminated after coalescing 1022 liveintervals - Number of interval joins performed 282 liveintervals - Number of intervals after coalescing 1304 liveintervals - Number of original intervals 86 regalloc - Number of times we had to backtrack 1.90232 regalloc - Ratio of intervals processed over total intervals 40 spiller - Number of values reused 182 spiller - Number of loads added 121 spiller - Number of stores added 132 spiller - Number of register spills 6 twoaddressinstruction - Number of instructions commuted to coalesce 360 twoaddressinstruction - Number of two-address instructions to: 1636 asm-printer - Number of machine instrs printed 403 liveintervals - Number of loads/stores folded into instructions 1155 liveintervals - Number of identity moves eliminated after coalescing 1033 liveintervals - Number of interval joins performed 279 liveintervals - Number of intervals after coalescing 1312 liveintervals - Number of original intervals 76 regalloc - Number of times we had to backtrack 1.88998 regalloc - Ratio of intervals processed over total intervals 1 spiller - Number of copies elided 41 spiller - Number of values reused 191 spiller - Number of loads added 114 spiller - Number of stores added 128 spiller - Number of register spills 4 twoaddressinstruction - Number of instructions commuted to coalesce 356 twoaddressinstruction - Number of two-address instructions On this testcase, this change provides a modest reduction in spill code, regalloc iterations, and total instructions emitted. It increases the number of register coallesces. llvm-svn: 28115
-
- May 04, 2006
-
-
Chris Lattner authored
llvm-svn: 28112
-
Chris Lattner authored
llvm-svn: 28110
-
Evan Cheng authored
scheduler can go into a "vertical mode" (i.e. traversing up the two-address chain, etc.) when the register pressure is low. This does seem to reduce the number of spills in the cases I've looked at. But with x86, it's no guarantee the performance of the code improves. It can be turned on with -sched-vertically option. llvm-svn: 28108
-
Chris Lattner authored
llvm-svn: 28107
-
Chris Lattner authored
llvm-svn: 28105
-
Chris Lattner authored
llvm-svn: 28104
-
Chris Lattner authored
llvm-svn: 28102
-
Chris Lattner authored
llvm-svn: 28101
-
Chris Lattner authored
llvm-svn: 28099
-
Chris Lattner authored
thing that can be in it. Remove a dead method. llvm-svn: 28098
-
Chris Lattner authored
Loading and storing off R0 isn't what we wanted. Also, taking some CR's out of CRRC seems to cause failures as well. Further investigation is required. llvm-svn: 28097
-
Jeff Cohen authored
llvm-svn: 28096
-
Jeff Cohen authored
llvm-svn: 28095
-
Chris Lattner authored
llvm-svn: 28094
-
Chris Lattner authored
llvm-svn: 28093
-
Chris Lattner authored
llvm-svn: 28092
-
Chris Lattner authored
llvm-svn: 28091
-
Chris Lattner authored
llvm-svn: 28090
-
- May 03, 2006
-
-
Evan Cheng authored
movlps cannot be used (e.g. when load from m64 has multiple uses). llvm-svn: 28089
-
Chris Lattner authored
in MachineRelocation to create Relocations. llvm-svn: 28088
-
Chris Lattner authored
llvm-svn: 28087
-
Chris Lattner authored
llvm-svn: 28083
-
Chris Lattner authored
simplifies the MachineCodeEmitter interface just a little bit and makes BasicBlocks work like constant pools and jump tables. llvm-svn: 28082
-
Chris Lattner authored
llvm-svn: 28081
-
Nate Begeman authored
instruction. llvm-svn: 28080
-
Nate Begeman authored
not be 100% dense. Increase the minimum threshold for the number of cases in a switch statement from 4 to 6 in order to create a jump table. llvm-svn: 28079
-
Evan Cheng authored
the heuristic to further reduce spills for several test cases. (Note, it may not necessarily translate to runtime win!) llvm-svn: 28076
-
Owen Anderson authored
Refactor TargetMachine, pushing handling of TargetData into the target-specific subclasses. This has one caller-visible change: getTargetData() now returns a pointer instead of a reference. This fixes PR 759. llvm-svn: 28074
-
Chris Lattner authored
llvm-svn: 28073
-
Chris Lattner authored
llvm-svn: 28071
-
Chris Lattner authored
the prototype of the called function. llvm-svn: 28070
-
Chris Lattner authored
llvm-svn: 28069
-
Chris Lattner authored
llvm-svn: 28068
-
Chris Lattner authored
llvm-svn: 28066
-
Chris Lattner authored
1. Change several methods in the MachineCodeEmitter class to be pure virtual. 2. Suck emitConstantPool/initJumpTableInfo into startFunction, removing them from the MachineCodeEmitter interface, and reducing the amount of target- specific code. 3. Change the JITEmitter so that it allocates constantpools and jump tables *right* next to the functions that they belong to, instead of in a separate pool of memory. This makes all memory for a function be contiguous, and means the JITEmitter only tracks one block of memory now. llvm-svn: 28065
-
Nate Begeman authored
llvm-svn: 28063
-