微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何查看llvm优化前后的差异Selectiondag

如何解决如何查看llvm优化前后的差异Selectiondag

我最近阅读了“LLVM Essentials”一书,其中描述了“优化Selectiondag”,并举了一个例子如下:

unsigned hadd(uint32x4_t a) {
    return a[0] + a[1] + a[2] + a[3];
}

它会输出如下汇编代码

mov w8,v0.s[3]
mov w9,v0.s[2]
add w8,w8,w9
mov w9,v0.s[1]
add w8,w9
fmov w9,s0
add w0,w9
ret

它会一个一个添加每个数组元素。

在像 AARCH64 这样具有向量加法指令的 ARM 架构中,它会发出更高效的代码,例如:

addv s0,v0.4s
fmov w0,s0
ret

我使用命令 llc -mtriple=aarch64-linux-gnu -verify-machineinstrs hadd.ll 测试它,但没有得到相同的结果,它总是像以前一样发出汇编代码。 我是否遗漏了什么,我该怎么做才能获得书中所说的优化结果? 感谢您的回复

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。