问题标签 [neon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1437 浏览

gcc - ARM NEON 没有 xor gcc 内在函数

我找不到任何简单异或操作的内在函数。

见: http: //gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html

真的没有办法为此使用 NEON 指令吗?

0 投票
3 回答
15001 浏览

c - 如何在 ARM Cortex-a8 中使用乘法和累加内在函数?

如何使用 GCC 提供的 Multiply-Accumulate 内在函数?

谁能解释我必须传递给这个函数的三个参数。我的意思是源和目标寄存器以及函数返回什么?

帮助!!!

0 投票
1 回答
2000 浏览

c++ - 构建使用 Eigen(用于线性代数的 C++ 模板库)的项目时出现编译器错误

在我的项目中,我将 Eigen C++ 库用于线性代数,并且当我打开 ARM NEON 的矢量化标志 (mfpu=neon -mfloat-abi=softfp) 时,我得到编译器错误。我无法理解出了什么问题。我是否需要在 Eigen 库中为 ARM NEON 启用任何预处理器指令?


主程序

生成文件

错误


使用 Code Sourcery 工具链时遇到的错误

0 投票
2 回答
2502 浏览

c++ - CodeSourcery 给出编译错误:缺少位/c++config.h

在我的项目中,我将 Eigen C++ 库用于线性代数。当我为 ARM NEON 打开矢量化标志 (-mfpu=neon -mfloat-abi=softfp) 时,我收到编译器错误 - c++config.h 没有这样的文件或目录。

我不明白出了什么问题,这个 bits/c++config.h 是什么?我应该怎么做才能解决这个问题?

维克拉姆


主程序


生成文件


错误

0 投票
3 回答
3560 浏览

algorithm - 是否可以使用 SIMD 指令进行 3x3 矩阵求逆?

我正在使用基于 ARM Cortex-A8 的处理器,并且我有几个地方可以计算 3x3 矩阵逆运算。

由于 Cortex-a8 处理器有一个 NEON SIMD 处理器,我有兴趣将此协处理器用于 3x3 矩阵逆运算,我看到了几个 4x4 实现(英特尔 SSE 和freevec),但我在哪里没有看到执行 3x3 矩阵逆运算使用 SIMD 指令。freevec 使用的方法是将 4x4 矩阵拆分为 4、2x2 矩阵,然后对每个矩阵进行微小的操作,最后将结果重新组合,得到 4x4 矩阵的逆矩阵。我看不到 3x3 矩阵有这样的机会。

任何人都知道如何使用 SIMD 指令执行 3x3 矩阵求逆,这对我很有帮助吗?

问候维克拉姆

0 投票
1 回答
4158 浏览

simd - 如何使用 NEON SIMD 合并 2 行的元素?

我有一个

我有 2 行,

从这些我怎么能得到 -

是否有任何单个 NEON SIMD 指令可以合并这两行?或者我怎样才能使用内在函数尽可能少的步骤来实现这一点?

我想过使用zip/unzip内在函数,但zip 函数返回的数据类型float32x2x2_t不适合我,我需要一个float32x4_t数据类型。

0 投票
5 回答
4376 浏览

arm - 将 8bit uint8_t 加载为 uint32_t?

我的图像处理项目适用于灰度图像。我有 ARM Cortex-A8 处理器平台。我想使用NEON。

我有一个灰度图像(考虑下面的例子),在我的算法中,我只需要添加列。

如何将四个 8 位像素值(即uint8_t)作为四个 uint32_t并行加载到 128 位 NEON 寄存器之一中?我必须使用什么内在功能来做到这一点?

我是说:

替代文字

我必须将它们加载为 32 位,因为如果您仔细观察,我执行 255 + 255 的那一刻是 512,它不能保存在 8 位寄存器中。

例如

0 投票
1 回答
2375 浏览

arm - 如何使用NEON比较(大于或等于)指令?

一般如何使用 NEON 比较指令?

这是一个案例,我想使用大于或等于指令?

目前我有一个,

在 NEON 中,我想以同样的方式使用 x,只是这次 x 是一个向量。

0 投票
4 回答
2976 浏览

c - 为 ARM NEON 编译时出现未知的 GCC 错误(严重)

我有一个基于 ARM NEON Cortex-A8 的处理器目标。我正在通过使用 NEON 来优化我的代码。但是当我编译我的代码时,我得到了这个奇怪的错误。不知道如何解决这个问题。

我正在尝试在我的主机上使用 Code Sourcery (PART2) 编译以下代码 (PART 1)。我得到了这个奇怪的错误(第 3 部分)。我在这里做错了吗?其他人可以编译这个,看看他们是否也得到相同的编译错误?

奇怪的是,在代码中,如果我注释掉代码的else if(step_size == 4)一部分,那么错误就会消失。但是,遗憾的是,没有它我的优化是不完整的,所以我必须拥有它。

起初我认为这是 CodeSourcey 编译器(在我的主机上)的问题,所以我直接在我的目标上编译了程序(我的目标在 Ubuntu 上运行)。我在那里再次使用 gcc,我得到了同样的错误,当我注释掉该else if(step_size == 4)部分时,错误消失了。

帮助!


第1部分


第2部分


第三部分

0 投票
2 回答
3802 浏览

memory - ARM NEON:vld4_f32 和 vld4q_f32 有什么区别?

我无法区分ARM NEON 指令vld4_f32之间的区别。vld4q_f32

当我提高编码水平并开始查看汇编指令而不是信息量较少的内在函数时,困惑就开始了。

我需要在这里使用vld4变体指令的原因是,我想从我的大数组的每4 个位置捕获4 个。 float32_t

替代文字

内在函数和相应的vld4_f32汇编指令如下所示(来自此链接

vld4q_f32内在函数及其相应的汇编指令如下所示

好吧,在内部函数级别,我看到的区别是返回类型,但是如果我查看汇编指令和寄存器的数量,它们看起来都一样。编译器或汇编器如何知道两者之间的区别?

有人可以对此进行更多澄清并解释我如何将位于每个第 4 个内存位置的4 个 float32_t值加载到单个寄存器中吗?