diff options
| author | Fangrui Song <maskray@google.com> | 2019-04-11 10:25:41 +0000 |
|---|---|---|
| committer | Fangrui Song <maskray@google.com> | 2019-04-11 10:25:41 +0000 |
| commit | 71cce580b91c8333880addb2df9eca09d97d8bc8 (patch) | |
| tree | 0299ad2f098e71c3728a521cf7ff6e5d31a34a81 /llvm/tools/llvm-exegesis/lib/BenchmarkResult.cpp | |
| parent | 2050dff996a27b9fdb9b7365fe8659383de0824d (diff) | |
| download | bcm5719-llvm-71cce580b91c8333880addb2df9eca09d97d8bc8.tar.gz bcm5719-llvm-71cce580b91c8333880addb2df9eca09d97d8bc8.zip | |
Use llvm::lower_bound. NFC
llvm-svn: 358161
Diffstat (limited to 'llvm/tools/llvm-exegesis/lib/BenchmarkResult.cpp')
| -rw-r--r-- | llvm/tools/llvm-exegesis/lib/BenchmarkResult.cpp | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/llvm/tools/llvm-exegesis/lib/BenchmarkResult.cpp b/llvm/tools/llvm-exegesis/lib/BenchmarkResult.cpp index 84ef7ac0f27..4a696e2e7d3 100644 --- a/llvm/tools/llvm-exegesis/lib/BenchmarkResult.cpp +++ b/llvm/tools/llvm-exegesis/lib/BenchmarkResult.cpp @@ -21,7 +21,6 @@ static constexpr const char kIntegerPrefix[] = "i_0x"; static constexpr const char kDoublePrefix[] = "f_"; static constexpr const char kInvalidOperand[] = "INVALID"; -static constexpr llvm::StringLiteral kNoRegister("%noreg"); namespace llvm { @@ -48,9 +47,7 @@ struct YamlContext { llvm::StringMap<unsigned> generateRegNameToRegNoMapping(const llvm::MCRegisterInfo &RegInfo) { llvm::StringMap<unsigned> Map(RegInfo.getNumRegs()); - // Special-case RegNo 0, which would otherwise be spelled as ''. - Map[kNoRegister] = 0; - for (unsigned I = 1, E = RegInfo.getNumRegs(); I < E; ++I) + for (unsigned I = 0, E = RegInfo.getNumRegs(); I < E; ++I) Map[RegInfo.getName(I)] = I; assert(Map.size() == RegInfo.getNumRegs() && "Size prediction failed"); return Map; @@ -86,21 +83,18 @@ struct YamlContext { llvm::raw_string_ostream &getErrorStream() { return ErrorStream; } llvm::StringRef getRegName(unsigned RegNo) { - // Special case: RegNo 0 is NoRegister. We have to deal with it explicitly. - if (RegNo == 0) - return kNoRegister; const llvm::StringRef RegName = State->getRegInfo().getName(RegNo); if (RegName.empty()) ErrorStream << "No register with enum value '" << RegNo << "'\n"; return RegName; } - llvm::Optional<unsigned> getRegNo(llvm::StringRef RegName) { + unsigned getRegNo(llvm::StringRef RegName) { auto Iter = RegNameToRegNo.find(RegName); if (Iter != RegNameToRegNo.end()) return Iter->second; ErrorStream << "No register with name '" << RegName << "'\n"; - return llvm::None; + return 0; } private: @@ -148,8 +142,8 @@ private: return llvm::MCOperand::createImm(IntValue); if (tryDeserializeFPOperand(String, DoubleValue)) return llvm::MCOperand::createFPImm(DoubleValue); - if (auto RegNo = getRegNo(String)) - return llvm::MCOperand::createReg(*RegNo); + if (unsigned RegNo = getRegNo(String)) + return llvm::MCOperand::createReg(RegNo); if (String != kInvalidOperand) ErrorStream << "Unknown Operand: '" << String << "'\n"; return {}; @@ -264,9 +258,8 @@ template <> struct ScalarTraits<exegesis::RegisterValue> { String.split(Pieces, "=0x", /* MaxSplit */ -1, /* KeepEmpty */ false); YamlContext &Context = getTypedContext(Ctx); - llvm::Optional<unsigned> RegNo; - if (Pieces.size() == 2 && (RegNo = Context.getRegNo(Pieces[0]))) { - RV.Register = *RegNo; + if (Pieces.size() == 2) { + RV.Register = Context.getRegNo(Pieces[0]); const unsigned BitsNeeded = llvm::APInt::getBitsNeeded(Pieces[1], kRadix); RV.Value = llvm::APInt(BitsNeeded, Pieces[1], kRadix); } else { |

