| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 47230
|
| |
|
|
| |
llvm-svn: 47229
|
| |
|
|
| |
llvm-svn: 47228
|
| |
|
|
| |
llvm-svn: 47227
|
| |
|
|
|
|
| |
the tests that used it.
llvm-svn: 47225
|
| |
|
|
|
|
| |
is not passed as an argument to a trampoline intrinsic.
llvm-svn: 47220
|
| |
|
|
| |
llvm-svn: 47204
|
| |
|
|
|
|
| |
came around.
llvm-svn: 47194
|
| |
|
|
| |
llvm-svn: 47192
|
| |
|
|
| |
llvm-svn: 47189
|
| |
|
|
| |
llvm-svn: 47182
|
| |
|
|
|
|
| |
using sret.
llvm-svn: 47173
|
| |
|
|
| |
llvm-svn: 47150
|
| |
|
|
|
|
|
|
| |
B loop header.
Fixes PR 2030.
llvm-svn: 47141
|
| |
|
|
| |
llvm-svn: 47129
|
| |
|
|
| |
llvm-svn: 47128
|
| |
|
|
| |
llvm-svn: 47119
|
| |
|
|
| |
llvm-svn: 47113
|
| |
|
|
| |
llvm-svn: 47110
|
| |
|
|
| |
llvm-svn: 47106
|
| |
|
|
| |
llvm-svn: 47102
|
| |
|
|
| |
llvm-svn: 47093
|
| |
|
|
| |
llvm-svn: 47089
|
| |
|
|
| |
llvm-svn: 47082
|
| |
|
|
| |
llvm-svn: 47078
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
CTTZ and CTPOP. The expansion code differs from
that in LegalizeDAG in that it chooses to take the
CTLZ/CTTZ count from the Hi/Lo part depending on
whether the Hi/Lo value is zero, not on whether
CTLZ/CTTZ of Hi/Lo returned 32 (or whatever the
width of the type is) for it. I made this change
because the optimizers may well know that Hi/Lo
is zero and exploit it. The promotion code for
CTTZ also differs from that in LegalizeDAG: it
uses an "or" to get the right result when the
original value is zero, rather than using a compare
and select. This also means the value doesn't
need to be zero extended.
llvm-svn: 47075
|
| |
|
|
| |
llvm-svn: 47055
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
node as soon as we create it in SDISel. Previously we would lower it in
legalize. The problem with this is that it only exposes the argument
loads implied by FORMAL_ARGUMENTs after legalize, so that only dag combine 2
can hack on them. This causes us to miss some optimizations because
datatype expansion also happens here.
Exposing the loads early allows us to do optimizations on them. For example
we now compile arg-cast.ll to:
_foo:
movl $2147483647, %eax
andl 8(%esp), %eax
ret
where we previously produced:
_foo:
subl $12, %esp
movsd 16(%esp), %xmm0
movsd %xmm0, (%esp)
movl $2147483647, %eax
andl 4(%esp), %eax
addl $12, %esp
ret
It might also make sense to do this for ISD::CALL nodes, which have implicit
stores on many targets.
llvm-svn: 47054
|
| |
|
|
|
|
| |
transform, so please review.)
llvm-svn: 47050
|
| |
|
|
| |
llvm-svn: 47049
|
| |
|
|
| |
llvm-svn: 47047
|
| |
|
|
|
|
| |
bugs fixed. This now passes PPC bootstrap.
llvm-svn: 47026
|
| |
|
|
| |
llvm-svn: 47018
|
| |
|
|
| |
llvm-svn: 47017
|
| |
|
|
|
|
| |
no need to redirect stderr into stdout.
llvm-svn: 47009
|
| |
|
|
| |
llvm-svn: 47008
|
| |
|
|
|
|
|
|
|
|
| |
variable (with step 1) and m is its final value. Then, the correct trip
count is SMAX(m,n)-n. Previously, we used SMAX(0,m-n), but m-n may
overflow and can't in general be interpreted as signed.
Patch by Nick Lewycky.
llvm-svn: 47007
|
| |
|
|
| |
llvm-svn: 46999
|
| |
|
|
| |
llvm-svn: 46998
|
| |
|
|
|
|
|
|
| |
to the RHS. This simple change allows to compute loop iteration count
for loops with condition similar to the one in the testcase (which seems
to be quite common).
llvm-svn: 46959
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
arbitrary iteration.
The patch:
1) changes SCEVSDivExpr into SCEVUDivExpr,
2) replaces PartialFact() function with BinomialCoefficient(); the
computations (essentially, the division) in BinomialCoefficient() are
performed with the apprioprate bitwidth necessary to avoid overflow;
unsigned division is used instead of the signed one.
Computations in BinomialCoefficient() require support from the code
generator for APInts. Currently, we use a hack rounding up the
neccessary bitwidth to the nearest power of 2. The hack is easy to turn
off in future.
One remaining issue: we assume the divisor of the binomial coefficient
formula can be computed accurately using 16 bits. It means we can handle
AddRecs of length up to 9. In future, we should use APInts to evaluate
the divisor.
Thanks to Nicholas for cooperation!
llvm-svn: 46955
|
| |
|
|
|
|
| |
rather than trying to undo the kill marker afterwards.
llvm-svn: 46953
|
| |
|
|
| |
llvm-svn: 46930
|
| |
|
|
|
|
|
| |
whether SSE is present, on Darwin anyway. Make it
explicit.
llvm-svn: 46909
|
| |
|
|
| |
llvm-svn: 46898
|
| |
|
|
|
|
| |
the load address first to make sure it's 16 byte aligned.
llvm-svn: 46893
|
| |
|
|
| |
llvm-svn: 46866
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
mode.
Before:
_main:
subq $8, %rsp
leaq _X(%rip), %rax
movsd 8(%rax), %xmm1
movss _X(%rip), %xmm0
call _t
xorl %ecx, %ecx
movl %ecx, %eax
addq $8, %rsp
ret
Now:
_main:
subq $8, %rsp
movsd _X+8(%rip), %xmm1
movss _X(%rip), %xmm0
call _t
xorl %ecx, %ecx
movl %ecx, %eax
addq $8, %rsp
ret
Notice there is another idiotic codegen issue that needs to be fixed asap:
xorl %ecx, %ecx
movl %ecx, %eax
llvm-svn: 46850
|
| |
|
|
| |
llvm-svn: 46825
|
| |
|
|
|
|
|
|
| |
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20080128/057882.html
This is causing a miscompilation on PPC G5 and just now seeing it on iMac x86-64.
llvm-svn: 46822
|