| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 21420
|
|
|
|
|
|
| |
instead of doing it manually.
llvm-svn: 19685
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. If we are two-addressing a commutable instruction and the LHS is not the
last use of the variable, see if the instruction is the last use of the
RHS. If so, commute the instruction, allowing us to avoid a
register-register copy in many cases for common instructions like ADD, OR,
AND, etc on X86.
2. If #1 doesn't hold, and if this is an instruction that also existing in
3-address form, promote the instruction to a 3-address instruction to
avoid the register-register copy. We can do this for several common
instructions in X86, including ADDrr, INC, DEC, etc.
This patch implements test/Regression/CodeGen/X86/commute-two-addr.ll,
overlap-add.ll, and overlap-shift.ll when I check in the X86 support for it.
llvm-svn: 19245
|
|
|
|
|
|
|
|
| |
Move include/Config and include/Support into include/llvm/Config,
include/llvm/ADT and include/llvm/Support. From here on out, all LLVM
public header files must be under include/llvm/.
llvm-svn: 16137
|
|
|
|
| |
llvm-svn: 15779
|
|
|
|
| |
llvm-svn: 15107
|
|
|
|
| |
llvm-svn: 15098
|
|
|
|
| |
llvm-svn: 15091
|
|
|
|
|
|
| |
"Support/Debug.h".
llvm-svn: 15089
|
|
|
|
| |
llvm-svn: 14997
|
|
|
|
|
|
| |
MachineBasicBlock that is not yet attached to a MachineFunction. This change includes changing the third operand (TargetMachine) to a pointer for the MachineInstr::print function.
llvm-svn: 14389
|
|
|
|
| |
llvm-svn: 13956
|
|
|
|
| |
llvm-svn: 11573
|
|
|
|
|
|
|
| |
analysis. It should only preserve them and update LiveVariables if it
already ran.
llvm-svn: 11479
|
|
|
|
| |
llvm-svn: 11430
|
|
|
|
| |
llvm-svn: 11393
|
|
|
|
|
|
|
|
|
| |
ilist of MachineInstr objects. This allows constant time removal and
insertion of MachineInstr instances from anywhere in each
MachineBasicBlock. It also allows for constant time splicing of
MachineInstrs into or out of MachineBasicBlocks.
llvm-svn: 11340
|
|
|
|
| |
llvm-svn: 11129
|
|
|
|
|
|
| |
operand of the instruction and thus simplify the register allocation.
llvm-svn: 11124
|
|
|
|
| |
llvm-svn: 11091
|
|
|
|
| |
llvm-svn: 11087
|
|
|
|
|
|
|
|
|
| |
Fix a spello
Tighten up the assertion checking
No functionality changes.
llvm-svn: 11036
|
|
|
|
|
|
| |
* Turn a bunch of instance variables into automatic variables
llvm-svn: 11035
|
|
|
|
|
|
|
|
| |
Move Passes.h (which defines the interface to this file) to the top.
Move statistics to the top of the file.
Add a comment
llvm-svn: 11034
|
|
|
|
|
|
|
|
|
| |
LiveVariables::HandlePhysRegDef private they use information that is
not in memory when LiveVariables finishes the analysis.
Also update the TwoAddressInstructionPass to not use this interface.
llvm-svn: 10755
|
|
|
|
| |
llvm-svn: 10692
|
|
|
|
|
|
|
| |
A = B op C where A == C, but this cannot really occur in practice
because of SSA form. Add an assert to check that just to be safe.
llvm-svn: 10682
|
|
|
|
| |
llvm-svn: 10681
|
|
|
|
|
|
| |
instead, since this pass doesn't expose any state to its users.
llvm-svn: 10520
|
|
more operands and the two first operands are constrained to be the
same. The pass takes an instruction of the form:
a = b op c
and transforms it into:
a = b
a = a op c
and also preserves live variables.
llvm-svn: 10512
|