2021-6-9 13:28总的来说,LLVM具有精心设计的中间表示(IR),该代表在语言参考中指定。但是,已经有许多设计错误的领域。虽然LLVM项目一般开放待解决此类问题,但核心红外设计中的错误往往牢固地嵌入代码库中,使其难以在实践中进行修复。这篇博文讨论了一些问题。
在中端,我们通常认为变换不是优化,而是作为规范化。有许多不同的方法来编......
2021-6-5 0:56在本系列中,我们将探讨如何在Haskell中为LLVM的小型C子集编写编译器。我们的语言Micro C,基本上是真实C的小子集。我们有基本的数字类型,真正的BOOL类型,指针和结构。在系列末尾,我们' LL有一个漂亮的可执行文件,MCC(Micro C编译器),它需要一个.mc源文件并生成可执行文件。
K......
2021-5-13 8:7在发布和分享上一篇关于IRC上的朋友后的工具链,我被问到我是否想尝试在160核心手臂机上做同样的事情。摘掉我的答案是留给读者的练习:-)
系统i' m使用此实验是bm.standard.a1.160来自Oracle云的裸金属,它具有双插座主板,具有两个80cores Ampere Altra CPU,总共1......
2021-4-16 19:57LLVM.Experishive.vector.Reeduce内在的内在学系已重新命名为从名称中删除“实验”,反映其现在在IR中的完全支持。
由纯CMAKE方法删除了用于描述LLVM组件结构的内部LLVM-Build Python脚本和用于描述LLVM组件结构的关联LLVMBuild.txtfiles,其中每个组件......
2021-4-14 21:19随着LLVM 12.0.0的即将发布,32位ARM目标已获得机器外侧型代码大小优化的全部支持,用于ARM和Thumb-2指令集。通过此优化提供的预期代码大小增益平均约为5%(您可以跳转到结果部分以获取更多详细信息)。默认情况下未打开(请参阅如何使用IT部分),但我们的目标是使其在LLVM 13.0.0内的所有ARM核......
2021-4-10 4:40请注意,这不是对这些语言中的任何一种的认可或批评。它只是我发现有趣的东西,LLVM如何处理两者之间的代码。这是一个实现QUIRK,而不是语言问题。
LLVM项目是一种模块化的工具集,使得编译器更容易设计和实现编译器。 LLVM最着名的部分是他们的中间代表性; IR短暂。 LLVM的IR是一个非常强大的工具,旨在使优......
2021-2-6 19:52Enzyme项目是用于执行可静态分析的LLVM IR的反向模式自动区分(AD)的工具。这使开发人员可以使用酶自动创建其源代码的渐变,而无需进行大量额外工作。
通过在优化后区分代码,Enzyme能够比在优化之前区分程序的现有工具创建更快的派生工具。
可选的预处理阶段,执行较小的转换,这些转换通常对AD有所帮......
2020-12-30 0:47#26oct20软件实验室。亚历山大伯格完美的实现不是在没有什么可添加的东西时,而是在没有其他东西可取的时候实现的(Antoine de Saint-Exupery)PicoLisp系统================== = _PI_co Lisp不是_CO_mmon LispPicoLisp可以从两个不同的角度来......
2020-12-26 7:44本系列的编译器教程适用于不只是想要创建玩具语言而想要对象的人。您想要多态。您想要并发。您想要垃圾回收。等一下你不要GC?好的,不用担心,我们不会那样做:P
如果您在此阶段刚刚加入该系列,这里有个简短的回顾。我们正在设计一种Java风格的并发面向对象编程语言Bolt。我们已经完成了编译器前端,在其中进行了解析,类型检......
2020-12-9 19:38假设您是一位机器学习研究人员,试图建立一个可以帮助计划COVID-19大流行的模型。您想将疾病模拟器集成到模型中,但是它是用C ++编程语言编写的,而不是使用现有的机器学习工作流程(如PyTorch或TensorFlo w)编写的。
传统上,这意味着您将需要花费更多的时间来学习C ++并在其他框架中重写它,而不是实......
2020-12-4 20:28QBE和LLVM都是使用SSArepresentation的编译器后端。本文将解释为什么LLVM不会使QBE成为冗余项目。显然,由于我写的东西,所以后面的一切都是有偏见的。
它不能解决构思行业级语言时面临的所有问题。如果您想了解一些语言方面的想法,则使用LLVM就像用卡车拖运背包,而使用QBE则更像是骑自行车。......
2020-10-29 10:37此回购包含部分LLVM项目的独立Bazel构建配置,这些配置可由使用Bazel构建系统的相关项目共享。
它类似于TensorFlow项目中LLVM和MLIR的构建文件,但旨在适合更通用的用途。
MLIR支持CUDA,并且禁用了mlir-vulkan-runner。LLVM不会进行配置检测,并在配置中硬编码值。
这些构......
2020-10-13 20:0增加了调用点属性Vector-Function-ABI-Variant来描述标量函数和向量函数之间的映射,以实现调用点的矢量化。属性提供的信息通过VFDatabase类提供的API进行接口。当扫描与标量调用相关联的向量函数集时,循环向量器现在依赖于VFDatabase,而不是TargetLibraryInfo。
指针......
2020-9-28 23:24虽然还没有发布1.0版,但Zig即将达到成熟和稳定的新水平。
在早期,Zig只是LLVM面前的一个薄薄的前端。这对于快速入门和填补Andrew作为编译器开发人员的知识空白很有帮助。现在,自行车的训练轮正在脱落,LLVM正在转变为一个可选部件。
用新的纯Zig版本替换当前C++编译器实现的工作已经开始。转向自托管实现通......
2020-9-18 1:19模糊是一种软件测试方法,它将错误的数据作为输入传递给程序,并监控其是否有错误行为。如今,模糊是发现软件安全问题的最有效的方法之一。2014年,MichałZalewski提出了美国模糊LOP,这是第一个有封面的引导模糊。这开启了市场上模糊解决方案和技术的现代世界。
在本文中,我们将讨论libFuzzer,这是一个允许......
2020-9-11 21:32Snehasish Kumar通过llvm-dev llvm-dev at lists.llvm.org Tue Aug 4 17:31:06 PDT 2020问候,我们提供了“Machine Function Splitter”,这是一个将函数分为热部分和冷部分的代码生成优化过程。这个过程利用了LLVM中最近从Pr......
2020-8-10 6:3按下按钮可以看到它编译并运行一个很小的hello world程序。您还可以尝试修改LLVM程序集并再次按下按钮-请注意,尽管LLVM程序集是键入的,因此如果您向字符串添加字符,例如,您将需要调整其长度,无论是定义它的位置还是使用它的位置(否则您将收到错误,错误将显示在输出区域中)。
目标三元组=";i386-P......
2020-7-26 17:8Langcraft是一个针对“我的世界”数据包的代码生成器。它目前可以毫无问题地运行相当多的位码文件。该项目有一个内置的命令解释器,用于调试,支持断点(ISH)和检查寄存器/内存值。所有生成的数据包都可以在不到5分钟的时间内在真实的Mincraft Java Edition 1.16+环境中运行。
将整个输出文件夹(......
2020-5-11 8:3Clang是一个“LLVM原生的”C/C++/Objective-C编译器,其目标是提供惊人的快速编译[…]。
我不确定这在过去是不是真的,但现在肯定不是真的。每个LLVM版本都比上一个版本慢几个百分点。LLVM10在这方面付出了一些额外的努力,不知何故,不知什么原因,使Rust编译速度整整慢了10%。
有人可能会争......