实现关于目标处理器指令集的 TableGen 描述 以及继承并实现 TargetInstrInfo 类,也即需要实现文件“XXXInstrInfo.td”、 “XXXInstrInfo.h”和“XXXInstrInfo.cpp”。
在文件“XXXInstrInfo.td”中,需要描述目标处理器的指令集,指令功能,指令的寻址方式,指令操作数,指令编码,指令汇编代码的输出格式,以及指令与 LLVM 虚拟指令集的匹配关系等,这些描述可以由以下几个 TableGen 提供的记录类实现:
Operand 类用于描述指令操作数,包含的数据有:
| 类型 | 说明 |
|---|---|
| ValueType Type | 操作数的数据类型 |
| string PrintMethod | 打印输出操作数的函数的名字 |
| int NumMIOperands | 操作数对应的目标处理器的操作数的个数 |
| dag MIOperandInfo | 操作数对应的目标处理器的操作数的信息 |
记录定义 ops,用于标识指令的操作数列表。例如:
ops GPRC:$dst, GPRC:$src,表明指令有两个操作数 dst 和 src,且都是 GPRC 类型的。
Predicate 类 用于描述指令进行匹配选择时所需的特定条件,Requires 类为这些 特定条件的组合,它是一个以 Predicate 类为元素的列表。这两个记录类的结

最低0.47元/天 解锁文章
7408

被折叠的 条评论
为什么被折叠?



