LLVM 每周 - 第 32 期,2014 年 8 月 11 日
欢迎来到 LLVM 每周的第 32 期,这是一份每周发布的新闻通讯(每周一发布),涵盖 LLVM、Clang 和相关项目的最新进展。LLVM 每周由 Alex Bradbury 带来。订阅未来的期数,请访问 http://llvmweekly.org,并将其转发给您认为可能感兴趣的任何其他人。请将任何提示或反馈发送至 [email protected],或在 Twitter 上发送至 @llvmweekly 或 @asbradbury。
一些读者可能对 lowRISC 感兴趣,这是一个由剑桥大学计算机实验室的我们中的几个人启动的,旨在生产一个完全开源的 SoC 的项目。 我们正在招聘。
本期文章的规范来源 可以在 llvmweekly.org 找到。
来自网络的新闻和文章
Codeplay 在一段时间之前贡献了 LLDB MI(机器接口)前端,现在他们提交了一些额外的功能。为了配合这一点,他们发布了一系列 博客文章,涵盖 MI 驱动程序的实现、如何在 Eclipse 中设置它以及如何添加对新 MI 命令的支持。
McSema 是一个将 x86 程序转换为 LLVM 位码的框架,现在已经 开源。ReCON 会议上关于 McSema 的演讲也已在线发布。
LLVM 开发者大会 2014 的注册现已 开放。活动将于 10 月 28 日至 29 日在圣何塞举行。您可以在 9 月 1 日之前 提交您的演讲/BoF/海报/教程提案。
邮件列表上的内容
Robin Morisset 目前是 Google 的实习生,他 撰写了他计划优化 LLVM 中 C11/C++11 原子的内容。这引发了关于 是否应该在 IR 级别进行这些转换中的一部分 的讨论。
Dan Liew 撰写了一篇关于 重新组织和改进 zorg(LLVM 的测试和构建机器人基础设施)的长篇博文。
Eric Christopher 写信给邮件列表,提醒我们注意 即将进行的 API 更改。这些更改包括修改 getSubtarget/getSubtargetImpl 以接受 Function/MachineFunction,以便可以根据函数上的属性使用子目标。
来自英特尔的 Sergey Ostanevich 分享了在 LLVM 中实现 OpenMP offloading 的 提案。该提案由来自 IBM、英特尔、ANL、TI 和 AMD 的贡献者创建。给出的示例允许代码被 offloaded 到例如 Xeon Phi 协处理器(如果存在)或 GPU。
Delesley Hutchins 分享了他线程安全分析工作的最新进展。这详细介绍了最近添加的负能力补丁。他正在寻求有关如何限制负能力传播的反馈。
LLVM 提交
MachineCombiner 传递的初始工作已完成。这会估计原始指令序列的临界路径长度与变换(合并)后的指令序列的临界路径长度,并选择更快的代码。提交信息中给出的一个示例是在 AArch64 上在 add+mul 和 madd 之间进行选择,并且后续提交为该目标实现了 MachineCombiner。 r214666,r214669。
一些有用的辅助函数已添加到 LLVM C API 中:
LLVM{IsConstantString, GetAsString, GetElementAsConstant}
。 r214976。添加了一大堆 AVX512 指令。 r214719。
AArch64 的 FastISel 现在支持基本参数降低。 r214846。
添加了一个标志,用于尝试在 SLP 矢量化器之前运行循环矢量化器。根据提交信息,最终这应该成为默认值。 r214963。
旧的 JIT 已经快要死了,它已经被删除(对于那些没有密切关注的人来说,3.5 已经分支,所以仍然包含旧的 JIT)。然而,该补丁随后被还原,所以它处于僵尸状态。 r215111。
AArch64 为 Cortex-A57 获得了一个负载平衡传递,该传递试图通过平衡偶数和奇数 FP 寄存器的使用来最大程度地利用可用资源。 r215199。
Clang 提交
线程安全分析获得了对指定负需求的支持。 r214725。
覆盖映射生成已经提交。
-fcoverage-mapping
命令行选项可用于生成覆盖映射信息,然后可以将其与来自基于仪器的分析的执行计数相结合,以执行代码覆盖率分析。 r214752。一个命令行选项,用于限制编译器可以为任意指针假设的对齐方式。 r214911。