LLVM 中的向量加法程序

     2023-02-16     239

关键词:

【中文标题】LLVM 中的向量加法程序【英文标题】:Vector Addition Program in LLVM 【发布时间】:2013-06-07 16:51:40 【问题描述】:

我正在尝试在 LLVM 中编写一个 5 元素向量加法程序,但不知道如何返回整个结果向量。我的代码如下,错误是

LLVM 错误:提供的 main() 的返回类型无效

@veca = global [5 x i32] [i32 1, i32 2, i32 3, i32 4, i32 5]
@vecb = global [5 x i32] [i32 4, i32 6, i32 9, i32 2, i32 4]

define [5 x i32]* @vector_add([5 x i32]* %vec1, [5 x i32]* %vec2)

    entry:
    %vecc = alloca [5 x i32]
    br label %loop

    loop:
    %i  = phi i32 [0, %entry], [%nexti, %loop]
    %nexti = add i32 %i, 1
    %ptra = getelementptr [5 x i32]* %vec1, i64 0, i32 %i
        %loada = load i32* %ptra
    %ptrb = getelementptr [5 x i32]* %vec2, i64 0, i32 %i
    %loadb = load i32* %ptrb
    %added = add i32 %loada, %loadb
    %ptr = getelementptr [5 x i32]* %vecc, i32 0, i32 %i
    store i32 %added, i32* %ptr
    %eq = icmp eq i32 %i, 4
    br i1 %eq, label %loop, label %exit

    exit:
    ret [5 x i32]* %vecc


define [5 x i32] @main()

    %answer = call [5 x i32]* @vector_add([5 x i32]* @veca, [5 x i32]* @vecb)
    %ans = load [5 x i32]* %answer
    ret [5 x i32] %ans

【问题讨论】:

【参考方案1】:

这个 IR 本身并没有什么问题 - 它与 llc 编译得很好。您的问题可能在于尝试 JIT 或解释它,因为 LLVM ExecutionEngine 需要具有标准签名的 main

int main()

【讨论】:

我用 llvm-as vector-add.ll 编译并用 lli vector-add.bc 运行,然后产生了错误。我应该在 linux 终端中运行什么才能让它正确运行? 我也可以打印答案而不是返回它。在这种情况下,我可以使用:'declare i32 @main() .... @puts..... return 0`。在这种情况下,你知道如何使用@puts 打印 5 个整数吗? @FCo:做这些事情的一个简单方法是用clang编译C代码的小sn-ps并研究它产生的IR

C ++中的向量加法并不完全正确[重复]

】C++中的向量加法并不完全正确[重复]【英文标题】:VectoradditioninC++isnotcomingoutexactlyright[duplicate]【发布时间】:2014-05-0413:04:57【问题描述】:我正在尝试在我的C++程序中将一个向量添加到另一个向量,但结果不准确。这是矢量... 查看详情

tvm1介绍/ubuntu安装/向量加法转置举例

