| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
| |
EXTRACT_SUBREG no longer appears as a machine instruction. Use COPY instead.
Add isCopy() checks in many places using isMoveInstr() and isExtractSubreg().
The isMoveInstr hook will be removed later.
llvm-svn: 107879
|
|
|
|
|
|
|
| |
This code is transitional, it will soon be possible to eliminate
isExtractSubreg, isInsertSubreg, and isMoveInstr in most places.
llvm-svn: 107547
|
|
|
|
| |
llvm-svn: 105502
|
|
|
|
| |
llvm-svn: 105399
|
|
|
|
| |
llvm-svn: 105308
|
|
|
|
|
|
| |
Evan please verify!
llvm-svn: 104408
|
|
|
|
|
|
| |
Controlled by option -machine-cse-phys-defs.
llvm-svn: 104385
|
|
|
|
|
|
| |
use of it in MachineCSE.
llvm-svn: 103726
|
|
|
|
| |
llvm-svn: 101964
|
|
|
|
| |
llvm-svn: 101914
|
|
|
|
|
|
|
|
| |
adding it to CSE hash table since copies aren't being considered for CSE and they may be deleted.
rdar://7819990
llvm-svn: 100170
|
|
|
|
| |
llvm-svn: 99378
|
|
|
|
| |
llvm-svn: 99319
|
|
|
|
| |
llvm-svn: 98224
|
|
|
|
|
|
|
|
|
|
|
| |
1. Be careful with cse "cheap" expressions. e.g. constant materialization. Only cse them when the common expression is local or in a direct predecessor. We don't want cse of cheap instruction causing other expressions to be spilled.
2. Watch out for the case where the expression doesn't itself uses a virtual register. e.g. lea of frame object. If the common expression itself is used by copies (common for passing addresses to function calls), don't perform the cse. Since these expressions do not use a register, it creates a live range but doesn't close any, we want to be very careful with increasing register pressure.
Note these are heuristics so machine cse doesn't make register allocator unhappy. Once we have proper live range splitting and re-materialization support in place, these should be evaluated again.
Now machine cse is almost always a win on llvm nightly tests on x86 and x86_64.
llvm-svn: 98121
|
|
|
|
| |
llvm-svn: 98048
|
|
|
|
| |
llvm-svn: 98044
|
|
|
|
|
|
|
|
|
| |
coalescer) handle sub-register classes.
- Add heuristics to avoid non-profitable cse. Given the current lack of live
range splitting, avoid cse when an expression has PHI use and the would be
new use is in a BB where the expression wasn't already being used.
llvm-svn: 98043
|
|
|
|
|
|
| |
cse implicit-def for obvious performance reason.
llvm-svn: 98009
|
|
|
|
|
|
| |
to a real coalescer.
llvm-svn: 98007
|
|
|
|
| |
llvm-svn: 97861
|
|
|
|
| |
llvm-svn: 97747
|
|
|
|
|
|
| |
dead is really alive. This is necessary to catch a lot of common cse opportunities for targets like x86.
llvm-svn: 97706
|
|
|
|
|
|
| |
cannot be CSE'ed, but it *can* be used to replace a common subexpression.
llvm-svn: 97688
|
|
|
|
|
|
| |
implements a special DenseMapInfo trait for DenseMap<MachineInstr*> that compare the value of the MachineInstr rather than the pointer value. Since the hashing and equality test functions ignore defs it's useful for doing CSE kind optimization.
llvm-svn: 97678
|
|
|
|
| |
llvm-svn: 97673
|
|
|
|
| |
llvm-svn: 97667
|
|
|
|
|
|
| |
physical registers are getting in the way.
llvm-svn: 97664
|
|
|
|
| |
llvm-svn: 97635
|
|
|
|
| |
llvm-svn: 97577
|
|
llvm-svn: 97543
|