- Feb 26, 2008
-
-
Bill Wendling authored
llvm-svn: 47629
-
Bill Wendling authored
would have been a Godsend here! llvm-svn: 47625
-
Bill Wendling authored
llvm-svn: 47598
-
- Feb 22, 2008
-
-
Evan Cheng authored
llvm-svn: 47492
-
Evan Cheng authored
the definition of the operand also reaches its uses. llvm-svn: 47475
-
- Feb 20, 2008
-
-
Anton Korobeynikov authored
llvm-svn: 47368
-
- Feb 10, 2008
-
-
Dan Gohman authored
llvm-svn: 46930
-
- Feb 08, 2008
-
-
Evan Cheng authored
llvm-svn: 46896
-
- Jan 07, 2008
-
-
Chris Lattner authored
Make MachineInstr::getDesc return a reference instead of a pointer, since it can never be null. llvm-svn: 45695
-
Chris Lattner authored
llvm-svn: 45680
-
Chris Lattner authored
that it is cheap and efficient to get. Move a variety of predicates from TargetInstrInfo into TargetInstrDescriptor, which makes it much easier to query a predicate when you don't have TII around. Now you can use MI->getDesc()->isBranch() instead of going through TII, and this is much more efficient anyway. Not all of the predicates have been moved over yet. Update old code that used MI->getInstrDescriptor()->Flags to use the new predicates in many places. llvm-svn: 45674
-
Owen Anderson authored
llvm-svn: 45673
-
- Jan 01, 2008
-
-
Owen Anderson authored
llvm-svn: 45484
-
- Dec 31, 2007
-
-
Owen Anderson authored
Machine-level API cleanup instigated by Chris. llvm-svn: 45470
-
Chris Lattner authored
that "machine" classes are used to represent the current state of the code being compiled. Given this expanded name, we can start moving other stuff into it. For now, move the UsedPhysRegs and LiveIn/LoveOuts vectors from MachineFunction into it. Update all the clients to match. This also reduces some needless #includes, such as MachineModuleInfo from MachineFunction. llvm-svn: 45467
-
- Dec 30, 2007
-
-
Chris Lattner authored
- Eliminate the static "print" method for operands, moving it into MachineOperand::print. - Change various set* methods for register flags to take a bool for the value to set it to. Remove unset* methods. - Group methods more logically by operand flavor in MachineOperand.h llvm-svn: 45461
-
- Dec 29, 2007
-
-
Chris Lattner authored
llvm-svn: 45418
-
- Dec 12, 2007
-
-
Evan Cheng authored
If deleting a reload instruction due to reuse (value is available in register R and reload is targeting R), make sure to invalidate the kill information of the last kill. llvm-svn: 44894
-
- Dec 05, 2007
-
-
Evan Cheng authored
llvm-svn: 44612
-
Evan Cheng authored
llvm-svn: 44611
-
Evan Cheng authored
llvm-svn: 44609
-
Evan Cheng authored
This allows an important optimization to be re-enabled. - If all uses / defs of a split interval can be folded, give the interval a low spill weight so it would not be picked in case spilling is needed (avoid pushing other intervals in the same BB to be spilled). llvm-svn: 44601
-
Evan Cheng authored
the stored register is killed. llvm-svn: 44600
-
Evan Cheng authored
llvm-svn: 44587
-
- Dec 04, 2007
-
-
Evan Cheng authored
Spiller unfold optimization bug: do not clobber a reusable stack slot value unless it can be modified. llvm-svn: 44575
-
- Dec 03, 2007
-
-
Evan Cheng authored
llvm-svn: 44549
-
Evan Cheng authored
llvm-svn: 44531
-
- Dec 02, 2007
-
-
Evan Cheng authored
llvm-svn: 44517
-
- Nov 29, 2007
-
-
Evan Cheng authored
llvm-svn: 44428
-
- Nov 28, 2007
-
-
Evan Cheng authored
llvm-svn: 44386
-
- Nov 17, 2007
-
-
Evan Cheng authored
When a live interval is being spilled, rather than creating short, non-spillable intervals for every def / use, split the interval at BB boundaries. That is, for every BB where the live interval is defined or used, create a new interval that covers all the defs and uses in the BB. This is designed to eliminate one common problem: multiple reloads of the same value in a single basic block. Note, it does *not* decrease the number of spills since no copies are inserted so the split intervals are *connected* through spill and reloads (or rematerialization). The newly created intervals can be spilled again, in that case, since it does not span multiple basic blocks, it's spilled in the usual manner. However, it can reuse the same stack slot as the previously split interval. This is currently controlled by -split-intervals-at-bb. llvm-svn: 44198
-
- Nov 14, 2007
-
-
Evan Cheng authored
MachineOperand auxInfo. Previous clunky implementation uses an external map to track sub-register uses. That works because register allocator uses a new virtual register for each spilled use. With interval splitting (coming soon), we may have multiple uses of the same register some of which are of using different sub-registers from others. It's too fragile to constantly update the information. llvm-svn: 44104
-
- Nov 02, 2007
-
-
Evan Cheng authored
llvm-svn: 43644
-
- Oct 22, 2007
-
-
Evan Cheng authored
- Remove a bogus assertion. llvm-svn: 43211
-
- Oct 19, 2007
-
-
Evan Cheng authored
Turn a store folding instruction into a load folding instruction. e.g. xorl %edi, %eax movl %eax, -32(%ebp) movl -36(%ebp), %eax orl %eax, -32(%ebp) => xorl %edi, %eax orl -36(%ebp), %eax mov %eax, -32(%ebp) This enables the unfolding optimization for a subsequent instruction which will also eliminate the newly introduced store instruction. llvm-svn: 43192
-
- Oct 13, 2007
-
-
Evan Cheng authored
Turn this: movswl %ax, %eax movl %eax, -36(%ebp) xorl %edi, -36(%ebp) into movswl %ax, %eax xorl %edi, %eax movl %eax, -36(%ebp) by unfolding the load / store xorl into an xorl and a store when we know the value in the spill slot is available in a register. This doesn't change the number of instructions but reduce the number of times memory is accessed. Also unfold some load folding instructions and reuse the value when similar situation presents itself. llvm-svn: 42947
-
- Oct 12, 2007
-
-
Evan Cheng authored
(almost) a register copy. However, it always coalesced to the register of the RHS (the super-register). All uses of the result of a EXTRACT_SUBREG are sub- register uses which adds subtle complications to load folding, spiller rewrite, etc. llvm-svn: 42899
-
- Sep 26, 2007
-
-
Evan Cheng authored
Tested with "make check"! llvm-svn: 42346
-
- Sep 14, 2007
-
-
Dan Gohman authored
isRegister, isImmediate, and isMachineBasicBlock, which are equivalent, and more popular. llvm-svn: 41958
-
- Sep 06, 2007
-
-
David Greene authored
Add instruction dump output. This helps find bugs. llvm-svn: 41744
-