Another entry
authorEvan Cheng <evan.cheng@apple.com>
Tue, 18 Apr 2006 01:22:57 +0000 (01:22 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Tue, 18 Apr 2006 01:22:57 +0000 (01:22 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27786 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/README.txt

index 33be39ee91b0498d2739c9588741d9421aaefdde..39a4407f8be9e1a6200b72ac3cc9169362ca334c 100644 (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