Derive MDNode from MetadataBase instead of Constant. Emit MDNodes into METADATA_BLOCK...
[oota-llvm.git] / include / llvm / Target / SubtargetFeature.h
index f6a83dfbdbf21d8ae6bbac8be5ba56762ebf7635..5cfdc023d43990dcb9cc48f81b45e32bfce599dc 100644 (file)
@@ -2,8 +2,8 @@
 //
 //                     The LLVM Compiler Infrastructure
 //
-// This file was developed by James M. Laskey and is distributed under the 
-// University of Illinois Open Source License. See LICENSE.TXT for details.
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
 //
 //===----------------------------------------------------------------------===//
 //
@@ -21,6 +21,7 @@
 #include <string>
 #include <vector>
 #include <iosfwd>
+#include <cstring>
 #include "llvm/Support/DataTypes.h"
 
 namespace llvm {
@@ -34,6 +35,7 @@ struct SubtargetFeatureKV {
   const char *Key;                      // K-V key string
   const char *Desc;                     // Help descriptor
   uint32_t Value;                       // K-V integer value
+  uint32_t Implies;                     // K-V bit mask
   
   // Compare routine for std binary search
   bool operator<(const SubtargetFeatureKV &S) const {
@@ -72,7 +74,7 @@ struct SubtargetInfoKV {
 class SubtargetFeatures {
   std::vector<std::string> Features;    // Subtarget features as a vector
 public:
-  SubtargetFeatures(const std::string &Initial = std::string());
+  explicit SubtargetFeatures(const std::string &Initial = std::string());
 
   /// Features string accessors.
   std::string getString() const;
@@ -80,10 +82,13 @@ public:
 
   /// Set the CPU string.  Replaces previous setting.  Setting to "" clears CPU.
   void setCPU(const std::string &String);
-  
+
   /// Setting CPU string only if no string is set.
   void setCPUIfNone(const std::string &String);
-  
+
+  /// Returns current CPU string.
+  const std::string & getCPU() const;
+
   /// Adding Features.
   void AddFeature(const std::string &String, bool IsEnabled = true);