草庐IT

llvm-codegen

全部标签

c++ - 如何使用 llvm 生成机器码

我目前正在使用llvm进行编译器项目。我遵循了各种教程,直到我有一个解析器来创建语法树,然后使用提供的IRBuilder将树转换为llvm模块。我的目标是创建一个可执行文件,但我对下一步该做什么感到困惑。我找到的所有教程都只是创建llvm模块并使用Module.dump()打印出程序集。此外,我能找到的唯一文档是针对llvm开发人员的,而不是针对项目的最终用户的。如果我想生成机器码,接下来的步骤是什么?llvm-mc项目看起来可以做我想做的事,但我找不到任何关于它的文档。也许我希望llvm做一些它没有做的事情。我的期望是我可以构建一个模块,然后会有一个我可以用模块调用的API,一个目标

c++ - 如何使用 llvm 生成机器码

我目前正在使用llvm进行编译器项目。我遵循了各种教程,直到我有一个解析器来创建语法树,然后使用提供的IRBuilder将树转换为llvm模块。我的目标是创建一个可执行文件,但我对下一步该做什么感到困惑。我找到的所有教程都只是创建llvm模块并使用Module.dump()打印出程序集。此外,我能找到的唯一文档是针对llvm开发人员的,而不是针对项目的最终用户的。如果我想生成机器码,接下来的步骤是什么?llvm-mc项目看起来可以做我想做的事,但我找不到任何关于它的文档。也许我希望llvm做一些它没有做的事情。我的期望是我可以构建一个模块,然后会有一个我可以用模块调用的API,一个目标

ChatGPT和Claude 对比测试(以Review MLIR Codegen代码为例)

Claude在MLIR代码分析上完全超越了ChatGPT并表现十分惊艳,请阅读全文或者自己注册感受它的强大。结论:在本文的任务中,Claude>ChatGPT>>NewBing0x0.前言这里将以oneflowIR部分中的一个Codegen任务(目标是在mlircodegen中支持oneflowstream,用oneflowstream替换pass中自己生成的stream,PR链接为:https://github.com/Oneflow-Inc/oneflow/pull/10149)为例,来对比一下newibing(chatgpt)和claude对mlir的理解能力。claude是Anthro

python - 什么是 LLVM 以及如何用 LLVM 替换 Python VM 将速度提高 5 倍?

Google正在赞助一个开源项目,旨在将Python的速度提高5倍。Unladen-Swallow好像有一个goodprojectplan为什么并发是一个如此困难的问题?LLVM会解决并发问题吗?除了多核之外,还有没有其他解决方案可以提升硬件? 最佳答案 LLVM是几件事在一起-一种虚拟机/优化编译器,结合不同的前端,以特定语言输入并以中间语言输出结果。此中间输出可以与虚拟机一起运行,也可以用于生成独立的可执行文件。并发性的问题在于,尽管它在科学计算中使用了很长时间,但最近才在消费者应用程序中变得普遍。因此,虽然众所周知如何编写科学

python - 什么是 LLVM 以及如何用 LLVM 替换 Python VM 将速度提高 5 倍?

Google正在赞助一个开源项目,旨在将Python的速度提高5倍。Unladen-Swallow好像有一个goodprojectplan为什么并发是一个如此困难的问题?LLVM会解决并发问题吗?除了多核之外,还有没有其他解决方案可以提升硬件? 最佳答案 LLVM是几件事在一起-一种虚拟机/优化编译器,结合不同的前端,以特定语言输入并以中间语言输出结果。此中间输出可以与虚拟机一起运行,也可以用于生成独立的可执行文件。并发性的问题在于,尽管它在科学计算中使用了很长时间,但最近才在消费者应用程序中变得普遍。因此,虽然众所周知如何编写科学

java - 从 Java 生成 LLVM 代码

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭2年前。Improvethisquestion我想使用来自Java的LLVM代码生成框架。也就是说,我确实不想将Java代码编译成LLVM。我只是想要一个可以从Java调用的用于代码生成的LLVM库。通常的LLVM库是C,所以我不能使用它。是否有任何Java端口?如果不是,那么最简单的方法是什么?将API封装到JNI中? 最佳答案 快速搜索llvm

java - 从 Java 生成 LLVM 代码

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭2年前。Improvethisquestion我想使用来自Java的LLVM代码生成框架。也就是说,我确实不想将Java代码编译成LLVM。我只是想要一个可以从Java调用的用于代码生成的LLVM库。通常的LLVM库是C,所以我不能使用它。是否有任何Java端口?如果不是,那么最简单的方法是什么?将API封装到JNI中? 最佳答案 快速搜索llvm

CMake、Make、MinGw、Clang、Llvm、GCC、MSVC的区别

文章目录一、CMake、Make、MinGw、MSVC之间的联系-二、Clang、Llvm、GCC之间的联系三、CMake、Make、MinGw、Clang、Llvm、GCC名词解释CMakeGCC:GNU编译器套装LLVM:一套编译器基础设施项目,GCC的竞争对手GCC和LLVM区别CLang:LLVM的编译器的前端一、CMake、Make、MinGw、MSVC之间的联系-1、MSVC是指微软的VC编译器。MinGW是指是MinimalistGNUonWindows的缩写,MinGw是windows版本的gcc集合2、MinGW并不仅是一个C/C++编译器,而是一套GNU工具集合。除开GCC

c# - 单声道 LLVM 和 LLVM-IR

我正在玩MonoLLVM(http://www.mono-project.com/Mono:Runtime:Documentation:LLVM),看起来他们在这里将LLVM用作JIT,而不是真正的代码生成器。但是根据文档,他们在生成native代码之前通过了LLVM-IR:首先,从IL代码生成普通的单声道JITIRIR转换为SSA形式IR转换为LLVMIRLLVMIR由LLVM编译成本地代码所以,我想知道是否有任何方法可以捕获这个第3阶段并使用IR来提供我的LLVM后端。这将使我能够免费获得C#到LLVM-IR前端。感谢您的帮助! 最佳答案

c++ - 如何让 LLVM 更喜欢一条机器指令而不是另一条机器指令?

假设我在目标机器上有两个寄存器计算block:I和X。一个人可能只对I寄存器应用整数运算,对X寄存器应用整数和浮点运算。还有两种类型的指令:defADDIi32:MyInstruction;...defADDXi32:MyInstruction;defADDXf32:MyInstruction;...它们的编码方式不同,并具有不同的asmstrings。所以llvm可以映射inta,b;a=a+b;到ADDIi32或ADDXi32但是floata,b;a=a+b;仅映射到ADDXf32。我希望LLVM在可能的情况下使用ADDIi32,但不幸的是我没有办法告诉它一条指令(或寄存器)比另一