[llvm-commits] CVS: llvm/lib/Target/SubtargetFeature.cpp
Chris Lattner
lattner at cs.uiuc.edu
Sun Oct 23 15:23:25 PDT 2005
Changes in directory llvm/lib/Target:
SubtargetFeature.cpp updated: 1.6 -> 1.7
---
Log message:
If a user requests help, give them help on both features and processors
---
Diffs of the changes: (+41 -25)
SubtargetFeature.cpp | 66 +++++++++++++++++++++++++++++++--------------------
1 files changed, 41 insertions(+), 25 deletions(-)
Index: llvm/lib/Target/SubtargetFeature.cpp
diff -u llvm/lib/Target/SubtargetFeature.cpp:1.6 llvm/lib/Target/SubtargetFeature.cpp:1.7
--- llvm/lib/Target/SubtargetFeature.cpp:1.6 Sun Oct 23 00:33:39 2005
+++ llvm/lib/Target/SubtargetFeature.cpp Sun Oct 23 17:23:13 2005
@@ -123,31 +123,42 @@
return F;
}
-/// Display help for feature choices.
+/// getLongestEntryLength - Return the length of the longest entry in the table.
///
-static void Help(bool isFeature, const SubtargetFeatureKV *Table,
- size_t TableSize) {
- // Determine the length of the longest key.
+static size_t getLongestEntryLength(const SubtargetFeatureKV *Table,
+ size_t Size) {
size_t MaxLen = 0;
- for (size_t i = 0; i < TableSize; i++)
+ for (size_t i = 0; i < Size; i++)
MaxLen = std::max(MaxLen, std::strlen(Table[i].Key));
-
- std::cerr << "Available " << (isFeature ? "features" : "CPUs")
- << " for this target:\n\n";
-
- for (size_t i = 0; i < TableSize; i++) {
- // Compute required padding
- size_t Pad = MaxLen - std::strlen(Table[i].Key);
- std::cerr << Table[i].Key << std::string(Pad, ' ') << " - "
- << Table[i].Desc << ".\n";
- }
+ return MaxLen;
+}
+/// Display help for feature choices.
+///
+static void Help(const SubtargetFeatureKV *CPUTable, size_t CPUTableSize,
+ const SubtargetFeatureKV *FeatTable, size_t FeatTableSize) {
+ // Determine the length of the longest CPU and Feature entries.
+ unsigned MaxCPULen = getLongestEntryLength(CPUTable, CPUTableSize);
+ unsigned MaxFeatLen = getLongestEntryLength(FeatTable, FeatTableSize);
+
+ // Print the CPU table.
+ std::cerr << "Available CPUs for this target:\n\n";
+ for (size_t i = 0; i != CPUTableSize; i++)
+ std::cerr << " " << CPUTable[i].Key
+ << std::string(MaxCPULen - std::strlen(CPUTable[i].Key), ' ')
+ << " - " << CPUTable[i].Desc << ".\n";
std::cerr << "\n";
- if (isFeature) {
- std::cerr
- << "Use +feature to enable a feature, or -feature to disable it.\n"
- << "For example, llc -mcpu=mycpu -mattr=+feature1,-feature2\n";
- }
+
+ // Print the Feature table.
+ std::cerr << "Available features for this target:\n\n";
+ for (size_t i = 0; i != FeatTableSize; i++)
+ std::cerr << " " << FeatTable[i].Key
+ << std::string(MaxFeatLen - std::strlen(FeatTable[i].Key), ' ')
+ << " - " << FeatTable[i].Desc << ".\n";
+ std::cerr << "\n";
+
+ std::cerr << "Use +feature to enable a feature, or -feature to disable it.\n"
+ << "For example, llc -mcpu=mycpu -mattr=+feature1,-feature2\n";
exit(1);
}
@@ -203,10 +214,13 @@
uint32_t Bits = 0; // Resulting bits
// Split up features
Split(Features, String);
+
// Check if default is needed
- if (Features[0].empty()) Features[0] = DefaultCPU;
- // Check for help
- if (Features[0] == "help") Help(false, CPUTable, CPUTableSize);
+ if (Features[0].empty())
+ Features[0] = DefaultCPU;
+ else if (Features[0] == "help")
+ Help(CPUTable, CPUTableSize, FeatureTable, FeatureTableSize);
+
// Find CPU entry
const SubtargetFeatureKV *CPUEntry =
Find(Features[0], CPUTable, CPUTableSize);
@@ -222,10 +236,12 @@
}
// Iterate through each feature
for (size_t i = 1; i < Features.size(); i++) {
- // Get next feature
const std::string &Feature = Features[i];
+
// Check for help
- if (Feature == "+help") Help(true, FeatureTable, FeatureTableSize);
+ if (Feature == "+help")
+ Help(CPUTable, CPUTableSize, FeatureTable, FeatureTableSize);
+
// Find feature in table.
const SubtargetFeatureKV *FeatureEntry =
Find(StripFlag(Feature), FeatureTable, FeatureTableSize);
More information about the llvm-commits
mailing list