From a40599c97bd31871526d2399e8d545daa89ef702 Mon Sep 17 00:00:00 2001 From: Fraser Cormack Date: Mon, 6 Sep 2021 10:23:56 +0100 Subject: [PATCH] [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 --- llvm/include/llvm/CodeGen/SelectionDAGNodes.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/llvm/include/llvm/CodeGen/SelectionDAGNodes.h b/llvm/include/llvm/CodeGen/SelectionDAGNodes.h index 781cfc7019d46..9ecba871bc5a4 100644 --- a/llvm/include/llvm/CodeGen/SelectionDAGNodes.h +++ b/llvm/include/llvm/CodeGen/SelectionDAGNodes.h @@ -1363,11 +1363,10 @@ class MemSDNode : public SDNode { 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);