| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 22560
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1 byte loads and other operations. This is bad for store-forwarding on
common CPUs. We now do this:
fnstcw WORD PTR [%ESP]
mov %AX, WORD PTR [%ESP]
instead of:
fnstcw WORD PTR [%ESP]
mov %AL, BYTE PTR [%ESP + 1]
llvm-svn: 22559
|
| |
|
|
|
|
|
|
| |
target data to decide which loop induction variables to strength reduce
and how to do so. This work is mostly by Chris Lattner, with tweaks by
me to get it working on some of MultiSource.
llvm-svn: 22558
|
| |
|
|
|
|
| |
other passes may use it.
llvm-svn: 22557
|
| |
|
|
|
|
|
| |
FP-to-int-in-memory: this exposes the load from the stored slot to the
selection dag, allowing it to be folded into other operaions.
llvm-svn: 22556
|
| |
|
|
|
|
| |
both the src and dest values are legal
llvm-svn: 22555
|
| |
|
|
| |
llvm-svn: 22554
|
| |
|
|
|
|
| |
much with it on)
llvm-svn: 22553
|
| |
|
|
|
|
|
| |
that the X86 does not support to the legalizer. This allows it to be better
optimized, etc, and will help with SSE support.
llvm-svn: 22551
|
| |
|
|
| |
llvm-svn: 22550
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
long %test4(double %X) {
%tmp.1 = cast double %X to long ; <long> [#uses=1]
ret long %tmp.1
}
to this:
_test4:
sub %ESP, 12
fld QWORD PTR [%ESP + 16]
fistp QWORD PTR [%ESP]
mov %EDX, DWORD PTR [%ESP + 4]
mov %EAX, DWORD PTR [%ESP]
add %ESP, 12
ret
instead of this:
_test4:
sub %ESP, 28
fld QWORD PTR [%ESP + 32]
fstp QWORD PTR [%ESP]
call ___fixdfdi
add %ESP, 28
ret
llvm-svn: 22549
|
| |
|
|
| |
llvm-svn: 22548
|
| |
|
|
|
|
| |
a larger integer destination.
llvm-svn: 22547
|
| |
|
|
|
|
| |
subcases inside, break things out earlier.
llvm-svn: 22546
|
| |
|
|
| |
llvm-svn: 22545
|
| |
|
|
| |
llvm-svn: 22543
|
| |
|
|
| |
llvm-svn: 22542
|
| |
|
|
|
|
|
|
|
| |
appended to a path string that didn't end in a slash, yielding invalid
path names.
Path contribute by Nicholas Riley.
llvm-svn: 22539
|
| |
|
|
| |
llvm-svn: 22538
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
have to be allocated
near the GOT, which new doesn't do. So break out the allocate into a new function.
Also move GOT index handling into JITResolver. This lets it update the mapping when a Lazy
function is JITed. It doesn't managed the table, just the mapping. Note that this is
still non-ideal, as any function that takes a function address should also take a GOT
index, but that is a lot of changes. The relocation resolve process updates any GOT entry
it sees is out of date.
llvm-svn: 22537
|
| |
|
|
|
|
| |
have to write arguments to the stack
llvm-svn: 22536
|
| |
|
|
| |
llvm-svn: 22535
|
| |
|
|
|
|
|
| |
This catches mistakes in the passes rather than just verifying the bytecode
input to llc.
llvm-svn: 22534
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For the following code:
double %ext(int %A.0__, long %A.1__) {
%A_addr = alloca %typedef.DComplex ; <%typedef.DComplex*> [#uses=2]
%tmp.1 = cast %typedef.DComplex* %A_addr to int* ; <int*> [#uses=1]
store int %A.0__, int* %tmp.1
%tmp.2 = getelementptr %typedef.DComplex* %A_addr, int 0, uint 1 ; <double*> [#uses=2]
%tmp.3 = cast double* %tmp.2 to long* ; <long*> [#uses=1]
store long %A.1__, long* %tmp.3
%tmp.5 = load double* %tmp.2 ; <double> [#uses=1]
ret double %tmp.5
}
We now generate:
_ext:
.LBB_ext_0: ;
stw r3, -12(r1)
stw r4, -8(r1)
stw r5, -4(r1)
lfd f1, -8(r1)
blr
Instead of:
_ext:
.LBB_ext_0: ;
stw r3, -12(r1)
addi r2, r1, -12
stw r4, 4(r2)
stw r5, 8(r2)
lfd f1, 4(r2)
blr
This also fires hundreds of times on MultiSource.
llvm-svn: 22533
|
| |
|
|
|
|
|
| |
to llc when debugging. Also allow other passes to be run from llc.
Patch contributed by Michael McCracken.
llvm-svn: 22532
|
| |
|
|
| |
llvm-svn: 22531
|
| |
|
|
| |
llvm-svn: 22530
|
| |
|
|
| |
llvm-svn: 22529
|
| |
|
|
| |
llvm-svn: 22528
|
| |
|
|
|
|
|
| |
Previously the script assumed the version number was the last field, now
it assumes it is the first sequence of digits.
llvm-svn: 22527
|
| |
|
|
| |
llvm-svn: 22523
|
| |
|
|
|
|
| |
unnecessary SP manipulation in leaf routines that don't need it.
llvm-svn: 22522
|
| |
|
|
| |
llvm-svn: 22521
|
| |
|
|
| |
llvm-svn: 22520
|
| |
|
|
| |
llvm-svn: 22519
|
| |
|
|
| |
llvm-svn: 22518
|
| |
|
|
| |
llvm-svn: 22517
|
| |
|
|
| |
llvm-svn: 22516
|
| |
|
|
|
|
| |
is actually dead because of this!
llvm-svn: 22515
|
| |
|
|
| |
llvm-svn: 22513
|
| |
|
|
|
|
| |
the need to build PIC.
llvm-svn: 22512
|
| |
|
|
|
|
| |
with the more crufty (but more widely available) "eval" command.
llvm-svn: 22509
|
| |
|
|
| |
llvm-svn: 22508
|
| |
|
|
| |
llvm-svn: 22507
|
| |
|
|
| |
llvm-svn: 22506
|
| |
|
|
|
|
| |
memory (should do the same for arbitrary zero extended small negative constants)
llvm-svn: 22505
|
| |
|
|
| |
llvm-svn: 22504
|
| |
|
|
| |
llvm-svn: 22503
|
| |
|
|
| |
llvm-svn: 22502
|
| |
|
|
| |
llvm-svn: 22501
|