From: Fraser Cormack Date: Mon, 6 Sep 2021 09:23:56 +0000 (+0100) Subject: [SelectionDAG][VP] Fix MemSDNode::getBasePtr X-Git-Tag: upstream/15.0.7~32131 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a40599c97bd31871526d2399e8d545daa89ef702;p=platform%2Fupstream%2Fllvm.git [SelectionDAG][VP] Fix MemSDNode::getBasePtr Found while working on D108987. When interpreting VP nodes as `MemSDNode` nodes, this function would return the incorrect indices. This was due to `VP_GATHER` and having no "passthru", and both `VP_GATHER` and `VP_SCATTER` having their mask operands *after* the base pointer, unlike `MGATHER` and `MSCATTER`. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D109308 --- diff --git a/llvm/include/llvm/CodeGen/SelectionDAGNodes.h b/llvm/include/llvm/CodeGen/SelectionDAGNodes.h index 781cfc7..9ecba87 100644 --- a/llvm/include/llvm/CodeGen/SelectionDAGNodes.h +++ b/llvm/include/llvm/CodeGen/SelectionDAGNodes.h @@ -1363,11 +1363,10 @@ public: case ISD::STORE: case ISD::VP_STORE: case ISD::MSTORE: + case ISD::VP_SCATTER: return getOperand(2); case ISD::MGATHER: case ISD::MSCATTER: - case ISD::VP_GATHER: - case ISD::VP_SCATTER: return getOperand(3); default: return getOperand(1);