[llvm] a342350 - [InstSimplify] Add vector tests for simplifyWithOpReplaced (NFC)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 21 03:20:54 PDT 2022


Author: Nikita Popov
Date: 2022-09-21T12:20:38+02:00
New Revision: a342350b530671529bcecb11266063afea5e5972

URL: https://github.com/llvm/llvm-project/commit/a342350b530671529bcecb11266063afea5e5972
DIFF: https://github.com/llvm/llvm-project/commit/a342350b530671529bcecb11266063afea5e5972.diff

LOG: [InstSimplify] Add vector tests for simplifyWithOpReplaced (NFC)

Added: 
    

Modified: 
    llvm/test/Transforms/InstCombine/select-safe-bool-transforms.ll
    llvm/test/Transforms/InstCombine/select.ll
    llvm/test/Transforms/InstSimplify/select.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/InstCombine/select-safe-bool-transforms.ll b/llvm/test/Transforms/InstCombine/select-safe-bool-transforms.ll
index 3b7080d55f737..e723ad9505f3c 100644
--- a/llvm/test/Transforms/InstCombine/select-safe-bool-transforms.ll
+++ b/llvm/test/Transforms/InstCombine/select-safe-bool-transforms.ll
@@ -298,6 +298,25 @@ define i1 @land_lor_right2(i1 %A, i1 %B) {
   ret i1 %res
 }
 
