diff options
| author | Sanjay Patel <spatel@rotateright.com> | 2019-04-09 14:27:07 +0000 |
|---|---|---|
| committer | Sanjay Patel <spatel@rotateright.com> | 2019-04-09 14:27:07 +0000 |
| commit | 7563b65ad4088a7057ee709384fc3355d839e051 (patch) | |
| tree | 856e8e8ec3d77ab03abef9601a3c425ab1c49c0e | |
| parent | d469954d61ecbfc336ca76cd60c70dc09f386464 (diff) | |
| download | bcm5719-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.ll | 30 |
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 +} |

