diff options
author | orivej <orivej@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
commit | 718c552901d703c502ccbefdfc3c9028d608b947 (patch) | |
tree | 46534a98bbefcd7b1f3faa5b52c138ab27db75b7 /contrib/libs/llvm12/utils/TableGen/CodeGenHwModes.cpp | |
parent | e9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (diff) | |
download | ydb-718c552901d703c502ccbefdfc3c9028d608b947.tar.gz |
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/llvm12/utils/TableGen/CodeGenHwModes.cpp')
-rw-r--r-- | contrib/libs/llvm12/utils/TableGen/CodeGenHwModes.cpp | 226 |
1 files changed, 113 insertions, 113 deletions
diff --git a/contrib/libs/llvm12/utils/TableGen/CodeGenHwModes.cpp b/contrib/libs/llvm12/utils/TableGen/CodeGenHwModes.cpp index 2fec46c441..a2b2b1b043 100644 --- a/contrib/libs/llvm12/utils/TableGen/CodeGenHwModes.cpp +++ b/contrib/libs/llvm12/utils/TableGen/CodeGenHwModes.cpp @@ -1,113 +1,113 @@ -//===--- CodeGenHwModes.cpp -----------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// Classes to parse and store HW mode information for instruction selection -//===----------------------------------------------------------------------===// - -#include "CodeGenHwModes.h" -#include "llvm/Support/Debug.h" -#include "llvm/Support/raw_ostream.h" -#include "llvm/TableGen/Error.h" -#include "llvm/TableGen/Record.h" - -using namespace llvm; - -StringRef CodeGenHwModes::DefaultModeName = "DefaultMode"; - -HwMode::HwMode(Record *R) { - Name = R->getName(); - Features = std::string(R->getValueAsString("Features")); -} - -LLVM_DUMP_METHOD -void HwMode::dump() const { - dbgs() << Name << ": " << Features << '\n'; -} - -HwModeSelect::HwModeSelect(Record *R, CodeGenHwModes &CGH) { - std::vector<Record*> Modes = R->getValueAsListOfDefs("Modes"); - std::vector<Record*> Objects = R->getValueAsListOfDefs("Objects"); - if (Modes.size() != Objects.size()) { - PrintError(R->getLoc(), "in record " + R->getName() + - " derived from HwModeSelect: the lists Modes and Objects should " - "have the same size"); - report_fatal_error("error in target description."); - } - for (unsigned i = 0, e = Modes.size(); i != e; ++i) { - unsigned ModeId = CGH.getHwModeId(Modes[i]->getName()); - Items.push_back(std::make_pair(ModeId, Objects[i])); - } -} - -LLVM_DUMP_METHOD -void HwModeSelect::dump() const { - dbgs() << '{'; - for (const PairType &P : Items) - dbgs() << " (" << P.first << ',' << P.second->getName() << ')'; - dbgs() << " }\n"; -} - -CodeGenHwModes::CodeGenHwModes(RecordKeeper &RK) : Records(RK) { - std::vector<Record*> MRs = Records.getAllDerivedDefinitions("HwMode"); - // The default mode needs a definition in the .td sources for TableGen - // to accept references to it. We need to ignore the definition here. - for (auto I = MRs.begin(), E = MRs.end(); I != E; ++I) { - if ((*I)->getName() != DefaultModeName) - continue; - MRs.erase(I); - break; - } - - for (Record *R : MRs) { - Modes.emplace_back(R); - unsigned NewId = Modes.size(); - ModeIds.insert(std::make_pair(Modes[NewId-1].Name, NewId)); - } - - std::vector<Record*> MSs = Records.getAllDerivedDefinitions("HwModeSelect"); - for (Record *R : MSs) { - auto P = ModeSelects.emplace(std::make_pair(R, HwModeSelect(R, *this))); - assert(P.second); - (void)P; - } -} - -unsigned CodeGenHwModes::getHwModeId(StringRef Name) const { - if (Name == DefaultModeName) - return DefaultMode; - auto F = ModeIds.find(Name); - assert(F != ModeIds.end() && "Unknown mode name"); - return F->second; -} - -const HwModeSelect &CodeGenHwModes::getHwModeSelect(Record *R) const { - auto F = ModeSelects.find(R); - assert(F != ModeSelects.end() && "Record is not a \"mode select\""); - return F->second; -} - -LLVM_DUMP_METHOD -void CodeGenHwModes::dump() const { - dbgs() << "Modes: {\n"; - for (const HwMode &M : Modes) { - dbgs() << " "; - M.dump(); - } - dbgs() << "}\n"; - - dbgs() << "ModeIds: {\n"; - for (const auto &P : ModeIds) - dbgs() << " " << P.first() << " -> " << P.second << '\n'; - dbgs() << "}\n"; - - dbgs() << "ModeSelects: {\n"; - for (const auto &P : ModeSelects) { - dbgs() << " " << P.first->getName() << " -> "; - P.second.dump(); - } - dbgs() << "}\n"; -} +//===--- CodeGenHwModes.cpp -----------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// Classes to parse and store HW mode information for instruction selection +//===----------------------------------------------------------------------===// + +#include "CodeGenHwModes.h" +#include "llvm/Support/Debug.h" +#include "llvm/Support/raw_ostream.h" +#include "llvm/TableGen/Error.h" +#include "llvm/TableGen/Record.h" + +using namespace llvm; + +StringRef CodeGenHwModes::DefaultModeName = "DefaultMode"; + +HwMode::HwMode(Record *R) { + Name = R->getName(); + Features = std::string(R->getValueAsString("Features")); +} + +LLVM_DUMP_METHOD +void HwMode::dump() const { + dbgs() << Name << ": " << Features << '\n'; +} + +HwModeSelect::HwModeSelect(Record *R, CodeGenHwModes &CGH) { + std::vector<Record*> Modes = R->getValueAsListOfDefs("Modes"); + std::vector<Record*> Objects = R->getValueAsListOfDefs("Objects"); + if (Modes.size() != Objects.size()) { + PrintError(R->getLoc(), "in record " + R->getName() + + " derived from HwModeSelect: the lists Modes and Objects should " + "have the same size"); + report_fatal_error("error in target description."); + } + for (unsigned i = 0, e = Modes.size(); i != e; ++i) { + unsigned ModeId = CGH.getHwModeId(Modes[i]->getName()); + Items.push_back(std::make_pair(ModeId, Objects[i])); + } +} + +LLVM_DUMP_METHOD +void HwModeSelect::dump() const { + dbgs() << '{'; + for (const PairType &P : Items) + dbgs() << " (" << P.first << ',' << P.second->getName() << ')'; + dbgs() << " }\n"; +} + +CodeGenHwModes::CodeGenHwModes(RecordKeeper &RK) : Records(RK) { + std::vector<Record*> MRs = Records.getAllDerivedDefinitions("HwMode"); + // The default mode needs a definition in the .td sources for TableGen + // to accept references to it. We need to ignore the definition here. + for (auto I = MRs.begin(), E = MRs.end(); I != E; ++I) { + if ((*I)->getName() != DefaultModeName) + continue; + MRs.erase(I); + break; + } + + for (Record *R : MRs) { + Modes.emplace_back(R); + unsigned NewId = Modes.size(); + ModeIds.insert(std::make_pair(Modes[NewId-1].Name, NewId)); + } + + std::vector<Record*> MSs = Records.getAllDerivedDefinitions("HwModeSelect"); + for (Record *R : MSs) { + auto P = ModeSelects.emplace(std::make_pair(R, HwModeSelect(R, *this))); + assert(P.second); + (void)P; + } +} + +unsigned CodeGenHwModes::getHwModeId(StringRef Name) const { + if (Name == DefaultModeName) + return DefaultMode; + auto F = ModeIds.find(Name); + assert(F != ModeIds.end() && "Unknown mode name"); + return F->second; +} + +const HwModeSelect &CodeGenHwModes::getHwModeSelect(Record *R) const { + auto F = ModeSelects.find(R); + assert(F != ModeSelects.end() && "Record is not a \"mode select\""); + return F->second; +} + +LLVM_DUMP_METHOD +void CodeGenHwModes::dump() const { + dbgs() << "Modes: {\n"; + for (const HwMode &M : Modes) { + dbgs() << " "; + M.dump(); + } + dbgs() << "}\n"; + + dbgs() << "ModeIds: {\n"; + for (const auto &P : ModeIds) + dbgs() << " " << P.first() << " -> " << P.second << '\n'; + dbgs() << "}\n"; + + dbgs() << "ModeSelects: {\n"; + for (const auto &P : ModeSelects) { + dbgs() << " " << P.first->getName() << " -> "; + P.second.dump(); + } + dbgs() << "}\n"; +} |