Subtarget feature can now set any variable to any value

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25678 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng
2006-01-27 08:09:42 +00:00
parent 0cfcc1e807
commit 19c9550744
6 changed files with 22 additions and 21 deletions

View File

@ -20,9 +20,9 @@ include "../Target.td"
// Subtarget Features // Subtarget Features
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
def FeatureCIX : SubtargetFeature<"CIX", "bool", "HasCT", def FeatureCIX : SubtargetFeature<"CIX", "HasCT", "true",
"Enable CIX extentions">; "Enable CIX extentions">;
def FeatureFIX : SubtargetFeature<"FIX", "bool", "HasF2I", def FeatureFIX : SubtargetFeature<"FIX", "HasF2I", "true",
"Enable FIX extentions">; "Enable FIX extentions">;
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//

View File

@ -19,15 +19,15 @@ include "../Target.td"
// PowerPC Subtarget features. // PowerPC Subtarget features.
// //
def Feature64Bit : SubtargetFeature<"64bit", "bool", "Is64Bit", def Feature64Bit : SubtargetFeature<"64bit","Is64Bit", "true",
"Enable 64-bit instructions">; "Enable 64-bit instructions">;
def Feature64BitRegs : SubtargetFeature<"64bitregs", "bool", "Has64BitRegs", def Feature64BitRegs : SubtargetFeature<"64bitregs","Has64BitRegs", "true",
"Enable 64-bit registers [beta]">; "Enable 64-bit registers [beta]">;
def FeatureAltivec : SubtargetFeature<"altivec", "bool", "HasAltivec", def FeatureAltivec : SubtargetFeature<"altivec","HasAltivec", "true",
"Enable Altivec instructions">; "Enable Altivec instructions">;
def FeatureGPUL : SubtargetFeature<"gpul", "bool", "IsGigaProcessor", def FeatureGPUL : SubtargetFeature<"gpul","IsGigaProcessor", "true",
"Enable GPUL instructions">; "Enable GPUL instructions">;
def FeatureFSqrt : SubtargetFeature<"fsqrt", "bool", "HasFSQRT", def FeatureFSqrt : SubtargetFeature<"fsqrt","HasFSQRT", "true",
"Enable the fsqrt instruction">; "Enable the fsqrt instruction">;
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//

View File

@ -21,13 +21,13 @@ include "../Target.td"
// //
def FeatureV9 def FeatureV9
: SubtargetFeature<"v9", "bool", "IsV9", : SubtargetFeature<"v9", "IsV9", "true",
"Enable SPARC-V9 instructions">; "Enable SPARC-V9 instructions">;
def FeatureV8Deprecated def FeatureV8Deprecated
: SubtargetFeature<"deprecated-v8", "bool", "V8DeprecatedInsts", : SubtargetFeature<"deprecated-v8", "V8DeprecatedInsts", "true",
"Enable deprecated V8 instructions in V9 mode">; "Enable deprecated V8 instructions in V9 mode">;
def FeatureVIS def FeatureVIS
: SubtargetFeature<"vis", "bool", "IsVIS", : SubtargetFeature<"vis", "IsVIS", "true",
"Enable UltraSPARC Visual Instruction Set extensions">; "Enable UltraSPARC Visual Instruction Set extensions">;
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//

View File

@ -21,13 +21,13 @@ include "../Target.td"
// //
def FeatureV9 def FeatureV9
: SubtargetFeature<"v9", "bool", "IsV9", : SubtargetFeature<"v9", "IsV9", "true",
"Enable SPARC-V9 instructions">; "Enable SPARC-V9 instructions">;
def FeatureV8Deprecated def FeatureV8Deprecated
: SubtargetFeature<"deprecated-v8", "bool", "V8DeprecatedInsts", : SubtargetFeature<"deprecated-v8", "V8DeprecatedInsts", "true",
"Enable deprecated V8 instructions in V9 mode">; "Enable deprecated V8 instructions in V9 mode">;
def FeatureVIS def FeatureVIS
: SubtargetFeature<"vis", "bool", "IsVIS", : SubtargetFeature<"vis", "IsVIS", "true",
"Enable UltraSPARC Visual Instruction Set extensions">; "Enable UltraSPARC Visual Instruction Set extensions">;
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//

View File

@ -287,20 +287,20 @@ class Target {
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
// SubtargetFeature - A characteristic of the chip set. // SubtargetFeature - A characteristic of the chip set.
// //
class SubtargetFeature<string n, string t, string a, string d> { class SubtargetFeature<string n, string a, string v, string d> {
// Name - Feature name. Used by command line (-mattr=) to determine the // Name - Feature name. Used by command line (-mattr=) to determine the
// appropriate target chip. // appropriate target chip.
// //
string Name = n; string Name = n;
// Type - Type of attribute to be set by feature.
//
string Type = t;
// Attribute - Attribute to be set by feature. // Attribute - Attribute to be set by feature.
// //
string Attribute = a; string Attribute = a;
// Value - Value the attribute to be set to by feature.
//
string Value = v;
// Desc - Feature description. Used by command line (-mattr=) to display help // Desc - Feature description. Used by command line (-mattr=) to display help
// information. // information.
// //

View File

@ -473,10 +473,11 @@ void SubtargetEmitter::ParseFeaturesFunction(std::ostream &OS) {
Record *R = Features[i]; Record *R = Features[i];
std::string Instance = R->getName(); std::string Instance = R->getName();
std::string Name = R->getValueAsString("Name"); std::string Name = R->getValueAsString("Name");
std::string Type = R->getValueAsString("Type"); std::string Value = R->getValueAsString("Value");
std::string Attribute = R->getValueAsString("Attribute"); std::string Attribute = R->getValueAsString("Attribute");
OS << " " << Attribute << " = (Bits & " << Instance << ") != 0;\n"; OS << " if ((Bits & " << Instance << ") != 0) "
<< Attribute << " = " << Value << ";\n";
} }
if (HasItineraries) { if (HasItineraries) {