llvm - 反转 LLVM TableGen 指令表示中的位
问题描述
在向 LLVM 添加对不寻常 MIPS 指令集的支持时,我遇到了一个问题:假设我有一个与此类似的指令编码
class VFPU_C_FMT<bits<32> instr, dag outs, string name, list<dag> pattern>:
InstSE<outs, (ins), !strconcat(name, "\t$rd"), pattern, II_MYITIN, FrmCustom>
{
bits<7> rd;
let Opcode = instr{31-26};
let Inst{25-7} = instr{25-7};
let Inst{6-0} = rd;
}
rd
指令的寄存器操作数在哪里。现在假设一条特定指令要求将其操作数的第 6 位与其规范表示反转。我想表达的东西相当于
let Inst{5} = !not(Inst{5});
这实际上不是有效的 TableGen 代码。
解决方案
推荐阅读
- arrays - 导致恐慌的原因:运行时错误:索引超出范围 [4],长度为 4,即使数组已初始化为动态数组
- networking - 使用守护程序集的 k3s 进入我的应用程序的服务路由不起作用
- c# - 错误问题(当前名称在 中不存在)
- html - 如何对齐 div 和 span
- sql - 如何在 Oracle 10G 中更改列的长度(以字符为单位)?
- reactjs - DOM元素不会在反应弹簧动画中被删除
- javascript - 反应 this.state.bottles.map 不是一个函数
- ubuntu - 无法打开 OMNeT++ IDE
- python - 创建将消息作为嵌入消息移动的 Discord Bot 方法
- python - Python:TypeError 字符串索引必须是整数