【发布时间】:2014-10-09 06:34:39
【问题描述】:
我正在学习使用ARM neon instructions优化代码。我有一个执行特定操作的 c++ 函数。比如说,
int* multiplyCorrespondingElements(int* arr1, int* arr2)
arr1 和 arr2 是两个大小相同的整数数组 n (n>50)。此函数应将给定数组的相应元素相乘。
我想用 arm neon 来实现这个功能。对于使用 neon 函数,数据类型应该类似于
int8x8_t or int16x4_t or int32x2_t or int64x1_t.
我需要用于乘法的函数是
给出的函数之一http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0491c/CIHJBEFE.html
如何将可作为函数参数的 int [] 转换为 arm neon 的矢量数据类型?决定使用哪个向量和使用哪个乘法函数的标准是什么?
我搜索了很多,但找不到任何类似的例子。网络上所有可用的示例都将向量数据类型本身作为参数。我不能这样做,因为该函数需要成为更大的 c++ 库的一部分,我只能更改此函数以优化性能。
有没有适合初学者使用 arm neon 的教程?谁能提供一个简单的例子。谢谢。
【问题讨论】:
标签: c++ arm vectorization simd neon