2016-11-17 123 views
1

我尝试做出LLVM后端,我不知道我需要什么来解决这个错误我需要什么llvm存储指令模式?

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

这是IR IM尝试处理

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

,但我不知道是什么DAG我需要能够匹配它的模式。

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

回答

1

我想通了,我一直在寻找这个问题错了问题

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

在功能形式expessed为store(Constant:i32<0>,FrameIndex:i64<0>)或存储常量i32 0在 堆栈帧索引0.

我没有得到的信息是,FrameIndex:i64<0>直接关系到这条线in TargetSelectionDAG.td def frameindex :SDNode<"ISD::FrameIndex",SDTPtrLeaf, [],"FrameIndexSDNode">;

so FrameIndex = frameindex

相关问题