Add some hooks for selecting memory addresses.
authorChris Lattner <sabre@nondot.org>
Fri, 24 Feb 2006 02:12:52 +0000 (02:12 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 24 Feb 2006 02:12:52 +0000 (02:12 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26347 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/SelectionDAGISel.h

index 5a58297cb2578030dff1d76b4fc1766113d5a53a..805699390dbc9b60cde5fcba525c92662dcb3093 100644 (file)
@@ -49,11 +49,28 @@ public:
   virtual void EmitFunctionEntryCode(Function &Fn, MachineFunction &MF) {}
   virtual void InstructionSelectBasicBlock(SelectionDAG &SD) = 0;
 
+  /// SelectInlineAsmMemoryOperand - Select the specified address as a target
+  /// addressing mode, according to the specified constraint code.  If this does
+  /// not match or is not implemented, return true.  The resultant operands
+  /// (which will appear in the machine instruction) should be added to the
+  /// OutOps vector.
+  virtual bool SelectInlineAsmMemoryOperand(const SDOperand &Op,
+                                            char ConstraintCode,
+                                            std::vector<SDOperand> &OutOps,
+                                            SelectionDAG &DAG) {
+    return true;
+  }
+  
 protected:
   /// Pick a safe ordering and emit instructions for each target node in the
   /// graph.
   void ScheduleAndEmitDAG(SelectionDAG &DAG);
   
+  /// SelectInlineAsmMemoryOperands - Calls to this are automatically generated
+  /// by tblgen.  Others should not call it.
+  void SelectInlineAsmMemoryOperands(std::vector<SDOperand> &Ops,
+                                     SelectionDAG &DAG);
+  
 private:
   SDOperand CopyValueToVirtualRegister(SelectionDAGLowering &SDL,
                                        Value *V, unsigned Reg);