From 20c675a70a8aa2d145a1cd3422e5781a44bfef8d Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Wed, 8 Nov 2017 22:26:41 +0000 Subject: [PATCH] [X86] X86MaskedGatherSDNode shouldn't inherit from MaskedGatherScatterSDNode The classof implementation in MaskedGatherScatterSDNode doesn't consider X86MaskedGatherSDNode so its misleading. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317733 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/CodeGen/SelectionDAGNodes.h | 2 +- lib/Target/X86/X86ISelLowering.h | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/include/llvm/CodeGen/SelectionDAGNodes.h b/include/llvm/CodeGen/SelectionDAGNodes.h index 001ac981169..d119423a8c9 100644 --- a/include/llvm/CodeGen/SelectionDAGNodes.h +++ b/include/llvm/CodeGen/SelectionDAGNodes.h @@ -2111,7 +2111,7 @@ class MaskedGatherScatterSDNode : public MemSDNode { public: friend class SelectionDAG; - MaskedGatherScatterSDNode(unsigned NodeTy, unsigned Order, + MaskedGatherScatterSDNode(ISD::NodeType NodeTy, unsigned Order, const DebugLoc &dl, SDVTList VTs, EVT MemVT, MachineMemOperand *MMO) : MemSDNode(NodeTy, Order, dl, VTs, MemVT, MMO) {} diff --git a/lib/Target/X86/X86ISelLowering.h b/lib/Target/X86/X86ISelLowering.h index d1438e59f9b..d704ccce4c2 100644 --- a/lib/Target/X86/X86ISelLowering.h +++ b/lib/Target/X86/X86ISelLowering.h @@ -1404,13 +1404,21 @@ namespace llvm { }; // X86 specific Gather node. - class X86MaskedGatherSDNode : public MaskedGatherScatterSDNode { + // The class has the same order of operands as MaskedGatherSDNode for + // convenience. + class X86MaskedGatherSDNode : public MemSDNode { public: X86MaskedGatherSDNode(unsigned Order, const DebugLoc &dl, SDVTList VTs, EVT MemVT, MachineMemOperand *MMO) - : MaskedGatherScatterSDNode(X86ISD::MGATHER, Order, dl, VTs, MemVT, MMO) + : MemSDNode(X86ISD::MGATHER, Order, dl, VTs, MemVT, MMO) {} + + const SDValue &getBasePtr() const { return getOperand(3); } + const SDValue &getIndex() const { return getOperand(4); } + const SDValue &getMask() const { return getOperand(2); } + const SDValue &getValue() const { return getOperand(1); } + static bool classof(const SDNode *N) { return N->getOpcode() == X86ISD::MGATHER; } -- 2.11.0