[Layering] Move DebugInfo.h into the IR library where its implementation
[oota-llvm.git] / lib / Target / AArch64 / AArch64Subtarget.h
index f262b9461797b4da5235a0003a99351173b1e5f6..adceba7842dc133313af361bec9ad379cb3e2c8f 100644 (file)
@@ -27,17 +27,30 @@ class StringRef;
 class GlobalValue;
 
 class AArch64Subtarget : public AArch64GenSubtargetInfo {
+  virtual void anchor();
 protected:
+  bool HasFPARMv8;
   bool HasNEON;
   bool HasCrypto;
 
   /// TargetTriple - What processor and OS we're targeting.
   Triple TargetTriple;
+
+  /// CPUString - String name of used CPU.
+  std::string CPUString;
+
+  /// IsLittleEndian - The target is Little Endian
+  bool IsLittleEndian;
+
+private:
+  void initializeSubtargetFeatures(StringRef CPU, StringRef FS);
+
 public:
   /// This constructor initializes the data members to match that
   /// of the specified triple.
   ///
-  AArch64Subtarget(StringRef TT, StringRef CPU, StringRef FS);
+  AArch64Subtarget(StringRef TT, StringRef CPU, StringRef FS,
+                   bool LittleEndian);
 
   virtual bool enableMachineScheduler() const {
     return true;
@@ -52,9 +65,13 @@ public:
   bool isTargetELF() const { return TargetTriple.isOSBinFormatELF(); }
   bool isTargetLinux() const { return TargetTriple.isOSLinux(); }
 
+  bool hasFPARMv8() const { return HasFPARMv8; }
   bool hasNEON() const { return HasNEON; }
-
   bool hasCrypto() const { return HasCrypto; }
+
+  bool isLittle() const { return IsLittleEndian; }
+
+  const std::string & getCPUString() const { return CPUString; }
 };
 } // End llvm namespace