+define <2 x i1> @land_lor_right1_vec(<2 x i1> %A, <2 x i1> %B) {
+; CHECK-LABEL: @land_lor_right1_vec(
+; CHECK-NEXT:    ret <2 x i1> [[A:%.*]]
+;
+  %c = select <2 x i1> %A, <2 x i1> %B, <2 x i1> zeroinitializer
+  %res = select <2 x i1> %A, <2 x i1> <i1 true, i1 true>, <2 x i1> %c
+  ret <2 x i1> %res
+}
+define <2 x i1> @land_lor_right2_vec(<2 x i1> %A, <2 x i1> %B) {
+; CHECK-LABEL: @land_lor_right2_vec(
+; CHECK-NEXT:    [[C:%.*]] = select <2 x i1> [[B:%.*]], <2 x i1> [[A:%.*]], <2 x i1> zeroinitializer
+; CHECK-NEXT:    [[RES:%.*]] = select <2 x i1> [[A]], <2 x i1> <i1 true, i1 true>, <2 x i1> [[C]]
+; CHECK-NEXT:    ret <2 x i1> [[RES]]
+;
+  %c = select <2 x i1> %B, <2 x i1> %A, <2 x i1> zeroinitializer
+  %res = select <2 x i1> %A, <2 x i1> <i1 true, i1 true>, <2 x i1> %c
+  ret <2 x i1> %res
+}
+
 ; A bor (A land B)
 define i1 @land_bor_right1(i1 %A, i1 %B) {
 ; CHECK-LABEL: @land_bor_right1(

diff  --git a/llvm/test/Transforms/InstCombine/select.ll b/llvm/test/Transforms/InstCombine/select.ll
index 8620fd0bc7cec..59a777df82447 100644
--- a/llvm/test/Transforms/InstCombine/select.ll
+++ b/llvm/test/Transforms/InstCombine/select.ll
@@ -1458,6 +1458,19 @@ define i32 @PR27817_nsw(i32 %x) {
   ret i32 %sel
 }
 
+define <2 x i32> @PR27817_nsw_vec(<2 x i32> %x) {
+; CHECK-LABEL: @PR27817_nsw_vec(
+; CHECK-NEXT:    [[CMP:%.*]] = icmp eq <2 x i32> [[X:%.*]], <i32 -2147483648, i32 -2147483648>
+; CHECK-NEXT:    [[SUB:%.*]] = sub nsw <2 x i32> zeroinitializer, [[X]]
+; CHECK-NEXT:    [[SEL:%.*]] = select <2 x i1> [[CMP]], <2 x i32> <i32 -2147483648, i32 -2147483648>, <2 x i32> [[SUB]]
+; CHECK-NEXT:    ret <2 x i32> [[SEL]]
+;
+  %cmp = icmp eq <2 x i32> %x, <i32 -2147483648, i32 -2147483648>
+  %sub = sub nsw <2 x i32> zeroinitializer, %x
+  %sel = select <2 x i1> %cmp, <2 x i32> <i32 -2147483648, i32 -2147483648>, <2 x i32> %sub
+  ret <2 x i32> %sel
+}
+
 define i32 @select_icmp_slt0_xor(i32 %x) {
 ; CHECK-LABEL: @select_icmp_slt0_xor(
 ; CHECK-NEXT:    [[TMP1:%.*]] = or i32 [[X:%.*]], -2147483648
@@ -2769,6 +2782,45 @@ define i8 @select_replacement_add_eq(i8 %x, i8 %y) {
   ret i8 %sel
 }
 
+define <2 x i8> @select_replacement_add_eq_vec(<2 x i8> %x, <2 x i8> %y) {
+; CHECK-LABEL: @select_replacement_add_eq_vec(
+; CHECK-NEXT:    [[CMP:%.*]] = icmp eq <2 x i8> [[X:%.*]], <i8 1, i8 1>
+; CHECK-NEXT:    [[ADD:%.*]] = add <2 x i8> [[X]], <i8 1, i8 1>
+; CHECK-NEXT:    [[SEL:%.*]] = select <2 x i1> [[CMP]], <2 x i8> [[ADD]], <2 x i8> [[Y:%.*]]
+; CHECK-NEXT:    ret <2 x i8> [[SEL]]
+;
+  %cmp = icmp eq <2 x i8> %x, <i8 1, i8 1>
+  %add = add <2 x i8> %x, <i8 1, i8 1>
+  %sel = select <2 x i1> %cmp, <2 x i8> %add, <2 x i8> %y
+  ret <2 x i8> %sel
+}
+
+define <2 x i8> @select_replacement_add_eq_vec_nonuniform(<2 x i8> %x, <2 x i8> %y) {
+; CHECK-LABEL: @select_replacement_add_eq_vec_nonuniform(
+; CHECK-NEXT:    [[CMP:%.*]] = icmp eq <2 x i8> [[X:%.*]], <i8 1, i8 2>
+; CHECK-NEXT:    [[ADD:%.*]] = add <2 x i8> [[X]], <i8 3, i8 4>
+; CHECK-NEXT:    [[SEL:%.*]] = select <2 x i1> [[CMP]], <2 x i8> [[ADD]], <2 x i8> [[Y:%.*]]
+; CHECK-NEXT:    ret <2 x i8> [[SEL]]
+;
+  %cmp = icmp eq <2 x i8> %x, <i8 1, i8 2>
+  %add = add <2 x i8> %x, <i8 3, i8 4>
+  %sel = select <2 x i1> %cmp, <2 x i8> %add, <2 x i8> %y
+  ret <2 x i8> %sel
+}
+
+define <2 x i8> @select_replacement_add_eq_vec_poison(<2 x i8> %x, <2 x i8> %y) {
+; CHECK-LABEL: @select_replacement_add_eq_vec_poison(
+; CHECK-NEXT:    [[CMP:%.*]] = icmp eq <2 x i8> [[X:%.*]], <i8 1, i8 poison>
+; CHECK-NEXT:    [[ADD:%.*]] = add <2 x i8> [[X]], <i8 1, i8 1>
+; CHECK-NEXT:    [[SEL:%.*]] = select <2 x i1> [[CMP]], <2 x i8> [[ADD]], <2 x i8> [[Y:%.*]]
+; CHECK-NEXT:    ret <2 x i8> [[SEL]]
+;
+  %cmp = icmp eq <2 x i8> %x, <i8 1, i8 poison>
+  %add = add <2 x i8> %x, <i8 1, i8 1>
+  %sel = select <2 x i1> %cmp, <2 x i8> %add, <2 x i8> %y
+  ret <2 x i8> %sel
+}
+
 define i8 @select_replacement_add_ne(i8 %x, i8 %y) {
 ; CHECK-LABEL: @select_replacement_add_ne(
 ; CHECK-NEXT:    [[CMP:%.*]] = icmp ne i8 [[X:%.*]], 1

diff  --git a/llvm/test/Transforms/InstSimplify/select.ll b/llvm/test/Transforms/InstSimplify/select.ll
index 0472462eaff6e..96e065f85b006 100644
--- a/llvm/test/Transforms/InstSimplify/select.ll
+++ b/llvm/test/Transforms/InstSimplify/select.ll
@@ -986,6 +986,32 @@ define i32 @select_neutral_add_lhs(i32 %x, i32 %y) {
   ret i32 %sel
 }
 
+define <2 x i32> @select_neutral_add_rhs_vec(<2 x i32> %x, <2 x i32> %y) {
+; CHECK-LABEL: @select_neutral_add_rhs_vec(
+; CHECK-NEXT:    [[CMP:%.*]] = icmp ne <2 x i32> [[Y:%.*]], zeroinitializer
+; CHECK-NEXT:    [[ADD:%.*]] = add <2 x i32> [[X:%.*]], [[Y]]
+; CHECK-NEXT:    [[SEL:%.*]] = select <2 x i1> [[CMP]], <2 x i32> [[ADD]], <2 x i32> [[X]]
+; CHECK-NEXT:    ret <2 x i32> [[SEL]]
+;
+  %cmp = icmp ne <2 x i32> %y, zeroinitializer
+  %add = add <2 x i32> %x, %y
+  %sel = select <2 x i1> %cmp, <2 x i32> %add, <2 x i32> %x
+  ret <2 x i32> %sel
+}
+
+define <2 x i32> @select_neutral_add_lhs_vec(<2 x i32> %x, <2 x i32> %y) {
+; CHECK-LABEL: @select_neutral_add_lhs_vec(
+; CHECK-NEXT:    [[CMP:%.*]] = icmp ne <2 x i32> [[Y:%.*]], zeroinitializer
+; CHECK-NEXT:    [[ADD:%.*]] = add <2 x i32> [[Y]], [[X:%.*]]
+; CHECK-NEXT:    [[SEL:%.*]] = select <2 x i1> [[CMP]], <2 x i32> [[ADD]], <2 x i32> [[X]]
+; CHECK-NEXT:    ret <2 x i32> [[SEL]]
+;
+  %cmp = icmp ne <2 x i32> %y, zeroinitializer
+  %add = add <2 x i32> %y, %x
+  %sel = select <2 x i1> %cmp, <2 x i32> %add, <2 x i32> %x
+  ret <2 x i32> %sel
+}
+
 define i32 @select_neutral_sub_rhs(i32 %x, i32 %y) {
 ; CHECK-LABEL: @select_neutral_sub_rhs(
 ; CHECK-NEXT:    [[ADD:%.*]] = sub i32 [[X:%.*]], [[Y:%.*]]


        


More information about the llvm-commits mailing list