| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 35140
|
|
|
|
| |
llvm-svn: 32698
|
|
|
|
| |
llvm-svn: 32321
|
|
|
|
|
|
| |
is 'unsigned'.
llvm-svn: 32279
|
|
|
|
| |
llvm-svn: 32098
|
|
|
|
| |
llvm-svn: 31985
|
|
|
|
| |
llvm-svn: 31583
|
|
|
|
|
|
| |
dest / src operands can be tied together.
llvm-svn: 31363
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
actually *removes* one of the operands, instead of just assigning both operands
the same register. This make reasoning about instructions unnecessarily complex,
because you need to know if you are before or after register allocation to match
up operand #'s with the target description file.
Changing this also gets rid of a bunch of hacky code in various places.
This patch also includes changes to fold loads into cmp/test instructions in
the X86 backend, along with a significant simplification to the X86 spill
folding code.
llvm-svn: 30108
|
|
|
|
| |
llvm-svn: 29911
|
|
|
|
| |
llvm-svn: 29220
|
|
|
|
| |
llvm-svn: 28973
|
|
|
|
|
|
| |
by Anton Korobeynikov! This is a step towards closing PR786.
llvm-svn: 28447
|
|
|
|
| |
llvm-svn: 28102
|
|
|
|
| |
llvm-svn: 25515
|
|
|
|
| |
llvm-svn: 24019
|
|
|
|
| |
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
|