summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2017-05-07 18:19:13 +0000
committerSanjay Patel <spatel@rotateright.com>2017-05-07 18:19:13 +0000
commit390f1dc6ba755c4174a245e0dd4b6edb96b05448 (patch)
tree6d87826d1d7b57aff92a84f60e3b7e6e82f53c73 /llvm/test/Transforms
parent973ff7c74c6eb1073376834ce27588caeebfb034 (diff)
downloadbcm5719-llvm-390f1dc6ba755c4174a245e0dd4b6edb96b05448.tar.gz
bcm5719-llvm-390f1dc6ba755c4174a245e0dd4b6edb96b05448.zip
[InstSimplify] add tests for PR32949 miscompile; NFC
llvm-svn: 302374
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/InstSimplify/compare.ll29
1 files changed, 27 insertions, 2 deletions
diff --git a/llvm/test/Transforms/InstSimplify/compare.ll b/llvm/test/Transforms/InstSimplify/compare.ll
index cd2fa880294..883bf31ff77 100644
--- a/llvm/test/Transforms/InstSimplify/compare.ll
+++ b/llvm/test/Transforms/InstSimplify/compare.ll
@@ -576,13 +576,38 @@ define i1 @srem3(i16 %X, i32 %Y) {
ret i1 %E
}
-define i1 @udiv2(i32 %X, i32 %Y, i32 %Z) {
+define i1 @udiv2(i32 %Z) {
; CHECK-LABEL: @udiv2(
+; CHECK-NEXT: ret i1 true
+;
%A = udiv exact i32 10, %Z
%B = udiv exact i32 20, %Z
%C = icmp ult i32 %A, %B
ret i1 %C
-; CHECK: ret i1 true
+}
+
+; Exact sdiv and equality preds can simplify.
+
+define i1 @sdiv_exact_equality(i32 %Z) {
+; CHECK-LABEL: @sdiv_exact_equality(
+; CHECK-NEXT: ret i1 false
+;
+ %A = sdiv exact i32 10, %Z
+ %B = sdiv exact i32 20, %Z
+ %C = icmp eq i32 %A, %B
+ ret i1 %C
+}
+
+; FIXME: But not other preds: PR32949 - https://bugs.llvm.org/show_bug.cgi?id=32949
+
+define i1 @sdiv_exact_not_equality(i32 %Z) {
+; CHECK-LABEL: @sdiv_exact_not_equality(
+; CHECK-NEXT: ret i1 true
+;
+ %A = sdiv exact i32 10, %Z
+ %B = sdiv exact i32 20, %Z
+ %C = icmp ult i32 %A, %B
+ ret i1 %C
}
define i1 @udiv3(i32 %X, i32 %Y) {
OpenPOWER on IntegriCloud