Я реализую llvm-mc в компиляторе последующей разработки для архитектуры VLIW. Прежде чем кодировать пакет, мне нужно проверить, что инструкции в этом пакете находятся в правильном порядке. Чтобы проверить этот порядок, мне нужно получить единицы планирования из MCInst, но я не вижу способа сделать это.
В цели Hexagon есть метод HexagonInstrInfo::getUnits(), который реализован следующим образом:
Код: Выделить всё
InstrStage::FuncUnits HexagonInstrInfo::getUnits(const MachineInstr &MI) const {
const InstrItineraryData &II = *Subtarget.getInstrItineraryData();
const InstrStage &IS = *II.beginStage(MI.getDesc().getSchedClass());
return IS.getUnits();
}
Но TargetInstructionInfo недоступна внутри MCCodeEmitter. У меня есть доступ к MCInstr, MCSubtargetInfo, MCInstrInfo и MCContext. (это метод, который я пытаюсь реализовать.)
Подробнее здесь:
https://stackoverflow.com/questions/782 ... of-mcinstr