diff options
| -rw-r--r-- | llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp | 4 | ||||
| -rw-r--r-- | llvm/test/Transforms/InstCombine/minmax-intrinsics.ll | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp b/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp index 9be4836..46d8748 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp @@ -3576,13 +3576,13 @@ Instruction *InstCombinerImpl::visitXor(BinaryOperator &I) { // ~min(~X, ~Y) --> max(X, Y) // ~max(~X, Y) --> min(X, ~Y) auto *II = dyn_cast<IntrinsicInst>(Op0); - if (II && match(Op1, m_AllOnes())) { + if (II && II->hasOneUse() && match(Op1, m_AllOnes())) { if (match(Op0, m_MaxOrMin(m_Not(m_Value(X)), m_Not(m_Value(Y))))) { Intrinsic::ID InvID = getInverseMinMaxIntrinsic(II->getIntrinsicID()); Value *InvMaxMin = Builder.CreateBinaryIntrinsic(InvID, X, Y); return replaceInstUsesWith(I, InvMaxMin); } - if (match(Op0, m_OneUse(m_c_MaxOrMin(m_Not(m_Value(X)), m_Value(Y))))) { + if (match(Op0, m_c_MaxOrMin(m_Not(m_Value(X)), m_Value(Y)))) { Intrinsic::ID InvID = getInverseMinMaxIntrinsic(II->getIntrinsicID()); Value *NotY = Builder.CreateNot(Y); Value *InvMaxMin = Builder.CreateBinaryIntrinsic(InvID, X, NotY); diff --git a/llvm/test/Transforms/InstCombine/minmax-intrinsics.ll b/llvm/test/Transforms/InstCombine/minmax-intrinsics.ll index df919cc..90c4cc9 100644 --- a/llvm/test/Transforms/InstCombine/minmax-intrinsics.ll +++ b/llvm/test/Transforms/InstCombine/minmax-intrinsics.ll @@ -547,8 +547,8 @@ define i8 @not_smin_of_nots(i8 %x, i8 %y) { ; CHECK-NEXT: call void @use(i8 [[NOTY]]) ; CHECK-NEXT: [[M:%.*]] = call i8 @llvm.smin.i8(i8 [[NOTX]], i8 [[NOTY]]) ; CHECK-NEXT: call void @use(i8 [[M]]) -; CHECK-NEXT: [[TMP1:%.*]] = call i8 @llvm.smax.i8(i8 [[X]], i8 [[Y]]) -; CHECK-NEXT: ret i8 [[TMP1]] +; CHECK-NEXT: [[NOTM:%.*]] = xor i8 [[M]], -1 +; CHECK-NEXT: ret i8 [[NOTM]] ; %notx = xor i8 %x, -1 call void @use(i8 %notx) |
