gpt4 book ai didi

llvm-ir - 了解 llvm SelectionDAG

转载 作者:行者123 更新时间:2023-12-04 19:06:55 33 4
gpt4 key购买 nike

对于一个简单的 llvm IR:

define i32 @test(i32 %X, i32 %Y) {
%Z = udiv i32 %X, %Y
ret i32 %Z
}

SelectionDAG 图比我想象的要复杂:

image of SelectionDAG graph

为什么是 CopyFromReg需要,为什么不连接 vreg0vreg1udiv直接地?

我应该如何阅读图表,来自 EntryTokenGraphRoot还是相反的方向?

最佳答案

函数参数是调用约定特定的,它们在 的构建过程中被降低了。选择DAG ( SelectionDAGISel::SelectAllBasicBlocks 调用 SelectionDAGISel::LowerArguments ),架构特定的 LowerArguments 通常会创建 CopyFromReg将虚拟寄存器中的参数表示为 SDValue并链接 CopyFromReg选择DAG .

额外的 CopyFromReg 附加以维护 EntryToken 的链,并存储其他不属于 RegisterSDNode 的信息。 , 喜欢 DebugLoc .

这是一个例子 CopyFromReg 未附加(缺少蓝色虚线箭头):

enter image description here

关于llvm-ir - 了解 llvm SelectionDAG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22189410/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com