| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
|  | 
llvm-svn: 22605
 | 
| | 
| 
| 
|  | 
llvm-svn: 22596
 | 
| | 
| 
| 
|  | 
llvm-svn: 22595
 | 
| | 
| 
| 
| 
| 
|  | 
Patch contributed by Jim Laskey!
llvm-svn: 22594
 | 
| | 
| 
| 
| 
| 
|  | 
Patch contributed by Jim Laskey!
llvm-svn: 22592
 | 
| | 
| 
| 
|  | 
llvm-svn: 22588
 | 
| | 
| 
| 
|  | 
llvm-svn: 22587
 | 
| | 
| 
| 
|  | 
llvm-svn: 22586
 | 
| | 
| 
| 
|  | 
llvm-svn: 22585
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
consideration the case where a reference in an unreachable block could
occur.  This fixes Transforms/SimplifyCFG/2005-08-01-PHIUpdateFail.ll,
something I ran into while bugpoint'ing another pass.
llvm-svn: 22584
 | 
| | 
| 
| 
|  | 
llvm-svn: 22582
 | 
| | 
| 
| 
|  | 
llvm-svn: 22581
 | 
| | 
| 
| 
|  | 
llvm-svn: 22580
 | 
| | 
| 
| 
| 
| 
|  | 
build will not fail
llvm-svn: 22578
 | 
| | 
| 
| 
| 
| 
| 
|  | 
Make LSR ignore GEP's that have loop variant base values, as we currently
cannot codegen them
llvm-svn: 22576
 | 
| | 
| 
| 
|  | 
llvm-svn: 22575
 | 
| | 
| 
| 
| 
| 
| 
|  | 
instead of E for exponentials (e.g. 1.234D-43).  Add support for this
notation.
llvm-svn: 22574
 | 
| | 
| 
| 
| 
| 
|  | 
was written
llvm-svn: 22571
 | 
| | 
| 
| 
|  | 
llvm-svn: 22570
 | 
| | 
| 
| 
|  | 
llvm-svn: 22569
 | 
| | 
| 
| 
|  | 
llvm-svn: 22568
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
SimplifyLibCalls probably has to be audited to make sure it does not make
this mistake elsewhere.  Also, if this code knows that the type will be
unsigned, obviously one arm of this is dead.
Reid, can you take a look into this further?
llvm-svn: 22566
 | 
| | 
| 
| 
|  | 
llvm-svn: 22565
 | 
| | 
| 
| 
|  | 
llvm-svn: 22564
 | 
| | 
| 
| 
|  | 
llvm-svn: 22563
 | 
| | 
| 
| 
|  | 
llvm-svn: 22561
 | 
| | 
| 
| 
|  | 
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: 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
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
|  | 
llvm-svn: 22530
 | 
| | 
| 
| 
|  | 
llvm-svn: 22529
 |