LLVM tablegen中InstrStage中的周期和下一个周期之间有什么区别?

LLVM tablegen中InstrStage中的周期和下一个周期之间有什么区别?,llvm,Llvm,我正在努力学习LLVM tablegen。现在我正试图理解如何定义指令阶段。我在中发现了以下评论: //指令阶段-这些值表示指令中的非流水线步骤 //指令的执行。Cycles表示循环数 //完成该阶段所需的离散时间段。单位代表 //可用于完成任务的功能单元的选择 //舞台。直觉1,直觉2。NextCycles表示有多少个 //周期应从本阶段开始到本阶段开始 //行程的下一阶段。例如: // //可通过以下两种方式之一指定阶段: // //InstrStage-TimeInc默认为周期 //Ins

我正在努力学习LLVM tablegen。现在我正试图理解如何定义指令阶段。我在中发现了以下评论:

//指令阶段-这些值表示指令中的非流水线步骤
//指令的执行。Cycles表示循环数
//完成该阶段所需的离散时间段。单位代表
//可用于完成任务的功能单元的选择
//舞台。直觉1,直觉2。NextCycles表示有多少个
//周期应从本阶段开始到本阶段开始
//行程的下一阶段。例如:
//
//可通过以下两种方式之一指定阶段:
//
//InstrStage-TimeInc默认为周期
//InstrStage-时间公司
//
cycle和NextCycle的区别是什么?在我看来,它们是一样的。我错过了什么


非常感谢您的帮助。

如果您刚刚开始学习LLVM,我不会担心行程安排。它们的实现是可选的,而且会带来很多额外的麻烦。(另外,一旦你有了一个基本的工作后端,就不难添加它们。)@ChengSun谢谢你的建议。不幸的是,对我来说后端已经实现了,我刚刚开始使用LLVM。我需要修改现有的后端。有关于如何继续的建议吗?如果您尝试在llvm开发人员邮件列表或IRC上询问,您可能会得到更深入的帮助:@ChengSun您可以推荐什么IRC?
// Instruction stage - These values represent a non-pipelined step in
// the execution of an instruction.  Cycles represents the number of
// discrete time slots needed to complete the stage.  Units represent
// the choice of functional units that can be used to complete the
// stage.  Eg. IntUnit1, IntUnit2. NextCycles indicates how many
// cycles should elapse from the start of this stage to the start of
// the next stage in the itinerary.  For example:
//
// A stage is specified in one of two ways:
//
//   InstrStage<1, [FU_x, FU_y]>     - TimeInc defaults to Cycles
//   InstrStage<1, [FU_x, FU_y], 0>  - TimeInc explicit
//