1

我正在创建一个 LLVM MachineFunctionPass。这是预注册分配通行证。我想在某个时候添加一个新的 MachineInstr (我创建的)。我正在使用 BuildMI() 创建新指令,然后使用 MachineInstr::addOperand() 填充它。我想添加一个新的虚拟寄存器作为操作数之一。做这个的最好方式是什么?

我读过 MachineRegisterInfo::createVirtualRegister() 可以使用,但它需要一个 TargetRegisterClass 参数,我不知道如何得到它。我没有任何运气搜索文档。任何帮助将不胜感激!

4

1 回答 1

2

有很多方法可以获得它。最有用的几个是:

  1. 询问您MachineRegisterInfo已经拥有的一些现有寄存器的类别。您可以通过调用方法从 a中获取MachineRegisterInfo( )。然后,使用.MRIMachineFunctiongetRegInfoMachineRegisterInfo::getRegClass
  2. 问你的TargetLowering::getRegClassFor。你可以给它一个MVT. 有关include/llvm/Target/TargetLowering.h更多详细信息,请参阅。

通过 LLVM 源代码对上述方法进行 grepping 应该会为您提供大量的使用示例。

于 2013-09-07T03:22:15.787 回答