3

背景资料:到目前为止,我已经阅读了 llvm 教程,包括: 表生成命令指南

Table Gen 的通用文档,尤其是 Running TableGen 部分

我目前正在为 llvm 的新目标编写代码,我不允许在此处发布。我将 X86 目标用于我的问题的上下文,因为它仍然适用于该目标。

我正在尝试做的事情:我正在尝试使用 tablegen 从 X86RegisterInfo.td 生成记录我正在使用的命令行是这样的:

llvm-tblgen X86RegisterInfo.td -class=Register -I/home/des_fw/fler_llvm/llvm/include

返回此错误

X86RegisterInfo.td:16:43: error: Couldn't find class 'Register'
class X86Reg<string n, bits<16> Enc, list<Register> subregs = []> : Register<n> {
                                      ^

我能够运行上面 Running TableGen 参考中给出的 X86.td 示例命令,所以我非常有信心包含路径 -I/.../... 是正确的,因为如果没有以这种方式编写,命令不运行。我也在同一目录中运行我的命令,../Target/X86,作为有效的示例命令。

使用什么正确命令以便 TableGen 工具生成 X86RegisterInfo.td 文件的记录(或者通常用于 XXXRegisterInfo.td,其中 XXX 是目标名称)?

我对 LLVM 和自定义或编写编译器非常陌生,所以我祈祷只是我不了解如何使用命令行,但如果它也可能是一个完全不同的问题,任何提示我正确的方向都非常感谢。

非常感谢你!

4

1 回答 1

2

我相信我已经找到了自己问题的答案。命令行应该是

llvm-tblgen X86.td -gen-register-info -I/home/des_fw/fler_llvm/llvm/include

因为

“在所有 LLVM 后端,llvm-tblgen 二进制文件将在根 TableGen 文件 .td 上执行,该文件应包括所有其他文件。这保证了所有需要的信息都可以访问,并且 TbleGen 文件中不需要重复。 " (http://llvm.org/docs/TableGen/BackEnds.html#llvm-backends

我用

-gen-register-info

在我的问题中提到的网站上找到的选项:http: //llvm.org/docs/CommandGuide/tblgen.html

所以整个命令行一般是

llvm-tblgen TargetNameHere.td -back-end-opt-for-specific-record-set -I/path/to/file/include/
于 2016-07-21T15:14:06.277 回答