Lines Matching refs:Ext

261 static bool stripExperimentalPrefix(StringRef &Ext) {  in stripExperimentalPrefix()  argument
262 return Ext.consume_front("experimental-"); in stripExperimentalPrefix()
272 static size_t findLastNonVersionCharacter(StringRef Ext) { in findLastNonVersionCharacter() argument
273 assert(!Ext.empty() && in findLastNonVersionCharacter()
276 int Pos = Ext.size() - 1; in findLastNonVersionCharacter()
277 while (Pos > 0 && isDigit(Ext[Pos])) in findLastNonVersionCharacter()
279 if (Pos > 0 && Ext[Pos] == 'p' && isDigit(Ext[Pos - 1])) { in findLastNonVersionCharacter()
281 while (Pos > 0 && isDigit(Ext[Pos])) in findLastNonVersionCharacter()
319 static StringRef getExtensionTypeDesc(StringRef Ext) { in getExtensionTypeDesc() argument
320 if (Ext.starts_with("s")) in getExtensionTypeDesc()
322 if (Ext.starts_with("x")) in getExtensionTypeDesc()
324 if (Ext.starts_with("z")) in getExtensionTypeDesc()
329 static StringRef getExtensionType(StringRef Ext) { in getExtensionType() argument
330 if (Ext.starts_with("s")) in getExtensionType()
332 if (Ext.starts_with("x")) in getExtensionType()
334 if (Ext.starts_with("z")) in getExtensionType()
340 isExperimentalExtension(StringRef Ext) { in isExperimentalExtension() argument
342 llvm::lower_bound(SupportedExperimentalExtensions, Ext, LessExtName()); in isExperimentalExtension()
343 if (I == std::end(SupportedExperimentalExtensions) || I->Name != Ext) in isExperimentalExtension()
349 bool RISCVISAInfo::isSupportedExtensionFeature(StringRef Ext) { in isSupportedExtensionFeature() argument
350 bool IsExperimental = stripExperimentalPrefix(Ext); in isSupportedExtensionFeature()
356 auto I = llvm::lower_bound(ExtInfo, Ext, LessExtName()); in isSupportedExtensionFeature()
357 return I != ExtInfo.end() && I->Name == Ext; in isSupportedExtensionFeature()
360 bool RISCVISAInfo::isSupportedExtension(StringRef Ext) { in isSupportedExtension() argument
365 auto I = llvm::lower_bound(ExtInfo, Ext, LessExtName()); in isSupportedExtension()
366 if (I != ExtInfo.end() && I->Name == Ext) in isSupportedExtension()
373 bool RISCVISAInfo::isSupportedExtension(StringRef Ext, unsigned MajorVersion, in isSupportedExtension() argument
378 std::equal_range(ExtInfo.begin(), ExtInfo.end(), Ext, LessExtName()); in isSupportedExtension()
387 bool RISCVISAInfo::hasExtension(StringRef Ext) const { in hasExtension()
388 stripExperimentalPrefix(Ext); in hasExtension()
390 if (!isSupportedExtension(Ext)) in hasExtension()
393 return Exts.count(Ext.str()) != 0; in hasExtension()
415 static unsigned singleLetterExtensionRank(char Ext) { in singleLetterExtensionRank() argument
416 assert(Ext >= 'a' && Ext <= 'z'); in singleLetterExtensionRank()
417 switch (Ext) { in singleLetterExtensionRank()
424 size_t Pos = AllStdExts.find(Ext); in singleLetterExtensionRank()
430 return 2 + AllStdExts.size() + (Ext - 'a'); in singleLetterExtensionRank()
487 for (const RISCVSupportedExtension &Ext : SupportedExtensions) { in toFeatures() local
488 if (Exts.count(Ext.Name)) in toFeatures()
490 Features.push_back((llvm::Twine("-") + Ext.Name).str()); in toFeatures()
493 for (const RISCVSupportedExtension &Ext : SupportedExperimentalExtensions) { in toFeatures() local
494 if (Exts.count(Ext.Name)) in toFeatures()
496 Features.push_back((llvm::Twine("-experimental-") + Ext.Name).str()); in toFeatures()
507 static Error getExtensionVersion(StringRef Ext, StringRef In, unsigned &Major, in getExtensionVersion() argument
526 "minor version number missing after 'p' for extension '" + Ext + "'"); in getExtensionVersion()
533 "Failed to parse major version number for extension '" + Ext + "'"); in getExtensionVersion()
538 "Failed to parse minor version number for extension '" + Ext + "'"); in getExtensionVersion()
548 if (Ext.size() > 1 && In.size()) { in getExtensionVersion()
555 if (auto ExperimentalExtension = isExperimentalExtension(Ext)) { in getExtensionVersion()
559 Ext.str() + "'"; in getExtensionVersion()
567 Ext.str() + "`"; in getExtensionVersion()
577 Error += " for experimental extension '" + Ext.str() + in getExtensionVersion()
587 if (Ext == "g") in getExtensionVersion()
591 if (auto DefaultVersion = findDefaultVersion(Ext)) { in getExtensionVersion()
600 if (RISCVISAInfo::isSupportedExtension(Ext, Major, Minor)) in getExtensionVersion()
606 Error += " for extension '" + Ext.str() + "'"; in getExtensionVersion()
668 for (StringRef Ext : Split) { in parseNormalizedArchString() local
670 std::tie(Prefix, MinorVersionStr) = Ext.rsplit('p'); in parseNormalizedArchString()
774 for (const auto *Ext : RISCVGImplications) { in parseArchString() local
775 if (auto Version = findDefaultVersion(Ext)) in parseArchString()
776 ISAInfo->addExtension(Ext, *Version); in parseArchString()
885 for (StringRef Ext : Split) { in parseArchString() local
886 if (Ext.empty()) in parseArchString()
890 StringRef Type = getExtensionType(Ext); in parseArchString()
891 StringRef Desc = getExtensionTypeDesc(Ext); in parseArchString()
892 auto Pos = findLastNonVersionCharacter(Ext) + 1; in parseArchString()
893 StringRef Name(Ext.substr(0, Pos)); in parseArchString()
894 StringRef Vers(Ext.substr(Pos)); in parseArchString()
900 "invalid extension prefix '" + Ext + "'"); in parseArchString()
936 for (auto Ext : AllExts) { in parseArchString() local
937 if (!isSupportedExtension(Ext)) { in parseArchString()
938 StringRef Desc = getExtensionTypeDesc(getExtensionType(Ext)); in parseArchString()
940 Desc.str().c_str(), Ext.str().c_str()); in parseArchString()
1152 for (auto const &Ext : Exts) in updateImplication() local
1153 WorkList.insert(Ext.first); in updateImplication()
1206 for (const char *Ext : RequiredExts) in updateCombination() local
1207 IsAllRequiredFeatureExist &= hasExtension(Ext); in updateCombination()
1227 for (auto const &Ext : Exts) { in updateMinVLen() local
1228 StringRef ExtName = Ext.first; in updateMinVLen()
1240 for (auto const &Ext : Exts) { in updateMaxELen() local
1241 StringRef ExtName = Ext.first; in updateMaxELen()
1263 for (auto const &Ext : Exts) { in toString() local
1264 StringRef ExtName = Ext.first; in toString()
1265 auto ExtInfo = Ext.second; in toString()
1307 bool RISCVISAInfo::isSupportedExtensionWithVersion(StringRef Ext) { in isSupportedExtensionWithVersion() argument
1308 if (Ext.empty()) in isSupportedExtensionWithVersion()
1311 auto Pos = findLastNonVersionCharacter(Ext) + 1; in isSupportedExtensionWithVersion()
1312 StringRef Name = Ext.substr(0, Pos); in isSupportedExtensionWithVersion()
1313 StringRef Vers = Ext.substr(Pos); in isSupportedExtensionWithVersion()
1327 std::string RISCVISAInfo::getTargetFeatureForExtension(StringRef Ext) { in getTargetFeatureForExtension() argument
1328 if (Ext.empty()) in getTargetFeatureForExtension()
1331 auto Pos = findLastNonVersionCharacter(Ext) + 1; in getTargetFeatureForExtension()
1332 StringRef Name = Ext.substr(0, Pos); in getTargetFeatureForExtension()
1334 if (Pos != Ext.size() && !isSupportedExtensionWithVersion(Ext)) in getTargetFeatureForExtension()