R600/SI: Try to keep i32 mul on SALU
[oota-llvm.git] / lib / Target / CppBackend / CPPTargetMachine.h
index c7c8a7e04a4723b58bebae28eb9398b611bdf6d6..4bae7f817543d723bae749ccb6143e84453ebd82 100644 (file)
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef CPPTARGETMACHINE_H
-#define CPPTARGETMACHINE_H
+#ifndef LLVM_LIB_TARGET_CPPBACKEND_CPPTARGETMACHINE_H
+#define LLVM_LIB_TARGET_CPPBACKEND_CPPTARGETMACHINE_H
 
+#include "llvm/IR/DataLayout.h"
 #include "llvm/Target/TargetMachine.h"
-#include "llvm/Target/TargetData.h"
+#include "llvm/Target/TargetSubtargetInfo.h"
 
 namespace llvm {
 
 class formatted_raw_ostream;
 
-struct CPPTargetMachine : public TargetMachine {
-  const TargetData DataLayout;       // Calculates type size & alignment
-
-  CPPTargetMachine(const Target &T, const Module &M,
-                   const std::string &FS)
-    : TargetMachine(T), DataLayout(&M) {}
-
-  virtual bool WantsWholeFile() const { return true; }
-  virtual bool addPassesToEmitWholeFile(PassManager &PM,
-                                        formatted_raw_ostream &Out,
-                                        CodeGenFileType FileType,
-                                        CodeGenOpt::Level OptLevel);
+class CPPSubtarget : public TargetSubtargetInfo {
+};
 
-  virtual const TargetData *getTargetData() const { return &DataLayout; }
+struct CPPTargetMachine : public TargetMachine {
+  CPPTargetMachine(const Target &T, StringRef TT,
+                   StringRef CPU, StringRef FS, const TargetOptions &Options,
+                   Reloc::Model RM, CodeModel::Model CM,
+                   CodeGenOpt::Level OL)
+    : TargetMachine(T, TT, CPU, FS, Options), Subtarget() {}
+private:
+  CPPSubtarget Subtarget;
+
+public:
+  const CPPSubtarget *getSubtargetImpl() const override { return &Subtarget; }
+  bool addPassesToEmitFile(PassManagerBase &PM, formatted_raw_ostream &Out,
+                           CodeGenFileType FileType, bool DisableVerify,
+                           AnalysisID StartAfter,
+                           AnalysisID StopAfter) override;
 };
 
 extern Target TheCppBackendTarget;