From: Craig Topper Date: Wed, 8 Nov 2017 22:26:41 +0000 (+0000) Subject: [X86] X86MaskedGatherSDNode shouldn't inherit from MaskedGatherScatterSDNode X-Git-Tag: llvmorg-6.0.0-rc1~3849 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cfd510678f07e83c2ed3a15788381e00c9e00ddd;p=platform%2Fupstream%2Fllvm.git [X86] X86MaskedGatherSDNode shouldn't inherit from MaskedGatherScatterSDNode The classof implementation in MaskedGatherScatterSDNode doesn't consider X86MaskedGatherSDNode so its misleading. llvm-svn: 317733 --- diff --git a/llvm/include/llvm/CodeGen/SelectionDAGNodes.h b/llvm/include/llvm/CodeGen/SelectionDAGNodes.h index 001ac98..d119423 100644 --- a/llvm/include/llvm/CodeGen/SelectionDAGNodes.h +++ b/llvm/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/llvm/lib/Target/X86/X86ISelLowering.h b/llvm/lib/Target/X86/X86ISelLowering.h index d1438e5..d704ccc 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.h +++ b/llvm/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; }