[PATCH] D143283: [AArch64][SVE]: custom lower AVGFloor/AVGCeil.
Sander de Smalen via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 7 03:10:42 PST 2023
sdesmalen added a comment.
Thanks for all the changes @hassnaa-arm, I've just left some final minor comments.
================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:13375
+SDValue AArch64TargetLowering::LowerAVG(SDValue Op, SelectionDAG &DAG,
+ unsigned NewOp) const {
----------------
Can you add a comment explaining what this does, e.g. something like
When x and y are extended, lower:
avgfloor(x, y) -> (x + y) >> 1
avgceil(x, y) -> (x + y + 1) >> 1
Otherwise, lower to:
avgfloor(x, y) -> (x >> 1) + (y >> 1) + (x && y && 1)
avgceil(x, y) -> (x >> 1) + (y >> 1) + ((x || y) && 1)
================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:13404-13405
+ (IsSigned && IsSignExtended(OpA) && IsSignExtended(OpB))) {
+ // if the Ops are already extended, then shift their addition directly,
+ // it's pointless to shift each on on its own.
+ SDValue Add = DAG.getNode(ISD::ADD, dl, VT, OpA, OpB);
----------------
nit: this comment would be redundant if you address my other comment (to add a comment for the function itself)
================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:13412-13414
+ SDValue ShiftOpA, ShiftOpB;
+ ShiftOpA = DAG.getNode(ShiftOpc, dl, VT, OpA, ConstantOne);
+ ShiftOpB = DAG.getNode(ShiftOpc, dl, VT, OpB, ConstantOne);
----------------
nit:
SDValue ShiftOpA = DAG.getNode(ShiftOpc, dl, VT, OpA, ConstantOne);
SDValue ShiftOpB = DAG.getNode(ShiftOpc, dl, VT, OpB, ConstantOne);
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D143283/new/
https://reviews.llvm.org/D143283
More information about the llvm-commits
mailing list