summaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/divide-by-constant.ll
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2012-07-11 18:31:59 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2012-07-11 18:31:59 +0000
commit597f2950d8dc263f2264501200e390a92ebfb356 (patch)
tree54625d38ecc000a872f69a28236026883caa92df /test/CodeGen/X86/divide-by-constant.ll
parent79137851bf22d2181b56d060abde4398f36fc59c (diff)
downloadllvm-597f2950d8dc263f2264501200e390a92ebfb356.tar.gz
llvm-597f2950d8dc263f2264501200e390a92ebfb356.tar.bz2
llvm-597f2950d8dc263f2264501200e390a92ebfb356.tar.xz
PR13326: Fix a subtle edge case in the udiv -> magic multiply generator.
This caused 6 of 65k possible 8 bit udivs to be wrong. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160058 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86/divide-by-constant.ll')
-rw-r--r--test/CodeGen/X86/divide-by-constant.ll21
1 files changed, 21 insertions, 0 deletions
diff --git a/test/CodeGen/X86/divide-by-constant.ll b/test/CodeGen/X86/divide-by-constant.ll
index e577ecb85a..8e7c13d8ef 100644
--- a/test/CodeGen/X86/divide-by-constant.ll
+++ b/test/CodeGen/X86/divide-by-constant.ll
@@ -71,3 +71,24 @@ define i32 @test7(i32 %x) nounwind {
; CHECK-NOT: shrl
; CHECK: ret
}
+
+; PR13326
+define i8 @test8(i8 %x) nounwind {
+ %div = udiv i8 %x, 78
+ ret i8 %div
+; CHECK: test8:
+; CHECK: shrb %
+; CHECK: imull $211
+; CHECK: shrl $13
+; CHECK: ret
+}
+
+define i8 @test9(i8 %x) nounwind {
+ %div = udiv i8 %x, 116
+ ret i8 %div
+; CHECK: test9:
+; CHECK: shrb $2
+; CHECK: imull $71
+; CHECK: shrl $11
+; CHECK: ret
+}