[ARM] Add +feature names to TargetParser extensions table
[oota-llvm.git] / include / llvm / Support / TargetParser.h
index 433c19eff6f52a7b25dd2619bbd7c799e5562219..6ca0281515e2ae9d10ae04fcc9f7d4f742af08e9 100644 (file)
@@ -63,7 +63,7 @@ enum FPURestriction {
 
 // Arch names.
 enum ArchKind {
-#define ARM_ARCH(NAME, ID, CPU_ATTR, SUB_ARCH, ARCH_ATTR) ID,
+#define ARM_ARCH(NAME, ID, CPU_ATTR, SUB_ARCH, ARCH_ATTR, ARCH_FPU, ARCH_BASE_EXT) ID,
 #include "ARMTargetParser.def"
   AK_LAST
 };
@@ -81,6 +81,7 @@ enum ArchExtKind : unsigned {
   AEK_SIMD = 0x80,
   AEK_SEC = 0x100,
   AEK_VIRT = 0x200,
+  AEK_DSP = 0x400,
   // Unsupported extensions.
   AEK_OS = 0x8000000,
   AEK_IWMMXT = 0x10000000,
@@ -102,21 +103,29 @@ enum ProfileKind { PK_INVALID = 0, PK_A, PK_R, PK_M };
 StringRef getCanonicalArchName(StringRef Arch);
 
 // Information by ID
-const char *getFPUName(unsigned FPUKind);
+StringRef getFPUName(unsigned FPUKind);
 unsigned getFPUVersion(unsigned FPUKind);
 unsigned getFPUNeonSupportLevel(unsigned FPUKind);
 unsigned getFPURestriction(unsigned FPUKind);
-unsigned getDefaultFPU(StringRef CPU);
-// FIXME: This should be moved to TargetTuple once it exists
+
+// FIXME: These should be moved to TargetTuple once it exists
 bool getFPUFeatures(unsigned FPUKind, std::vector<const char *> &Features);
 bool getHWDivFeatures(unsigned HWDivKind, std::vector<const char *> &Features);
-const char *getArchName(unsigned ArchKind);
+bool getExtensionFeatures(unsigned Extensions,
+                                   std::vector<const char*> &Features);
+
+StringRef getArchName(unsigned ArchKind);
 unsigned getArchAttr(unsigned ArchKind);
-const char *getCPUAttr(unsigned ArchKind);
-const char *getSubArch(unsigned ArchKind);
-const char *getArchExtName(unsigned ArchExtKind);
-const char *getHWDivName(unsigned HWDivKind);
-const char *getDefaultCPU(StringRef Arch);
+StringRef getCPUAttr(unsigned ArchKind);
+StringRef getSubArch(unsigned ArchKind);
+StringRef getArchExtName(unsigned ArchExtKind);
+const char *getArchExtFeature(StringRef ArchExt);
+StringRef getHWDivName(unsigned HWDivKind);
+
+// Information by Name
+unsigned  getDefaultFPU(StringRef CPU, unsigned ArchKind);
+unsigned  getDefaultExtensions(StringRef CPU, unsigned ArchKind);
+StringRef getDefaultCPU(StringRef Arch);
 
 // Parser
 unsigned parseHWDiv(StringRef HWDiv);