【问题标题】:what llvm store instruction pattern do i need?我需要什么 llvm 存储指令模式?
【发布时间】:2016-11-17 20:40:59
【问题描述】:

我正在尝试做一个 llvm 后端,但我不知道我需要什么来修复这个错误

LLVM ERROR: Cannot select: t5: ch = store<ST4[%retval]> t0, Constant:i32<0>, FrameIndex:i64<0>, undef:i64

这是我正在尝试处理的 ir

define i32 @main() #0 {
%retval = alloca i32, align 4
store i32 0, i32* %retval, align 4
ret i32 0
}

但我不知道我需要什么 dag 模式才能匹配它。

包含我的 Arch 支持的一些指令的 tablegen 文件在这里https://github.com/jfmherokiller/customllvm/blob/master/llvm/lib/Target/ZCPU/zcpuInstr.td

【问题讨论】:

    标签: llvm


    【解决方案1】:

    我刚刚发现问题我看错了

    store<ST4[%retval]> t0, Constant:i32<0>, FrameIndex:i64<0>, undef:i64
    

    可以以函数形式表达为store(Constant:i32&lt;0&gt;,FrameIndex:i64&lt;0&gt;)或将常量i32 0存储在 堆栈帧索引 0。

    我没有得到的信息是 FrameIndex:i64&lt;0&gt; 与 TargetSelectionDAG.td 中的这一行直接相关 def frameindex :SDNode&lt;"ISD::FrameIndex",SDTPtrLeaf, [],"FrameIndexSDNode"&gt;;

    所以 FrameIndex = 帧索引

    【讨论】:

      猜你喜欢
      • 2012-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      相关资源
      最近更新 更多