mirror of https://github.com/llvm/circt.git
[NFC][FIRRTL] Add an accessor to the cases of instance choices
This commit is contained in:
parent
34c5329073
commit
b45cfc065f
|
@ -199,6 +199,11 @@ def InstanceChoiceOp : HardwareDeclOp<"instance_choice", [
|
|||
return direction::get(getPortDirections()[resultNo]);
|
||||
}
|
||||
|
||||
/// Return the port name for the specified result number.
|
||||
StringAttr getPortName(size_t resultNo) {
|
||||
return cast<StringAttr>(getPortNames()[resultNo]);
|
||||
}
|
||||
|
||||
/// Return the default target attribute.
|
||||
FlatSymbolRefAttr getDefaultTargetAttr() {
|
||||
return getModuleNamesAttr()[0].cast<FlatSymbolRefAttr>();
|
||||
|
@ -211,6 +216,10 @@ def InstanceChoiceOp : HardwareDeclOp<"instance_choice", [
|
|||
|
||||
/// Return the target for an option or the default if none specified.
|
||||
FlatSymbolRefAttr getTargetOrDefaultAttr(OptionCaseOp option);
|
||||
|
||||
/// Return the list of case-module mappings.
|
||||
SmallVector<std::pair<SymbolRefAttr, FlatSymbolRefAttr>, 1>
|
||||
getTargetChoices();
|
||||
}];
|
||||
|
||||
let builders = [
|
||||
|
|
|
@ -2477,6 +2477,19 @@ InstanceChoiceOp::getTargetOrDefaultAttr(OptionCaseOp option) {
|
|||
}
|
||||
return getDefaultTargetAttr();
|
||||
}
|
||||
|
||||
SmallVector<std::pair<SymbolRefAttr, FlatSymbolRefAttr>, 1>
|
||||
InstanceChoiceOp::getTargetChoices() {
|
||||
auto caseNames = getCaseNamesAttr();
|
||||
auto moduleNames = getModuleNamesAttr();
|
||||
SmallVector<std::pair<SymbolRefAttr, FlatSymbolRefAttr>, 1> choices;
|
||||
for (size_t i = 0; i < caseNames.size(); ++i) {
|
||||
choices.emplace_back(caseNames[i].cast<SymbolRefAttr>(),
|
||||
moduleNames[i + 1].cast<FlatSymbolRefAttr>());
|
||||
}
|
||||
|
||||
return choices;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// MemOp
|
||||
|
|
Loading…
Reference in New Issue