From 908d8e82b5cc19d1a0a55a5fbc9dfd87359d726e Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 18 Jan 2011 07:47:48 +0000 Subject: [PATCH] add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123752 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/README.txt | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lib/Target/README.txt b/lib/Target/README.txt index 6c8187cdbf3..67aec852fa0 100644 --- a/lib/Target/README.txt +++ b/lib/Target/README.txt @@ -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. + +//===---------------------------------------------------------------------===//