[PATCH] D123652: Add use condition for combine SetCCMOVMSK
Xiang Zhang via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 12 22:24:32 PDT 2022
xiangzhangllvm created this revision.
xiangzhangllvm added a reviewer: RKSimon.
Herald added subscribers: pengfei, hiraditya.
Herald added a project: All.
xiangzhangllvm requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
We encounter a performance drop caused by
6997f4d07fa4b462dd3a02838a2cfed45db9c8a0 <https://reviews.llvm.org/rG6997f4d07fa4b462dd3a02838a2cfed45db9c8a0>
We should not try fold allof(cmpeq(x,y)) -> ptest(sub(x,y)) if the cmpeq has other users.
https://reviews.llvm.org/D123652
Files:
llvm/lib/Target/X86/X86ISelLowering.cpp
Index: llvm/lib/Target/X86/X86ISelLowering.cpp
===================================================================
--- llvm/lib/Target/X86/X86ISelLowering.cpp
+++ llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -44999,9 +44999,11 @@
unsigned NumElts = VecVT.getVectorNumElements();
unsigned NumEltBits = VecVT.getScalarSizeInBits();
- bool IsAnyOf = CmpOpcode == X86ISD::CMP && CmpVal.isZero();
+ bool IsAnyOf = CmpOpcode == X86ISD::CMP && CmpVal.isZero() &&
+ CmpOp.getNode()->hasOneUse();
bool IsAllOf = (CmpOpcode == X86ISD::SUB || CmpOpcode == X86ISD::CMP) &&
- NumElts <= CmpBits && CmpVal.isMask(NumElts);
+ NumElts <= CmpBits && CmpVal.isMask(NumElts) &&
+ CmpOp.getNode()->hasOneUse();
if (!IsAnyOf && !IsAllOf)
return SDValue();
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D123652.422397.patch
Type: text/x-patch
Size: 820 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220413/18f17b11/attachment.bin>
More information about the llvm-commits
mailing list