OSDN Git Service

[X86] X86MaskedGatherSDNode shouldn't inherit from MaskedGatherScatterSDNode
authorCraig Topper <craig.topper@intel.com>
Wed, 8 Nov 2017 22:26:41 +0000 (22:26 +0000)
committerCraig Topper <craig.topper@intel.com>
Wed, 8 Nov 2017 22:26:41 +0000 (22:26 +0000)
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
lib/Target/X86/X86ISelLowering.h

index 001ac98..d119423 100644 (file)
@@ -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) {}
index d1438e5..d704ccc 100644 (file)
@@ -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;
     }