问题标签 [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 回答
1468 浏览

image-processing - (int) Image-ARM neon 内在函数上的快速图像正方形 - iOS 开发

有人可以告诉我一个快速函数来找到int图像的每个像素的平方。我需要它用于 iOS 应用程序开发。我正在直接处理定义为的图像的内存

这显然是可能的最慢的功能。我听说 iOS 上的 ARM Neon 内部函数可用于在 1 个周期内进行多个操作。也许这就是要走的路?

问题是我不是很熟悉,目前没有足够的时间学习汇编语言。因此,如果有人可以针对上述问题发布 Neon 内在代码或 C/C++ 中的任何其他快速实现,那就太好了。

我能在网上找到的 NEON 内在函数中唯一的代码是 RGB 到灰色的代码http://computer-vision-talks.com/2011/02/a-very-fast-bgra-to-grayscale-conversion-手机/

0 投票
2 回答
971 浏览

neon - 在 fpu 设置为 SoftVFP 或 none 的 Cortex A8 上启用 NEON

我正在尝试使用 RVDS 4.0 为 Cortex A8 构建可执行文件。我的代码使用 NEON,但我想将 fpu 选项设置为 none 或 SoftVFP。ARM 网站提到当 fpu 设置为 SoftVFP 时 NEON 被禁用。这是因为 VFP 和 NEON 共享寄存器吗?

有人可以解释为什么当 fpu 设置为 SoftVFP 时我不能使用 NEON,或者即使 fpu 设置为 SOftVFP,我是否可以通过任何选项启用 NEON?

谢谢

0 投票
1 回答
341 浏览

assembly - LLVM GCC 4.2 中内联汇编的奇怪编译

我正在尝试优化以下 C 宏:

对于 Cortex-A8 处理器,所有变量都是双精度数。

内联汇编如下所示:

生成的程序集如下所示:

如您所见,编译器仅使用 4 个寄存器,而不是获得正确结果所必需的 6 个。

我如何对编译器说我需要 6 个寄存器?

0 投票
1 回答
1328 浏览

c - 用 NEON 将 short 转换为 int 和 sum

我想将下一个函数转换为 NEON:

我想我几乎做到了,但是有一个错误,因为它不能很好地工作

我怎样才能得到这个工作?

0 投票
1 回答
2948 浏览

arm - 使用 NEON/ARM 加载 8 位值

我正在尝试将 char 值数组加载到 NEON 寄存器中,然后将它们视为 16 位或 32 位整数值。所以像这样的事情......

我不确定如何加载数据。我应该将 8 位数据加载到通道中,然后将寄存器重新解释为短路吗?还是加载和转换?最快的方法是什么?

有没有人举例说明他们如何使用 NEON 内在函数来做到这一点?

谢谢!

0 投票
1 回答
2036 浏览

arm - ARM NEON:比较 128 位值

我有兴趣找到比较存储在 Cortex-A9 内核(允许 VFP 指令)上的 NEON 寄存器(例如 Q0 和 Q3)中的值的最快方法(最低周期数)。

到目前为止,我有以下内容:

(1) 使用VFP浮点比较:

如果 64 位“浮点数”等价于 NaN,则此版本将不起作用。

(2) 使用 NEON 缩小和 VFP 比较(这次只使用一次,并且以 NaN 安全的方式):

D29 寄存器之前预加载了正确的 16 位模式:

我的问题是:还有比这更好的吗?我是否正在监督一些明显的方法来做到这一点?

0 投票
2 回答
3123 浏览

image-processing - 无符号字符图像上的快速高斯模糊 - ARM Neon Intrinsics - iOS Dev

有人可以告诉我使用 5x5 蒙版查找图像的高斯模糊的快速函数吗?我需要它用于 iOS 应用程序开发。我正在直接处理定义为的图像的内存

这显然是可能的最慢的功能。我听说 iOS 上的 ARM Neon 内部函数可用于在 1 个周期内进行多个操作。也许这就是要走的路?

问题是我不是很熟悉,目前没有足够的时间学习汇编语言。因此,如果有人可以针对上述问题发布 Neon 内在代码或 C/C++ 中的任何其他快速实现,那就太好了。

0 投票
1 回答
637 浏览

c++ - 带有 SIMD 指令的平滑样条曲线

我在我的代码中使用这种类型的样条曲线,我想知道该算法是否可以从使用 SIMD 指令中受益。(ARM 上的 NEON)使用的代码是以下源代码的 C 翻译(在 Fortran 中):

根据您的经验,您能否判断此代码​​是否有机会通过使用 SIMD 指令进行优化?

是否有使用 SIMD 指令将代码从“普通”代码转换为代码的指南?

谢谢

0 投票
2 回答
3480 浏览

gcc - 尝试检查 gcc 中的 neon 指令时如何解决错误指令“vadd.i16 q0,q0,q0”

尝试使用标志 -mcpu=cortex-a8 -mfpu=neon 但仍然没有成功

上面的代码用于测试 gcc 对 neon 指令的支持。

实际上我正在尝试使用 NEON 支持 ARM 平台构建 x264 运行配置脚本后 x264 配置日志文件包含

命令行选项:“--cross-prefix=arm-linux-androideabi-” “--enable-pic” “--extra-cflags=-mcpu=cortex-a8” “--host=arm-linux”

目标是利用支持霓虹灯的 ARM 处理器来提升 x264 编码器的性能......

0 投票
2 回答
6993 浏览

android - ARM NEON 汇编器 - 用法和理解

我是汇编程序和 NEON 编程的新手。我的任务是使用 NEON 指令将部分算法从 C 转换为 ARM 汇编程序。该算法采用一个 int32 数组,从该数组加载不同的值,进行一些位移和异或并将结果写入另一个数组。稍后我将使用具有 64 位值的数组,但现在我只是尝试重写代码。

所以这是我关于NEON指令的问题:

1.)如果我加载这样的寄存器:

它会从内存中仅加载 32 位还是 2x32 位来填充 64 位霓虹 D 寄存器?

2.) 如何访问 D-Register 的 2/4/8 (i32, i16, i8) 部分?

3.)我正在尝试从具有偏移量的数组中加载不同的值,但它似乎不起作用......我做错了什么......这是我的代码:(它是一个整数数组,所以我´ m 尝试加载例如 3 元素,其偏移量应为 64Bit = 8 Byte)

其中“a”是数组,“out”是指向整数的指针(用于调试)。

4.)从数组中加载一个值后,我需要将其向右移动,但它似乎不起作用:

5.) 是否可以只在 Neon 寄存器中加载 1 个字节,这样我就不必移动/屏蔽某些东西来只获得我需要的一个字节?

6.) 我需要使用 Inline 汇编器,但我不确定最后一行是做什么用的:

7.) 你知道任何带有代码示例的好的 NEON 参考吗?

该程序应在三星 Galaxy S2、cortex-A9 处理器上运行,如果这有什么不同的话。谢谢您的帮助。

- - - - - - - - 编辑 - - - - - - - - - -

这就是我发现的:

  1. 它将始终加载完整的寄存器(64 位)
  2. 您可以使用“vmov”指令将霓虹灯寄存器的一部分传输到手臂寄存器。
  3. 偏移量应该在一个臂寄存器中,并将在内存访问后添加到基地址。
  4. 它是“被破坏的注册列表”。每个使用的寄存器,既不在输入列表中,也不在输出列表中,应该写在这里。