Author: Sanjay Patel Date: 2021-05-06T17:21:49-07:00 New Revision: 266c82f94da232d736f413c8d9e08d066c2d7202
URL: https://github.com/llvm/llvm-project/commit/266c82f94da232d736f413c8d9e08d066c2d7202 DIFF: https://github.com/llvm/llvm-project/commit/266c82f94da232d736f413c8d9e08d066c2d7202.diff LOG: [InstSimplify] add test for vector select with operand replacement; NFC We need a sibling fix to c590a9880d7a ( https://llvm.org/PR49832 ) to avoid miscompiling. (cherry picked from commit 78e5cf66fec52c8e6e665c3c9e64d38498d94a5d) 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 6460b42d63c1e..68e7411c8310f 100644 --- a/llvm/test/Transforms/InstSimplify/select.ll +++ b/llvm/test/Transforms/InstSimplify/select.ll @@ -969,6 +969,28 @@ define <vscale x 2 x i1> @ignore_scalable_undef(<vscale x 2 x i1> %cond) { ret <vscale x 2 x i1> %s } +define i32 @select_ctpop_zero(i32 %x) { +; CHECK-LABEL: @select_ctpop_zero( +; CHECK-NEXT: [[T1:%.*]] = call i32 @llvm.ctpop.i32(i32 [[X:%.*]]) +; CHECK-NEXT: ret i32 [[T1]] +; + %t0 = icmp eq i32 %x, 0 + %t1 = call i32 @llvm.ctpop.i32(i32 %x) + %sel = select i1 %t0, i32 0, i32 %t1 + ret i32 %sel +} +declare i32 @llvm.ctpop.i32(i32) + +define <2 x i32> @vec_select_no_equivalence(<2 x i32> %x, <2 x i32> %y) { +; CHECK-LABEL: @vec_select_no_equivalence( +; CHECK-NEXT: ret <2 x i32> zeroinitializer +; + %x10 = shufflevector <2 x i32> %x, <2 x i32> undef, <2 x i32> <i32 1, i32 0> + %cond = icmp eq <2 x i32> %x, zeroinitializer + %s = select <2 x i1> %cond, <2 x i32> %x10, <2 x i32> zeroinitializer + ret <2 x i32> %s +} + ; TODO: these can be optimized more define i32 @poison(i32 %x, i32 %y) { _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits