Another entry

llvm-svn: 27786
This commit is contained in:
Evan Cheng 2006-04-18 01:22:57 +00:00
parent 3db2056315
commit 0ef233509b
1 changed files with 35 additions and 0 deletions

View File

@ -961,3 +961,38 @@ selector should select pshufd or The register allocator can made the two-address
to three-address transformation.
It also exposes some other problems. See MOV32ri -3 and the spills.
//===---------------------------------------------------------------------===//
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25500
LLVM is producing bad code.
LBB_main_4: # cond_true44
addps %xmm1, %xmm2
subps %xmm3, %xmm2
movaps (%ecx), %xmm4
movaps %xmm2, %xmm1
addps %xmm4, %xmm1
addl $16, %ecx
incl %edx
cmpl $262144, %edx
movaps %xmm3, %xmm2
movaps %xmm4, %xmm3
jne LBB_main_4 # cond_true44
There are two problems. 1) No need to two loop induction variables. We can
compare against 262144 * 16. 2) Poor register allocation decisions. We should
be able eliminate one of the movaps:
addps %xmm1, %xmm2
subps %xmm3, %xmm2
movaps (%ecx), %xmm4
movaps %xmm2, %xmm2 <=== Eliminate!
addps %xmm4, %xmm2
addl $16, %ecx
incl %edx
cmpl $262144, %edx
movaps %xmm3, %xmm1
movaps %xmm4, %xmm3
jne LBB_main_4 # cond_true44