Move the LowerMEMCPY and LowerMEMCPYCall to a common place.
[oota-llvm.git] / lib / Target / ARM / ARMISelLowering.h
index aba6ab3475a0be39a65459ddab43749ecc975d57..e6fb9458b6c59cdb9c72149871585381efbec7b2 100644 (file)
 #ifndef ARMISELLOWERING_H
 #define ARMISELLOWERING_H
 
+#include "ARMSubtarget.h"
 #include "llvm/Target/TargetLowering.h"
 #include "llvm/CodeGen/SelectionDAG.h"
 #include <vector>
 
 namespace llvm {
   class ARMConstantPoolValue;
-  class ARMSubtarget;
 
   namespace ARMISD {
     // ARM Specific DAG Nodes
@@ -56,9 +56,6 @@ namespace llvm {
       SITOF,        // sint to FP within a FP register.
       UITOF,        // uint to FP within a FP register.
 
-      MULHILOU,     // Lo,Hi = umul LHS, RHS.
-      MULHILOS,     // Lo,Hi = smul LHS, RHS.
-      
       SRL_FLAG,     // V,Flag = srl_flag X -> srl X, 1 + save carry out.
       SRA_FLAG,     // V,Flag = sra_flag X -> sra X, 1 + save carry out.
       RRX,          // V = RRX X, Flag     -> srl X, 1 + shift in carry flag.
@@ -117,6 +114,11 @@ namespace llvm {
     std::vector<unsigned>
     getRegClassForInlineAsmConstraint(const std::string &Constraint,
                                       MVT::ValueType VT) const;
+
+    virtual const TargetSubtarget* getSubtarget() {
+      return static_cast<const TargetSubtarget*>(Subtarget);
+    }
+
   private:
     /// Subtarget - Keep a pointer to the ARMSubtarget around so that we can
     /// make the right decision when generating code for different targets.
@@ -133,12 +135,15 @@ namespace llvm {
     SDOperand LowerToTLSGeneralDynamicModel(GlobalAddressSDNode *GA,
                                             SelectionDAG &DAG);
     SDOperand LowerToTLSExecModels(GlobalAddressSDNode *GA,
-                                       SelectionDAG &DAG);
+                                   SelectionDAG &DAG);
     SDOperand LowerGLOBAL_OFFSET_TABLE(SDOperand Op, SelectionDAG &DAG);
     SDOperand LowerFORMAL_ARGUMENTS(SDOperand Op, SelectionDAG &DAG);
     SDOperand LowerBR_JT(SDOperand Op, SelectionDAG &DAG);
-    SDOperand LowerMEMCPY(SDOperand Op, SelectionDAG &DAG);
-    SDOperand LowerADJUST_TRAMP(SDOperand Op, SelectionDAG &DAG);
+    SDOperand LowerMEMCPYInline(SDOperand Chain, SDOperand Dest,
+                                SDOperand Source, unsigned Size,
+                                unsigned Align, SelectionDAG &DAG);
+
+
   };
 }