[llvm] 7652710 - [InstSimplify] Add additional simplifyWithOpReplaced() vector tests (NFC)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 21 07:59:42 PDT 2022


Author: Nikita Popov
Date: 2022-09-21T16:59:28+02:00
New Revision: 7652710f9f0f018fcb385cf2cd01c83027edcbef

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

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

Added: 
    

Modified: 
    llvm/test/Transforms/InstSimplify/select.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/InstSimplify/select.ll b/llvm/test/Transforms/InstSimplify/select.ll
index 96e065f85b00..756a019a9a0c 100644
--- a/llvm/test/Transforms/InstSimplify/select.ll
+++ b/llvm/test/Transforms/InstSimplify/select.ll
@@ -1046,7 +1046,36 @@ define i32 @select_ctpop_zero(i32 %x) {
   %sel = select i1 %t0, i32 0, i32 %t1
   ret i32 %sel
 }
+
+define <2 x i32> @select_ctpop_zero_vec(<2 x i32> %x) {
+; CHECK-LABEL: @select_ctpop_zero_vec(
+; CHECK-NEXT:    [[T0:%.*]] = icmp eq <2 x i32> [[X:%.*]], zeroinitializer
+; CHECK-NEXT:    [[T1:%.*]] = call <2 x i32> @llvm.ctpop.v2i32(<2 x i32> [[X]])
+; CHECK-NEXT:    [[SEL:%.*]] = select <2 x i1> [[T0]], <2 x i32> zeroinitializer, <2 x i32> [[T1]]
+; CHECK-NEXT:    ret <2 x i32> [[SEL]]
+;
+  %t0 = icmp eq <2 x i32> %x, zeroinitializer
+  %t1 = call <2 x i32> @llvm.ctpop.v2i32(<2 x i32> %x)
+  %sel = select <2 x i1> %t0, <2 x i32> zeroinitializer, <2 x i32> %t1
+  ret <2 x i32> %sel
+}
+
+define <2 x i32> @select_vector_reverse(<2 x i32> %x) {
+; CHECK-LABEL: @select_vector_reverse(
+; CHECK-NEXT:    [[CMP:%.*]] = icmp eq <2 x i32> [[X:%.*]], zeroinitializer
+; CHECK-NEXT:    [[REV:%.*]] = call <2 x i32> @llvm.experimental.vector.reverse.v2i32(<2 x i32> [[X]])
+; CHECK-NEXT:    [[SEL:%.*]] = select <2 x i1> [[CMP]], <2 x i32> zeroinitializer, <2 x i32> [[REV]]
+; CHECK-NEXT:    ret <2 x i32> [[SEL]]
+;
+  %cmp = icmp eq <2 x i32> %x, zeroinitializer
+  %rev = call <2 x i32> @llvm.experimental.vector.reverse.v2i32(<2 x i32> %x)
+  %sel = select <2 x i1> %cmp, <2 x i32> zeroinitializer, <2 x i32> %rev
+  ret <2 x i32> %sel
+}
+
 declare i32 @llvm.ctpop.i32(i32)
+declare <2 x i32> @llvm.ctpop.v2i32(<2 x i32>)
+declare <2 x i32> @llvm.experimental.vector.reverse.v2i32(<2 x i32>)
 
 define <2 x i32> @vec_select_no_equivalence(<2 x i32> %x, <2 x i32> %y) {
 ; CHECK-LABEL: @vec_select_no_equivalence(


        


More information about the llvm-commits mailing list