@@ -70,7 +70,7 @@ std::string aarch64::getAArch64TargetCPU(const ArgList &Args,
70
70
// Decode AArch64 features from string like +[no]featureA+[no]featureB+...
71
71
static bool DecodeAArch64Features (const Driver &D, StringRef text,
72
72
std::vector<StringRef> &Features,
73
- llvm::AArch64::ArchKind ArchKind ) {
73
+ const llvm::AArch64::ArchInfo &ArchInfo ) {
74
74
SmallVector<StringRef, 8 > Split;
75
75
text.split (Split, StringRef (" +" ), -1 , false );
76
76
@@ -104,14 +104,14 @@ static bool DecodeAArch64Features(const Driver &D, StringRef text,
104
104
105
105
// +sve implies +f32mm if the base architecture is >= v8.6A (except v9A)
106
106
// It isn't the case in general that sve implies both f64mm and f32mm
107
- if ((ArchKind == llvm::AArch64::ArchKind ::ARMV8_6A ||
108
- ArchKind == llvm::AArch64::ArchKind ::ARMV8_7A ||
109
- ArchKind == llvm::AArch64::ArchKind ::ARMV8_8A ||
110
- ArchKind == llvm::AArch64::ArchKind ::ARMV8_9A ||
111
- ArchKind == llvm::AArch64::ArchKind ::ARMV9_1A ||
112
- ArchKind == llvm::AArch64::ArchKind ::ARMV9_2A ||
113
- ArchKind == llvm::AArch64::ArchKind ::ARMV9_3A ||
114
- ArchKind == llvm::AArch64::ArchKind ::ARMV9_4A) &&
107
+ if ((ArchInfo == llvm::AArch64::ARMV8_6A ||
108
+ ArchInfo == llvm::AArch64::ARMV8_7A ||
109
+ ArchInfo == llvm::AArch64::ARMV8_8A ||
110
+ ArchInfo == llvm::AArch64::ARMV8_9A ||
111
+ ArchInfo == llvm::AArch64::ARMV9_1A ||
112
+ ArchInfo == llvm::AArch64::ARMV9_2A ||
113
+ ArchInfo == llvm::AArch64::ARMV9_3A ||
114
+ ArchInfo == llvm::AArch64::ARMV9_4A) &&
115
115
Feature == " sve" )
116
116
Features.push_back (" +f32mm" );
117
117
}
@@ -123,32 +123,30 @@ static bool DecodeAArch64Features(const Driver &D, StringRef text,
123
123
static bool DecodeAArch64Mcpu (const Driver &D, StringRef Mcpu, StringRef &CPU,
124
124
std::vector<StringRef> &Features) {
125
125
std::pair<StringRef, StringRef> Split = Mcpu.split (" +" );
126
- CPU = Split.first ;
127
- llvm::AArch64::ArchKind ArchKind = llvm::AArch64::ArchKind::ARMV8A;
128
-
129
- CPU = llvm::AArch64::resolveCPUAlias (CPU);
126
+ const llvm::AArch64::ArchInfo *ArchInfo = &llvm::AArch64::ARMV8A;
127
+ CPU = llvm::AArch64::resolveCPUAlias (Split.first );
130
128
131
129
if (CPU == " native" )
132
130
CPU = llvm::sys::getHostCPUName ();
133
131
134
132
if (CPU == " generic" ) {
135
133
Features.push_back (" +neon" );
136
134
} else {
137
- ArchKind = llvm::AArch64::parseCPUArch (CPU);
138
- if (ArchKind == llvm::AArch64::ArchKind ::INVALID)
135
+ ArchInfo = & llvm::AArch64::parseCpu (CPU). Arch ;
136
+ if (*ArchInfo == llvm::AArch64::INVALID)
139
137
return false ;
140
- Features.push_back (llvm::AArch64::getArchFeature (ArchKind) );
138
+ Features.push_back (ArchInfo-> ArchFeature );
141
139
142
- uint64_t Extension = llvm::AArch64::getDefaultExtensions (CPU, ArchKind );
140
+ uint64_t Extension = llvm::AArch64::getDefaultExtensions (CPU, *ArchInfo );
143
141
if (!llvm::AArch64::getExtensionFeatures (Extension, Features))
144
142
return false ;
145
- }
143
+ }
146
144
147
- if (Split.second .size () &&
148
- !DecodeAArch64Features (D, Split.second , Features, ArchKind ))
149
- return false ;
145
+ if (Split.second .size () &&
146
+ !DecodeAArch64Features (D, Split.second , Features, *ArchInfo ))
147
+ return false ;
150
148
151
- return true ;
149
+ return true ;
152
150
}
153
151
154
152
static bool
@@ -158,25 +156,26 @@ getAArch64ArchFeaturesFromMarch(const Driver &D, StringRef March,
158
156
std::string MarchLowerCase = March.lower ();
159
157
std::pair<StringRef, StringRef> Split = StringRef (MarchLowerCase).split (" +" );
160
158
161
- llvm::AArch64::ArchKind ArchKind = llvm::AArch64::parseArch (Split.first );
159
+ const llvm::AArch64::ArchInfo *ArchInfo =
160
+ &llvm::AArch64::parseArch (Split.first );
162
161
if (Split.first == " native" )
163
- ArchKind = llvm::AArch64::getCPUArchKind (llvm::sys::getHostCPUName ().str ());
164
- if (ArchKind == llvm::AArch64::ArchKind ::INVALID)
162
+ ArchInfo = & llvm::AArch64::getArchForCpu (llvm::sys::getHostCPUName ().str ());
163
+ if (*ArchInfo == llvm::AArch64::INVALID)
165
164
return false ;
166
- Features.push_back (llvm::AArch64::getArchFeature (ArchKind) );
165
+ Features.push_back (ArchInfo-> ArchFeature );
167
166
168
167
// Enable SVE2 by default on Armv9-A.
169
168
// It can still be disabled if +nosve2 is present.
170
169
// We must do this early so that DecodeAArch64Features has the correct state
171
- if ((ArchKind == llvm::AArch64::ArchKind ::ARMV9A ||
172
- ArchKind == llvm::AArch64::ArchKind ::ARMV9_1A ||
173
- ArchKind == llvm::AArch64::ArchKind ::ARMV9_2A)) {
170
+ if ((*ArchInfo == llvm::AArch64::ARMV9A ||
171
+ *ArchInfo == llvm::AArch64::ARMV9_1A ||
172
+ *ArchInfo == llvm::AArch64::ARMV9_2A)) {
174
173
Features.push_back (" +sve" );
175
174
Features.push_back (" +sve2" );
176
175
}
177
176
178
177
if ((Split.second .size () &&
179
- !DecodeAArch64Features (D, Split.second , Features, ArchKind )))
178
+ !DecodeAArch64Features (D, Split.second , Features, *ArchInfo )))
180
179
return false ;
181
180
182
181
return true ;
0 commit comments