文章目录​​什么是TVM​​​​一.TVM安装​​​​1.1需要安装的软件​​​​1.2安装​​​​1.3python环境​​​​1.4C++test​​​​1.5python链接tvm​​​​1.6测试(显示下面表示成功了,因为这里只需要CPU代码优化,因此只使用了LLVM... 查看详情

LLVM IR:有效地对向量求和

...指令的编译器。我正在广泛使用向量。我希望能够对向量中的所有元素求和。现在我只是单独提取每个元素并手动添加它们,但令我震惊的是,这正是硬件应该能够提供帮助的那种事情(因为这听起来像是一个非常常见的操作)... 查看详情

使用 Cuda 进行 128 位向量加法,性能问题

...我想添加带有进位的128位向量。我的128位版本(下面代码中的addKernel128)比基本的32位版本(下面的addKernel32)慢两倍。我有内存合并问题吗?如何获得更好的性能?#include"cuda_runtim 查看详情

从 bool (i1) 向量到 i8、i16 等的 LLVM 位转换是不是定义明确?

】从bool(i1)向量到i8、i16等的LLVM位转换是不是定义明确?【英文标题】:IsLLVMbitcastfromvectorofbool(i1)toi8,i16,etc.welldefined?从bool(i1)向量到i8、i16等的LLVM位转换是否定义明确?【发布时间】:2020-05-0623:27:21【问题描述】:在LLVM中,&l... 查看详情

如何在 LLVM IR 中使用 RISC-V 向量 (RVV) 指令?

】如何在LLVMIR中使用RISC-V向量(RVV)指令?【英文标题】:HowdoIusetheRISC-VVector(RVV)instructionsinLLVMIR?【发布时间】:2020-09-2809:07:40【问题描述】:在thispresentation,Kruppe和Espasa概述了RISC-V向量扩展(RVV),在slide16,他们展示了通过内部函... 查看详情

数学二维向量(加法减法模点乘叉乘)

二维向量加法二维向量减法二维向量的模点乘叉乘 查看详情

LLVM 中的指针分析

】LLVM中的指针分析【英文标题】:PointeranalysisinLLVM【发布时间】:2015-03-2400:04:30【问题描述】:我正在尝试对LLVM使用指针分析,但我找到了Andersen\'spointeranalysis的实现。但是,我是LLVM新手,遇到了一些问题。例如,对于这个琐... 查看详情

计算机图形学几何变换基础

...了两种运算:数乘运算和加法运算。设(u,v,w)是向量空间中的三个向量,(k)是该空间的一个标量。则向量间的加法运算是封闭的,即[u+vinV,quadforallu,vinV]加法满足交换律,即[u+v=v+u]存在一个0向量,满足[u+ extbf{0}=u,quadforalluinV]数 查看详情

中断 gdb (llvm) 中的命名空间函数

】中断gdb(llvm)中的命名空间函数【英文标题】:Breakonnamespacefunctioningdb(llvm)【发布时间】:2014-05-1415:42:13【问题描述】:我正在尝试逐步完成llvm的opt程序(用于作业),讲师建议在runOnFunction处设置断点。我在其中一个文件中看... 查看详情

在 LLVM IR 中,将整数存储到向量的第二个元素中

】在LLVMIR中,将整数存储到向量的第二个元素中【英文标题】:InLLVMIR,storeanintegerintothesecondelementofavector【发布时间】:2018-03-3113:49:32【问题描述】:我现在想将一个整数存储到向量的第二个元素中。向量是<2xi64>,现... 查看详情

使用 AVX2 对 2 个短整型向量进行向量加法

】使用AVX2对2个短整型向量进行向量加法【英文标题】:Vectorisedadditionfor2shortintvectorsusingAVX2【发布时间】:2018-03-1423:52:31【问题描述】:我在使用AVX2指令集对2个短(16位整数)向量类型执行加法运算时遇到问题。我已经构建了... 查看详情

如何在 Matplotlib 中绘制向量加法?

】如何在Matplotlib中绘制向量加法?【英文标题】:HowtoplotvectoradditioninMatplotlib?【发布时间】:2021-12-3004:13:09【问题描述】:我正在尝试绘制矢量加法,但没有得到预期的结果,我对3D绘图完全陌生,我需要认真的帮助我的情节是... 查看详情

AAch64 高级 SIMD 向量加法

】AAch64高级SIMD向量加法【英文标题】:AAch64AdvancedSIMDvectoraddition【发布时间】:2016-02-0319:22:21【问题描述】:我正在尝试在我的汇编代码中添加两个高级SIMD向量。在这里,我有两个向量v0和v1,我想将v0的上半部分与v1的下半部分... 查看详情

线性代数

------------恢复内容开始------------向量定义:一组有序的数字空间中的点 行向量列向量向量加法  数量乘法向量的模  查看详情

犰狳中的高效稀疏矩阵加法

】犰狳中的高效稀疏矩阵加法【英文标题】:EfficientsparsematrixadditioninArmadillo【发布时间】:2017-12-0200:36:06【问题描述】:我正在尝试构建形式为L的稀疏矩阵L和Hi分别是一个非常稀疏的矩阵和行向量。最终的L矩阵的密度应该在1%... 查看详情

第四章1.向量空间

...$$.   向量空间也称线性空间或线性流形。向量空间中的元素称为向量,向量空间中的加法和数乘运算称为线性运算。  在向量空间的基础上,我们可以定义另一个重要的代数系--代数。  定义  设$A$是域$K$上的... 查看详情

关于向量空间的基本性质,与子空间的最最基本性质

...空间H是向量空间V的一个子集,并且满足三条性质:1、V中的零向量在空间H中2、H对向量加法封闭,即对于H中的任意向量,u,v,u+v仍然在H中3、H标量乘法封闭,即对于H 中的任意向量,v以及任意标量c,向量cv仍然在空间H中 例... 查看详情