| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 89328
|
| |
|
|
| |
llvm-svn: 89326
|
| |
|
|
|
|
|
|
|
|
|
|
| |
- Support mips1 like load/store of doubles:
Instead of:
sdc $f0, X($3)
Generate:
swc $f0, X($3)
swc $f1, X+4($3)
llvm-svn: 89322
|
| |
|
|
|
|
| |
string that's aligned at 8-bytes instead of 16-bytes.
llvm-svn: 89295
|
| |
|
|
| |
llvm-svn: 89274
|
| |
|
|
| |
llvm-svn: 89273
|
| |
|
|
|
|
| |
the tail of a block may make that block a new candidate for duplication.
llvm-svn: 89264
|
| |
|
|
| |
llvm-svn: 89250
|
| |
|
|
|
|
|
|
| |
When TwoAddressInstructionPass deletes a dead instruction, make sure that all
register kills are accounted for. The 2-addr register does not get special
treatment.
llvm-svn: 89246
|
| |
|
|
| |
llvm-svn: 89167
|
| |
|
|
| |
llvm-svn: 89150
|
| |
|
|
| |
llvm-svn: 89143
|
| |
|
|
| |
llvm-svn: 89138
|
| |
|
|
|
|
|
| |
The local register allocator doesn't like it when LiveVariables is run.
We should also disable edge splitting under -O0, but that has to wait a bit.
llvm-svn: 89125
|
| |
|
|
|
|
| |
use postinc iv.
llvm-svn: 89116
|
| |
|
|
| |
llvm-svn: 89082
|
| |
|
|
| |
llvm-svn: 89021
|
| |
|
|
| |
llvm-svn: 89019
|
| |
|
|
| |
llvm-svn: 89007
|
| |
|
|
| |
llvm-svn: 89002
|
| |
|
|
| |
llvm-svn: 89001
|
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
| |
address space (though it only uses a small fraction of that), and the
buildbots disallow that.
Also add a comment to the Makefile's ulimit line warning future
developers that changing it won't work.
llvm-svn: 88994
|
| |
|
|
| |
llvm-svn: 88991
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The large code model is documented at
http://www.x86-64.org/documentation/abi.pdf and says that calls should
assume their target doesn't live within the 32-bit pc-relative offset
that fits in the call instruction.
To do this, we turn off the global-address->target-global-address
conversion in X86TargetLowering::LowerCall(). The first attempt at
this broke the lazy JIT because it can separate the movabs(imm->reg)
from the actual call instruction. The lazy JIT receives the address of
the movabs as a relocation and needs to record the return address from
the call; and then when that call happens, it needs to patch the
movabs with the newly-compiled target. We could thread the call
instruction into the relocation and record the movabs<->call mapping
explicitly, but that seems to require at least as much new
complication in the code generator as this change.
To fix this, we make lazy functions _always_ go through a call
stub. You'd think we'd only have to force lazy calls through a stub on
difficult platforms, but that turns out to break indirect calls
through a function pointer. The right fix for that is to distinguish
between calls and address-of operations on uncompiled functions, but
that's complex enough to leave for someone else to do.
Another attempt at this defined a new CALL64i pseudo-instruction,
which expanded to a 2-instruction sequence in the assembly output and
was special-cased in the X86CodeEmitter's emitInstruction()
function. That broke indirect calls in the same way as above.
This patch also removes a hack forcing Darwin to the small code model.
Without far-call-stubs, the small code model requires things of the
JITMemoryManager that the DefaultJITMemoryManager can't provide.
Thanks to echristo for lots of testing!
llvm-svn: 88984
|
| |
|
|
|
|
|
|
| |
/ 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
|
| |
|
|
|
|
| |
grief. I suspect this patch merely exposed a bug else.
llvm-svn: 88841
|
| |
|
|
| |
llvm-svn: 88831
|
| |
|
|
|
|
|
| |
zext(icmp). It may be able to optimize that away. This fixes one of the cases
in PR5438.
llvm-svn: 88830
|
| |
|
|
| |
llvm-svn: 88817
|
| |
|
|
| |
llvm-svn: 88802
|
| |
|
|
|
|
| |
allocated until runtime (such as an alloca). Patch by Hans Wennborg!
llvm-svn: 88760
|
| |
|
|
|
|
| |
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
|