Lines Matching refs:Ext

116 static bool stripExperimentalPrefix(StringRef &Ext) {  in stripExperimentalPrefix()  argument
117 return Ext.consume_front("experimental-"); in stripExperimentalPrefix()
127 static size_t findFirstNonVersionCharacter(StringRef Ext) { in findFirstNonVersionCharacter() argument
128 assert(!Ext.empty() && in findFirstNonVersionCharacter()
131 int Pos = Ext.size() - 1; in findFirstNonVersionCharacter()
132 while (Pos > 0 && isDigit(Ext[Pos])) in findFirstNonVersionCharacter()
134 if (Pos > 0 && Ext[Pos] == 'p' && isDigit(Ext[Pos - 1])) { in findFirstNonVersionCharacter()
136 while (Pos > 0 && isDigit(Ext[Pos])) in findFirstNonVersionCharacter()
143 FindByName(StringRef Ext) : Ext(Ext){}; in FindByName()
144 StringRef Ext; member
146 return ExtInfo.Name == Ext; in operator ()()
167 RISCVExtensionInfo Ext; in addExtension() local
168 Ext.ExtName = ExtName.str(); in addExtension()
169 Ext.MajorVersion = MajorVersion; in addExtension()
170 Ext.MinorVersion = MinorVersion; in addExtension()
171 Exts[ExtName.str()] = Ext; in addExtension()
174 static StringRef getExtensionTypeDesc(StringRef Ext) { in getExtensionTypeDesc() argument
175 if (Ext.startswith("sx")) in getExtensionTypeDesc()
177 if (Ext.startswith("s")) in getExtensionTypeDesc()
179 if (Ext.startswith("x")) in getExtensionTypeDesc()
181 if (Ext.startswith("z")) in getExtensionTypeDesc()
186 static StringRef getExtensionType(StringRef Ext) { in getExtensionType() argument
187 if (Ext.startswith("sx")) in getExtensionType()
189 if (Ext.startswith("s")) in getExtensionType()
191 if (Ext.startswith("x")) in getExtensionType()
193 if (Ext.startswith("z")) in getExtensionType()
198 static Optional<RISCVExtensionVersion> isExperimentalExtension(StringRef Ext) { in isExperimentalExtension() argument
200 llvm::find_if(SupportedExperimentalExtensions, FindByName(Ext)); in isExperimentalExtension()
207 bool RISCVISAInfo::isSupportedExtensionFeature(StringRef Ext) { in isSupportedExtensionFeature() argument
208 bool IsExperimental = stripExperimentalPrefix(Ext); in isSupportedExtensionFeature()
211 return llvm::any_of(SupportedExperimentalExtensions, FindByName(Ext)); in isSupportedExtensionFeature()
213 return llvm::any_of(SupportedExtensions, FindByName(Ext)); in isSupportedExtensionFeature()
216 bool RISCVISAInfo::isSupportedExtension(StringRef Ext) { in isSupportedExtension() argument
217 return llvm::any_of(SupportedExtensions, FindByName(Ext)) || in isSupportedExtension()
218 llvm::any_of(SupportedExperimentalExtensions, FindByName(Ext)); in isSupportedExtension()
221 bool RISCVISAInfo::isSupportedExtension(StringRef Ext, unsigned MajorVersion, in isSupportedExtension() argument
224 return ExtInfo.Name == Ext && (MajorVersion == ExtInfo.Version.Major) && in isSupportedExtension()
231 bool RISCVISAInfo::hasExtension(StringRef Ext) const { in hasExtension()
232 stripExperimentalPrefix(Ext); in hasExtension()
234 if (!isSupportedExtension(Ext)) in hasExtension()
237 return Exts.count(Ext.str()) != 0; in hasExtension()
242 static int singleLetterExtensionRank(char Ext) { in singleLetterExtensionRank() argument
243 switch (Ext) { in singleLetterExtensionRank()
252 size_t Pos = AllStdExts.find(Ext); in singleLetterExtensionRank()
257 Rank = AllStdExts.size() + (Ext - 'a'); in singleLetterExtensionRank()
325 for (auto const &Ext : Exts) { in toFeatures() local
326 StringRef ExtName = Ext.first; in toFeatures()
344 static Error getExtensionVersion(StringRef Ext, StringRef In, unsigned &Major, in getExtensionVersion() argument
363 "minor version number missing after 'p' for extension '" + Ext + "'"); in getExtensionVersion()
370 "Failed to parse major version number for extension '" + Ext + "'"); in getExtensionVersion()
375 "Failed to parse minor version number for extension '" + Ext + "'"); in getExtensionVersion()
385 if (Ext.size() > 1 && In.size()) { in getExtensionVersion()
392 if (auto ExperimentalExtension = isExperimentalExtension(Ext)) { in getExtensionVersion()
396 Ext.str() + "'"; in getExtensionVersion()
404 Ext.str() + "`"; in getExtensionVersion()
414 Error += " for experimental extension '" + Ext.str() + in getExtensionVersion()
424 if (Ext == "g") in getExtensionVersion()
428 if (auto DefaultVersion = findDefaultVersion(Ext)) { in getExtensionVersion()
437 if (RISCVISAInfo::isSupportedExtension(Ext, Major, Minor)) in getExtensionVersion()
443 Error += " for extension '" + Ext.str() + "'"; in getExtensionVersion()
550 for (auto Ext : {"i", "m", "a", "f", "d"}) in parseArchString()
551 if (auto Version = findDefaultVersion(Ext)) in parseArchString()
552 ISAInfo->addExtension(Ext, Version->Major, Version->Minor); in parseArchString()
639 for (StringRef Ext : Split) { in parseArchString() local
640 if (Ext.empty()) in parseArchString()
644 StringRef Type = getExtensionType(Ext); in parseArchString()
645 StringRef Desc = getExtensionTypeDesc(Ext); in parseArchString()
646 auto Pos = findFirstNonVersionCharacter(Ext) + 1; in parseArchString()
647 StringRef Name(Ext.substr(0, Pos)); in parseArchString()
648 StringRef Vers(Ext.substr(Pos)); in parseArchString()
652 "invalid extension prefix '" + Ext + "'"); in parseArchString()
661 Desc.str().c_str(), Ext.str().c_str()); in parseArchString()
687 for (auto Ext : AllExts) { in parseArchString() local
688 if (!isSupportedExtension(Ext)) { in parseArchString()
689 StringRef Desc = getExtensionTypeDesc(getExtensionType(Ext)); in parseArchString()
691 Desc.str().c_str(), Ext.str().c_str()); in parseArchString()
836 for (auto const &Ext : Exts) in updateImplication() local
837 WorkList.insert(Ext.first); in updateImplication()
877 for (const char *Ext : RequiredExts) in updateCombination() local
878 IsAllRequiredFeatureExist &= hasExtension(Ext); in updateCombination()
898 for (auto const &Ext : Exts) { in updateMinVLen() local
899 StringRef ExtName = Ext.first; in updateMinVLen()
911 for (auto const &Ext : Exts) { in updateMaxELen() local
912 StringRef ExtName = Ext.first; in updateMaxELen()
934 for (auto const &Ext : Exts) { in toString() local
935 StringRef ExtName = Ext.first; in toString()
936 auto ExtInfo = Ext.second; in toString()
946 for (auto const &Ext : Exts) { in toFeatureVector() local
947 std::string ExtName = Ext.first; in toFeatureVector()