diff options
| author | Sanjay Patel <spatel@rotateright.com> | 2018-02-17 15:55:40 +0000 |
|---|---|---|
| committer | Sanjay Patel <spatel@rotateright.com> | 2018-02-17 15:55:40 +0000 |
| commit | a6a1426cf1acf861609c36c4f37257eb952976d4 (patch) | |
| tree | c593196b415bf42db040fa9529bb6755c159afdf /llvm/test/Transforms | |
| parent | dbcbaee7fdff3b9530e9497d3b4547eb5f188781 (diff) | |
| download | bcm5719-llvm-a6a1426cf1acf861609c36c4f37257eb952976d4.tar.gz bcm5719-llvm-a6a1426cf1acf861609c36c4f37257eb952976d4.zip | |
[InstSimplify, InstCombine] add tests with vector undef elts; NFC
These would fold if the m_One pattern matcher accounted for undef elts.
llvm-svn: 325436
Diffstat (limited to 'llvm/test/Transforms')
| -rw-r--r-- | llvm/test/Transforms/InstCombine/select.ll | 21 | ||||
| -rw-r--r-- | llvm/test/Transforms/InstSimplify/icmp-bool-constant.ll | 28 |
2 files changed, 43 insertions, 6 deletions
diff --git a/llvm/test/Transforms/InstCombine/select.ll b/llvm/test/Transforms/InstCombine/select.ll index 4a361cdc4ea..50eb281bdd7 100644 --- a/llvm/test/Transforms/InstCombine/select.ll +++ b/llvm/test/Transforms/InstCombine/select.ll @@ -54,24 +54,33 @@ define i32 @test6(i1 %C) { ; CHECK: ret i32 %V } -define i1 @test7(i1 %C, i1 %X) { -; CHECK-LABEL: @test7( -; CHECK-NEXT: [[R:%.*]] = or i1 %C, %X +define i1 @trueval_is_true(i1 %C, i1 %X) { +; CHECK-LABEL: @trueval_is_true( +; CHECK-NEXT: [[R:%.*]] = or i1 [[C:%.*]], [[X:%.*]] ; CHECK-NEXT: ret i1 [[R]] ; %R = select i1 %C, i1 true, i1 %X ret i1 %R } -define <2 x i1> @test7vec(<2 x i1> %C, <2 x i1> %X) { -; CHECK-LABEL: @test7vec( -; CHECK-NEXT: [[R:%.*]] = or <2 x i1> %C, %X +define <2 x i1> @trueval_is_true_vec(<2 x i1> %C, <2 x i1> %X) { +; CHECK-LABEL: @trueval_is_true_vec( +; CHECK-NEXT: [[R:%.*]] = or <2 x i1> [[C:%.*]], [[X:%.*]] ; CHECK-NEXT: ret <2 x i1> [[R]] ; %R = select <2 x i1> %C, <2 x i1> <i1 true, i1 true>, <2 x i1> %X ret <2 x i1> %R } +define <2 x i1> @trueval_is_true_vec_undef_elt(<2 x i1> %C, <2 x i1> %X) { +; CHECK-LABEL: @trueval_is_true_vec_undef_elt( +; CHECK-NEXT: [[R:%.*]] = select <2 x i1> [[C:%.*]], <2 x i1> <i1 undef, i1 true>, <2 x i1> [[X:%.*]] +; CHECK-NEXT: ret <2 x i1> [[R]] +; + %R = select <2 x i1> %C, <2 x i1> <i1 undef, i1 true>, <2 x i1> %X + ret <2 x i1> %R +} + define i1 @test8(i1 %C, i1 %X) { ; CHECK-LABEL: @test8( ; CHECK-NEXT: [[R:%.*]] = and i1 %C, %X diff --git a/llvm/test/Transforms/InstSimplify/icmp-bool-constant.ll b/llvm/test/Transforms/InstSimplify/icmp-bool-constant.ll index f711fae0a85..cf5f6d3f96b 100644 --- a/llvm/test/Transforms/InstSimplify/icmp-bool-constant.ll +++ b/llvm/test/Transforms/InstSimplify/icmp-bool-constant.ll @@ -1,3 +1,4 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt < %s -instsimplify -S | FileCheck %s ; Test all integer predicates with bool types and true/false constants. @@ -11,6 +12,15 @@ define <2 x i1> @eq_t(<2 x i1> %a) { ret <2 x i1> %r } +define <2 x i1> @eq_t_undef_elt(<2 x i1> %a) { +; CHECK-LABEL: @eq_t_undef_elt( +; CHECK-NEXT: [[R:%.*]] = icmp eq <2 x i1> [[A:%.*]], <i1 undef, i1 true> +; CHECK-NEXT: ret <2 x i1> [[R]] +; + %r = icmp eq <2 x i1> %a, <i1 undef, i1 true> + ret <2 x i1> %r +} + define <2 x i1> @eq_f(<2 x i1> %a) { ; CHECK-LABEL: @eq_f( ; CHECK-NEXT: [[R:%.*]] = icmp eq <2 x i1> %a, zeroinitializer @@ -45,6 +55,15 @@ define <2 x i1> @ugt_t(<2 x i1> %a) { ret <2 x i1> %r } +define <2 x i1> @ugt_t_undef_elt(<2 x i1> %a) { +; CHECK-LABEL: @ugt_t_undef_elt( +; CHECK-NEXT: [[R:%.*]] = icmp ugt <2 x i1> [[A:%.*]], <i1 true, i1 undef> +; CHECK-NEXT: ret <2 x i1> [[R]] +; + %r = icmp ugt <2 x i1> %a, <i1 true, i1 undef> + ret <2 x i1> %r +} + define <2 x i1> @ugt_f(<2 x i1> %a) { ; CHECK-LABEL: @ugt_f( ; CHECK-NEXT: ret <2 x i1> %a @@ -144,6 +163,15 @@ define <2 x i1> @sge_t(<2 x i1> %a) { ret <2 x i1> %r } +define <2 x i1> @sge_t_undef_elt(<2 x i1> %a) { +; CHECK-LABEL: @sge_t_undef_elt( +; CHECK-NEXT: [[R:%.*]] = icmp sge <2 x i1> [[A:%.*]], <i1 true, i1 undef> +; CHECK-NEXT: ret <2 x i1> [[R]] +; + %r = icmp sge <2 x i1> %a, <i1 true, i1 undef> + ret <2 x i1> %r +} + define <2 x i1> @sge_f(<2 x i1> %a) { ; CHECK-LABEL: @sge_f( ; CHECK-NEXT: [[R:%.*]] = icmp sge <2 x i1> %a, zeroinitializer |

