| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
part of PR2509.
llvm-svn: 53038
|
| |
|
|
|
|
| |
unreachable blocks.
llvm-svn: 53032
|
| |
|
|
|
|
| |
us a little more tail merging.
llvm-svn: 52986
|
| |
|
|
| |
llvm-svn: 52887
|
| |
|
|
| |
llvm-svn: 52826
|
| |
|
|
|
|
|
| |
warning when creating the archive (the warning
causes the test to fail).
llvm-svn: 52824
|
| |
|
|
| |
llvm-svn: 52811
|
| |
|
|
| |
llvm-svn: 52810
|
| |
|
|
| |
llvm-svn: 52795
|
| |
|
|
| |
llvm-svn: 52784
|
| |
|
|
|
|
| |
Patch by Hasso Tepper!
llvm-svn: 52781
|
| |
|
|
| |
llvm-svn: 52751
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
change it to sint_to_fp on targets where that is cheaper (and
visaversa of course). This allows us to compile uint_to_fp to:
_test:
movl 4(%esp), %eax
shrl $23, %eax
cvtsi2ss %eax, %xmm0
movl 8(%esp), %eax
movss %xmm0, (%eax)
ret
instead of:
.align 3
LCPI1_0: ## double
.long 0 ## double least significant word 4.5036e+15
.long 1127219200 ## double most significant word 4.5036e+15
.text
.align 4,0x90
.globl _test
_test:
subl $12, %esp
movl 16(%esp), %eax
shrl $23, %eax
movl %eax, (%esp)
movl $1127219200, 4(%esp)
movsd (%esp), %xmm0
subsd LCPI1_0, %xmm0
cvtsd2ss %xmm0, %xmm0
movl 20(%esp), %eax
movss %xmm0, (%eax)
addl $12, %esp
ret
llvm-svn: 52747
|
| |
|
|
|
|
|
|
| |
shift.
- Add a readme entry for a missing vector_shuffle optimization that results in
awful codegen.
llvm-svn: 52740
|
| |
|
|
|
|
| |
Nathan Keynes!
llvm-svn: 52721
|
| |
|
|
|
|
|
|
| |
Added abstract class MemSDNode for any Node that have an associated MemOperand
Changed atomic.lcs => atomic.cmp.swap, atomic.las => atomic.load.add, and
atomic.lss => atomic.load.sub
llvm-svn: 52706
|
| |
|
|
| |
llvm-svn: 52702
|
| |
|
|
| |
llvm-svn: 52701
|
| |
|
|
|
|
|
|
|
| |
test (doesn't work for any MMX vector types, it's
not me). Rewritten to use v2i16 which is generic
and going to stay that way; I think that preserves
the point of the test.
llvm-svn: 52692
|
| |
|
|
| |
llvm-svn: 52688
|
| |
|
|
|
|
|
|
| |
failures fixed.
Also add a testcase to reproduce the gcc bootstrap failure in very much reduced form.
llvm-svn: 52677
|
| |
|
|
|
|
| |
instead of using the longer MOV32ri instruction.
llvm-svn: 52670
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
,------.
| |
| v
| t2 = phi ... t1 ...
| |
| v
| t1 = ...
| ... = ... t1 ...
| |
`------'
where there is a use in a PHI node that's a predecessor to the defining
block. We don't want to mark all predecessors as having the value "alive" in
this case. Also, the assert was too restrictive and didn't handle this case.
llvm-svn: 52655
|
| |
|
|
|
|
|
|
| |
in the presence of out-of-loop users of in-loop values and the trip
count is not a known multiple of the unroll count, and to be a bit
simpler overall. This fixes PR2253.
llvm-svn: 52645
|
| |
|
|
| |
llvm-svn: 52619
|
| |
|
|
|
|
| |
with more than two nodes.
llvm-svn: 52617
|
| |
|
|
|
|
|
|
|
| |
structures. Its default threshold is to promote things that are
smaller than 128 bytes, which is sane. However, it is not sane
to do this for things that turn into 128 *registers*. Add a cap
on the number of registers introduced, defaulting to 128/4=32.
llvm-svn: 52611
|
| |
|
|
|
|
|
|
| |
15).
See also PR1800, which is about the signed case.
llvm-svn: 52608
|
| |
|
|
| |
llvm-svn: 52596
|
| |
|
|
| |
llvm-svn: 52595
|
| |
|
|
|
|
|
| |
don't know if a truncating store is possible here,
but added support for it anyway.
llvm-svn: 52577
|
| |
|
|
| |
llvm-svn: 52572
|
| |
|
|
| |
llvm-svn: 52570
|
| |
|
|
|
|
| |
touch.
llvm-svn: 52540
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This is a fixed version that no longer uses multimap::equal_range, which
resulted in a pointer invalidation problem.
Also, DAE::InspectedFunctions was not really necessary, so it got removed.
Lastly, this version no longer applies the extra arg hack on functions who did
not have any arguments to start with.
llvm-svn: 52532
|
| |
|
|
| |
llvm-svn: 52529
|
| |
|
|
| |
llvm-svn: 52528
|
| |
|
|
|
|
| |
types differ. Patch by Nathan Keynes!
llvm-svn: 52527
|
| |
|
|
| |
llvm-svn: 52526
|
| |
|
|
|
|
| |
load.
llvm-svn: 52525
|
| |
|
|
| |
llvm-svn: 52508
|
| |
|
|
| |
llvm-svn: 52491
|
| |
|
|
|
|
|
|
|
|
| |
shuffle could be skipped. The check is invalid because the loop index i
doesn't correspond to the element actually inserted. The correct check is
already done a few lines earlier, for whether the element is already in
the right spot, so this shouldn't have any effect on the codegen for
code that was already correct.
llvm-svn: 52486
|
| |
|
|
| |
llvm-svn: 52483
|
| |
|
|
|
|
| |
re-materialization.
llvm-svn: 52482
|
| |
|
|
| |
llvm-svn: 52481
|
| |
|
|
|
|
| |
causing make check to crash for some people.
llvm-svn: 52473
|
| |
|
|
|
|
|
|
| |
increase code size, namely when the instantiated expression
would only need to be created in one predecessor.
llvm-svn: 52471
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
dependencies between return values and/or arguments. Also make the handling of
arguments and return values the same.
The pass now looks properly inside returned structs, but only at the first
level (ie, not inside nested structs).
Also add a testcase for testing various variations of (multiple) dead rerturn
values.
llvm-svn: 52459
|
| |
|
|
|
|
|
|
| |
time. Sorry for the trouble!
This time, also add a testcase, which I should have done in the first place...
llvm-svn: 52455
|