Undo a change made in r140254.
[oota-llvm.git] / lib / Target / Alpha / AlphaSubtarget.cpp
index 15f51c4601474a49472ecb507fc9bc3dc138ae50..bd55ce9e315a22e13bf465297f85508c1fdd692a 100644 (file)
@@ -2,60 +2,34 @@
 //
 //                     The LLVM Compiler Infrastructure
 //
-// This file was developed by Andrew Lenharth 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.
 //
 //===----------------------------------------------------------------------===//
 //
-// This file implements the Alpha specific subclass of TargetSubtarget.
+// This file implements the Alpha specific subclass of TargetSubtargetInfo.
 //
 //===----------------------------------------------------------------------===//
 
 #include "AlphaSubtarget.h"
 #include "Alpha.h"
-#include "llvm/Module.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/Target/SubtargetFeature.h"
-#include "llvm/Support/Debug.h"
 
-using namespace llvm;
-
-enum AlphaFeature {
-  AlphaFeatureCIX   = 1 << 0,
-  AlphaFeatureFIX = 1 << 1,
-};
+#define GET_SUBTARGETINFO_TARGET_DESC
+#define GET_SUBTARGETINFO_CTOR
+#include "AlphaGenSubtargetInfo.inc"
 
-/// Sorted (by key) array of values for CPU subtype.
-static const SubtargetFeatureKV AlphaSubTypeKV[] = {
-  { "ev56"    , "Select the Alpha EV56 processor", 0 },
-  { "ev6"    , "Select the Alpha EV6 processor", AlphaFeatureFIX },
-  { "ev67"    , "Select the Alpha EV67 processor", AlphaFeatureFIX | AlphaFeatureCIX },
-  { "generic", "Select instructions for a generic Alpha processor (EV56)", 0 },
-  { "pca56"    , "Select the Alpha PCA56 processor", 0 },
-};
-
-/// Length of AlphaSubTypeKV.
-static const unsigned AlphaSubTypeKVSize = sizeof(AlphaSubTypeKV)
-                                             / sizeof(SubtargetFeatureKV);
+using namespace llvm;
 
-/// Sorted (by key) array of values for CPU features.
-static SubtargetFeatureKV AlphaFeatureKV[] = {
-  { "CIX", "Should CIX extentions be used" , AlphaFeatureCIX },
-  { "FIX"  , "Should FIX extentions be used"  , AlphaFeatureFIX },
- };
-/// Length of AlphaFeatureKV.
-static const unsigned AlphaFeatureKVSize = sizeof(AlphaFeatureKV)
-                                          / sizeof(SubtargetFeatureKV);
+AlphaSubtarget::AlphaSubtarget(const std::string &TT, const std::string &CPU,
+                               const std::string &FS)
+  : AlphaGenSubtargetInfo(TT, CPU, FS), HasCT(false) {
+  std::string CPUName = CPU;
+  if (CPUName.empty())
+    CPUName = "generic";
 
-AlphaSubtarget::AlphaSubtarget(const Module &M, const std::string &FS)
-  :HasF2I(false), HasCT(false)
-{
-  std::string CPU = "generic";
-  uint32_t Bits =
-  SubtargetFeatures::Parse(FS, CPU,
-                           AlphaSubTypeKV, AlphaSubTypeKVSize,
-                           AlphaFeatureKV, AlphaFeatureKVSize);
-  HasF2I = (Bits & AlphaFeatureFIX) != 0;
-  HasCT  = (Bits & AlphaFeatureCIX) != 0;
+  // Parse features string.
+  ParseSubtargetFeatures(CPUName, FS);
 
+  // Initialize scheduling itinerary for the specified CPU.
+  InstrItins = getInstrItineraryForCPU(CPUName);
 }