[PATCH] D136244: [AArch64] Optimize memcmp when the result is tested for [in]equality with 0
chenglin.bi via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 25 06:57:39 PDT 2022
bcl5980 added inline comments.
================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:19499-19500
+ (LHS.getOperand(0)->getOpcode() == ISD::XOR &&
+ LHS.getOperand(1)->getOpcode() == ISD::XOR) &&
+ LHS.getOperand(0)->hasOneUse() && LHS.getOperand(1)->hasOneUse()) {
+ SDValue XOR0 = LHS.getOperand(0);
----------------
LHS should be OneUse also?
================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:19506
+ SDValue Cmp =
+ DAG.getNode(AArch64ISD::SUBS, DL, DAG.getVTList(TstVT, MVT::Glue),
+ XOR0.getOperand(0), XOR0.getOperand(1));
----------------
You haven't pass the glue to other instructions so the glue is useless. And I think we needn't use Glue here.
================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:19510
+ SDValue NZCVOp = DAG.getConstant(0, DL, MVT::i32);
+ SDValue CCmp = DAG.getNode(AArch64ISD::CCMP, DL, MVT_CC, XOR1.getOperand(0),
+ XOR1.getOperand(1), NZCVOp, CCVal, Overflow);
----------------
I am not sure if we can just combine to ISD::SETCC ? Maybe it can combine with some other op.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D136244/new/
https://reviews.llvm.org/D136244
More information about the llvm-commits
mailing list