summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2019-04-09 14:27:07 +0000
committerSanjay Patel <spatel@rotateright.com>2019-04-09 14:27:07 +0000
commit7563b65ad4088a7057ee709384fc3355d839e051 (patch)
tree856e8e8ec3d77ab03abef9601a3c425ab1c49c0e
parentd469954d61ecbfc336ca76cd60c70dc09f386464 (diff)
downloadbcm5719-llvm-7563b65ad4088a7057ee709384fc3355d839e051.tar.gz
bcm5719-llvm-7563b65ad4088a7057ee709384fc3355d839e051.zip
[InstCombine] add tests for sdiv-by-int-min; NFC
llvm-svn: 358008
-rw-r--r--llvm/test/Transforms/InstCombine/div.ll30
1 files changed, 30 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/div.ll b/llvm/test/Transforms/InstCombine/div.ll
index 215d16c1213..78ecb628ae3 100644
--- a/llvm/test/Transforms/InstCombine/div.ll
+++ b/llvm/test/Transforms/InstCombine/div.ll
@@ -929,3 +929,33 @@ define i8 @test_exact_div_minSigned(i8 %x) {
%neg = sub nsw i8 0, %div
ret i8 %neg
}
+
+; X / INT_MIN --> X == INT_MIN
+
+define i8 @sdiv_by_int_min(i8 %x) {
+; CHECK-LABEL: @sdiv_by_int_min(
+; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i8 [[X:%.*]], -128
+; CHECK-NEXT: [[D:%.*]] = zext i1 [[TMP1]] to i8
+; CHECK-NEXT: ret i8 [[D]]
+;
+ %d = sdiv i8 %x, -128
+ ret i8 %d
+}
+
+define <2 x i8> @sdiv_by_int_min_vec_splat(<2 x i8> %x) {
+; CHECK-LABEL: @sdiv_by_int_min_vec_splat(
+; CHECK-NEXT: [[TMP1:%.*]] = icmp eq <2 x i8> [[X:%.*]], <i8 -128, i8 -128>
+; CHECK-NEXT: [[D:%.*]] = zext <2 x i1> [[TMP1]] to <2 x i8>
+; CHECK-NEXT: ret <2 x i8> [[D]]
+;
+ %d = sdiv <2 x i8> %x, <i8 -128, i8 -128>
+ ret <2 x i8> %d
+}
+
+define <2 x i8> @sdiv_by_int_min_vec_splat_undef(<2 x i8> %x) {
+; CHECK-LABEL: @sdiv_by_int_min_vec_splat_undef(
+; CHECK-NEXT: ret <2 x i8> undef
+;
+ %d = sdiv <2 x i8> %x, <i8 -128, i8 undef>
+ ret <2 x i8> %d
+}
OpenPOWER on IntegriCloud