blob: 54deb63c998fcbd120e0d07ad8623a1c8f59031f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
// SPDX-License-Identifier: GPL-3.0-or-later
#include "TableGenBackends.h"
#include <ranges>
#include <sstream>
#include <string>
namespace rcc::targetgen {
std::string emitRegisterBanks(const NormalizedTargetModel &Model) {
std::ostringstream Output;
for (const NormalizedRegisterBank &Bank : Model.RegisterBanks) {
Output << " {RegisterBankID::fromValue(" << Bank.ID << "), ";
appendQuoted(Output, Bank.Name);
Output << ", " << Bank.MaximumSizeInBits << ", {";
for (const std::uint32_t ClassID : Bank.RegisterClasses) {
const auto Position =
std::ranges::find(Model.RegisterClasses, ClassID, &NormalizedRegisterClass::ID);
Output << "RegisterClassID::fromValue(" << Position->ID << "), ";
}
Output << "}},\n";
}
return Output.str();
}
} // namespace rcc::targetgen
|