add a note
authorChris Lattner <sabre@nondot.org>
Tue, 18 Jan 2011 07:47:48 +0000 (07:47 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 18 Jan 2011 07:47:48 +0000 (07:47 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123752 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/README.txt

index 6c8187cdbf37a32edf51b212d5104baab5fb7c4d..67aec852fa049c8876f0df369cb39f9e6e975698 100644 (file)
@@ -2295,3 +2295,23 @@ avoids partial register stalls in some important cases.
 
 //===---------------------------------------------------------------------===//
 
+We miss an optzn when lowering divide by some constants.  For example:
+  int test(int x) { return x/10; }
+
+We produce:
+
+_test:                                  ## @test
+## BB#0:                                ## %entry
+       movslq  %edi, %rax
+       imulq   $1717986919, %rax, %rax ## imm = 0x66666667
+       movq    %rax, %rcx
+       shrq    $63, %rcx
+**     shrq    $32, %rax
+**      sarl   $2, %eax
+       addl    %ecx, %eax
+       ret
+
+The two starred instructions could be replaced with a "sarl $34, %rax".  This
+occurs in 186.crafty very frequently.
+
+//===---------------------------------------------------------------------===//