| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
in this testcase.
llvm-svn: 88998
|
| |
|
|
|
|
|
| |
by the recent FixedStackPseudoSourceValue-related changes, now that
the specific bug that affected it is fixed, in r88954.
llvm-svn: 88997
|
| |
|
|
| |
llvm-svn: 88991
|
| |
|
|
|
|
|
|
| |
/ store folding instructions are not referencing spill stack slots.
- Mark MOVUPSrm re-materializable.
llvm-svn: 88974
|
| |
|
|
| |
llvm-svn: 88947
|
| |
|
|
| |
llvm-svn: 88946
|
| |
|
|
| |
llvm-svn: 88942
|
| |
|
|
| |
llvm-svn: 88921
|
| |
|
|
|
|
|
|
| |
Have the asm printer emit a comment if an instruction is a spill or
reload and have the spiller mark copies it introdues so the asm printer
can also annotate those.
llvm-svn: 88911
|
| |
|
|
| |
llvm-svn: 88899
|
| |
|
|
| |
llvm-svn: 88895
|
| |
|
|
| |
llvm-svn: 88892
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Add a smarter constant pool loading, instead of:
lui $2, %hi($CPI1_0)
addiu $2, $2, %lo($CPI1_0)
lwc1 $f0, 0($2)
Generate:
lui $2, %hi($CPI1_0)
lwc1 $f0, %lo($CPI1_0)($2)
llvm-svn: 88886
|
| |
|
|
|
|
|
| |
conservatively. eliminateFrameIndex() machinery adjust to handle addr mode
6 (vld1/vst1) used for spills. Fix tests to expect aligned Q-reg spilling
llvm-svn: 88874
|
| |
|
|
| |
llvm-svn: 88817
|
| |
|
|
| |
llvm-svn: 88802
|
| |
|
|
|
|
| |
replace broken code in VirtRegRewriter.
llvm-svn: 88753
|
| |
|
|
|
|
|
|
| |
- If destination is a physical register and it has a subreg index, use the
sub-register instead.
This fixes PR5423.
llvm-svn: 88745
|
| |
|
|
| |
llvm-svn: 88739
|
| |
|
|
| |
llvm-svn: 88738
|
| |
|
|
| |
llvm-svn: 88737
|
| |
|
|
| |
llvm-svn: 88734
|
| |
|
|
| |
llvm-svn: 88719
|
| |
|
|
|
|
|
|
|
|
| |
code-size win, and not when it's only likely to be code-size neutral,
such as when only a single instruction would be eliminated and a new
branch would be required.
This fixes rdar://7392894.
llvm-svn: 88692
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
D0<def,dead> = ...
...
= S0<use, kill>
S0<def> = ...
...
D0<def> =
The first D0 def is correctly marked dead, however, livevariables should have
added an implicit def of S0 or we end up with a use without a def.
llvm-svn: 88690
|
| |
|
|
| |
llvm-svn: 88672
|
| |
|
|
|
|
| |
PPC is such a target; make it work.
llvm-svn: 87060
|
| |
|
|
| |
llvm-svn: 87049
|
| |
|
|
|
|
| |
to not take an undefined value as input.
llvm-svn: 86997
|
| |
|
|
| |
llvm-svn: 86984
|
| |
|
|
| |
llvm-svn: 86972
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
cannot be folded into target cmp instruction.
- Avoid a phase ordering issue where early cmp optimization would prevent the
later count-to-zero optimization.
- Add missing checks which could cause LSR to reuse stride that does not have
users.
- Fix a bug in count-to-zero optimization code which failed to find the pre-inc
iv's phi node.
- Remove, tighten, loosen some incorrect checks disable valid transformations.
- Quite a bit of code clean up.
llvm-svn: 86969
|
| |
|
|
|
|
| |
can be made to fall through into the other.
llvm-svn: 86909
|
| |
|
|
|
|
| |
in return registers will be returned through a hidden sret parameter introduced during SelectionDAG construction.
llvm-svn: 86876
|
| |
|
|
|
|
|
|
|
|
|
| |
tail merging support to handle more cases.
- Recognize several cases where tail merging is beneficial even when
the tail size is smaller than the generic threshold.
- Make use of MachineInstrDesc::isBarrier to help detect
non-fallthrough blocks.
- Check for and avoid disrupting fall-through edges in more cases.
llvm-svn: 86871
|
| |
|
|
| |
llvm-svn: 86814
|
| |
|
|
| |
llvm-svn: 86786
|
| |
|
|
| |
llvm-svn: 86785
|
| |
|
|
|
|
| |
function it's generated for.
llvm-svn: 86779
|
| |
|
|
| |
llvm-svn: 86752
|
| |
|
|
|
|
|
|
|
| |
constant whose component type is not a legal type for the target.
(If the target ConstantPool cannot handle this type either, it has
an opportunity to merge elements. In practice any target with
8-bit bytes must support i8 *as data*). 7320806 (partial).
llvm-svn: 86751
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
generates a sequence similar to this:
__Z4funci:
LFB2:
mflr r0
LCFI0:
stmw r30,-8(r1)
LCFI1:
stw r0,8(r1)
LCFI2:
stwu r1,-80(r1)
LCFI3:
mr r30,r1
LCFI4:
where LCFI3 and LCFI4 are used by the FDE to indicate what the FP, LR, and other
things are. We generated something more like this:
Leh_func_begin1:
mflr r0
stw r31, 20(r1)
stw r0, 8(r1)
Llabel1:
stwu r1, -80(r1)
Llabel2:
mr r31, r1
Note that we are missing the "mr" instruction. This patch makes it more like the
GCC output.
llvm-svn: 86729
|
| |
|
|
| |
llvm-svn: 86620
|
| |
|
|
| |
llvm-svn: 86614
|
| |
|
|
| |
llvm-svn: 86494
|
| |
|
|
| |
llvm-svn: 86471
|
| |
|
|
| |
llvm-svn: 86466
|
| |
|
|
|
|
| |
since the instruction might use the other result of different type.
llvm-svn: 86462
|
| |
|
|
|
|
|
|
| |
1. rename the movhp patfrag to movlhps, since thats what it actually matches
2. eliminate the bogus movhps load and store patterns, they were incorrect. The load transforms are already handled (correctly) by shufps/unpack.
3. revert a recent test change to its correct form.
llvm-svn: 86415
|
| |
|
|
| |
llvm-svn: 86385
|