neon相关内容

数据类型与 NEON 内在函数的兼容性

我正在使用 C++ 代码中的 NEON 内在函数进行 ARM 优化.我了解并掌握了大部分打字问题,但我仍然坚持这个问题: 指令vzip_u8 返回一个uint8x8x2_t 值(实际上是两个uint8x8_t 的数组).我想将返回的值分配给一个普通的 uint16x8_t.我认为没有合适的 vreinterpretq 内在来实现这一点,并且拒绝简单的强制转换. 解决方案 一些定义回答 ..
发布时间:2021-11-17 21:52:19 其他开发

如何检查手臂上是否存在NEON?

如何确定给定的 ARM 处理器上是否存在 NEON 引擎?为此可以查询任何状态/标志寄存器? 解决方案 我相信 unixsmurf 的答案 与使用具有特权内核的操作系统一样好.对于通用功能检测,似乎 ARM 要求从操作系统获取它,因此您必须使用操作系统 API 来获取它. 在 Android NDK 上使用 #include 和 (android_getCpuFamily() == ..
发布时间:2021-11-17 21:51:35 其他开发

ARM to C 调用约定,NEON 寄存器保存

有一个类似的帖子,涵盖了常规寄存器.NEON寄存器怎么样.据我所知,必须跨函数调用保留寄存器的上半部分或下半部分.我在任何地方都找不到该信息,有人可以澄清一下吗? 谢谢 来自 AAPCS,§5.1.1 核心寄存器: r0-r3 是参数和暂存寄存器;r0-r1 也是结果寄存器 r4-r8 是被调用者保存寄存器 r9 可能是一个被调用者保存寄存器(在 AAPCS 的某些变体上它是 ..
发布时间:2021-11-17 21:50:37 其他开发

ARMv7+NEON 的快速正弦/余弦:寻找测试人员......

可以使用 iPhone 3GS 或 Pandora 的人请测试我刚刚编写的以下组装例程吗? 它应该在 NEON 矢量 FPU 上非常快速地计算正弦和余弦.我知道它编译得很好,但没有足够的硬件我无法测试它.如果您可以只计算一些正弦和余弦,并将结果与​​ sinf() 和 cosf() 的结果进行比较,那真的会很有帮助. 谢谢! #include ///计算两个角度的正弦和余弦///in ..
发布时间:2021-11-17 21:50:04 其他开发

ARM NEON 编码:如何开始?

背景(如果您愿意,请跳过此部分) 首先让我说我不是专家程序员.我是一名年轻的初级计算机视觉 (CV) 工程师,我在 C++ 编程方面相当有经验,主要是因为广泛使用了伟大的 OpenCV2 C++ API.我所学到的只是执行项目的需要、解决问题和按时完成的需要,因为这是行业的现实. 最近,我们开始为嵌入式系统(ARM 板)开发 CV 软件,我们使用纯 C++ 优化代码来完成.然而,与传统 ..
发布时间:2021-11-17 21:50:01 C/C++开发

为什么编译器没有定义__ARM_FEATURE_CRC32?

我已经研究这个问题有一段时间了,我希望有人能指出我的错误.我想我再也看不到树林里的森林了. 我有一个 LeMaker HiKey 开发板用于测试.它的 AArch64,因此它具有 NEON 和其他 CPU 功能,如 AES、SHA 和 CRC32: $ cat/proc/cpuinfo处理器:AArch64 处理器版本 3 (aarch64)...特点:fp asimd evtstrm a ..
发布时间:2021-11-17 21:49:18 C/C++开发

NEON 包矢量比较结果到位图

我有一个比较两个浮点操作数的比较结果如下;我需要做的是根据比较结果需要执行以下操作:即: neon_gt_res = vcgtq_f32(temp1, temp2);if(neon_gt_res[0]) array[0] |= (unsigned char)0x01;if(neon_gt_res[1]) array[0] |= (unsigned char)0x02;if(neon_gt_res ..
发布时间:2021-11-17 21:49:06 其他开发

在 ARMv7a 和 Neon 上通过 64 位有符号比较支持 CMGT 的最有效方法是什么?

这个问题最初是为 此处为 SSE2.由于每个算法都与 ARMv7a+NEON 对相同操作的支持重叠,因此更新了问题以包括 ARMv7+NEON 版本.应评论者的要求,此处提出此问题以表明它确实是一个单独的主题,并提供可能对 ARMv7+NEON 更实用的替代解决方案.这些问题的最终目的是找到理想的实现以供考虑到 WebAssembly SIMD. 解决方案 有符号 64 位饱和减法. ..
发布时间:2021-11-17 21:49:02 其他开发

如何阻止 GCC 破坏我的 NEON 内在函数?

我需要为一个项目编写优化的 NEON 代码,我非常乐意编写汇编语言,但为了可移植性/可维护性,我正在使用 NEON 内在函数.这段代码需要尽可能快,所以我利用我在 ARM 优化方面的经验来正确交错指令并避免管道停顿.无论我做什么,GCC 都会对我不利,并创建充满停顿的较慢代码. 有谁知道如何让 GCC 摆脱困境并将我的内在函数转换为代码? 这是一个例子:我有一个简单的循环,它否定和复制 ..
发布时间:2021-11-17 21:47:28 其他开发

ARM Neon 内在函数有很好的参考吗?

ARM 参考手册没有详细介绍各个指令(http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0348b/BABIIBBG.html).有没有更详细一点的? 解决方案 有关说明本身的更多信息,您需要 汇编程序指南.您在那里找到的列表仅显示了从编译器内在函数到汇编指令的映射. ..
发布时间:2021-11-17 21:45:20 其他开发

RGBA 到 ABGR:iOS/Xcode 的内联臂霓虹灯 asm

这段代码(非常相似的代码,还没试过完全这段代码)使用Android NDK编译,但不适用于Xcode/armv7+arm64/iOS 评论错误: uint32_t *src;uint32_t *dst;#ifdef __ARM_NEON__asm__ 易失性("vld1.32 {d0, d1}, [%[src]] \n"//错误:需要向量寄存器"vrev32.8 q0, q0 \n"//错 ..
发布时间:2021-11-17 21:44:18 移动开发

ARM 和 NEON 可以并行工作吗?

这是参考问题:Neon Intrinsics 的校验和代码实现 将链接中列出的子问题作为单独的单独问题打开.因为不能在单线程中提出多个问题. 无论如何都要回答这个问题: ARM 和 NEON(就 arm cortex-a8 架构而言)真的可以并行工作吗?我怎样才能做到这一点? 有人可以指点我或分享一些使用ARM-NEON互操作的示例实现(伪代码/算法/代码,而不是理论实现论 ..
发布时间:2021-11-17 21:42:45 其他开发

SSE _mm_movemask_epi8 ARM NEON 的等效方法

我决定继续快速弯道优化并坚持_mm_movemask_epi8 SSE 指令.如何使用 uint8x16_t 输入为 ARM Neon 重写它? 解决方案 经过一些测试,下面的代码看起来是正确的: int32_t _mm_movemask_epi8_neon(uint8x16_t 输入){const int8_t __attribute__ ((aligned (16))) xr[8] ..
发布时间:2021-11-17 21:41:09 其他开发

使用联合(封装在结构中)绕过霓虹灯数据类型的转换

我用 SSE 的矢量化内在函数做了我的第一个方法,其中基本上只有一种数据类型 __m128i.切换到 Neon,我发现数据类型和函数原型更加具体,例如uint8x16_t(16 个 unsigned char 的向量),uint8x8x2_t(2 个向量,每个向量 8 个 unsigned char),uint32x4_t(带有4个uint32_t的向量)等 一开始我很热情(找到对所需数据类 ..
发布时间:2021-11-17 21:40:39 C/C++开发

Android 构建系统、NEON 和非 NEON 构建

我想为 armv6 构建我的库,如果设备支持,我会在运行时启用一些霓虹灯代码.霓虹灯代码使用霓虹灯内在函数,为了能够编译它,我必须启用 armeabi-v7a,但这会影响常规 c 代码(它在某些低端设备上会损坏). 所以,如果android构建系统不是过度干扰,我就不必问问题了,但是我似乎没有办法为armv6编译一个文件,为arm7-neon编译另一个文件. 如果可行,有人可以提供任何 ..
发布时间:2021-11-17 21:39:09 移动开发

Arm Neon Intrinsics 与手工组装

https://web.archive.org/web/20170227190422/http://hilbert-space.de/?p=22 在这个相当过时的网站上,它表明手写 asm 会比内在函数提供更大的改进.我想知道这是否是 2012 年现在的事实. 那么使用 gnu 交叉编译器改进了内部函数的编译优化吗? 解决方案 我的经验是,内在函数并不真正值得麻烦.编译器很容易 ..
发布时间:2021-11-17 21:38:31 其他开发

在 SIMD 中矢量化直方图的方法?

我正在尝试在 Neon 中实现直方图.可以矢量化吗? 解决方案 不幸的是,直方图几乎不可能矢量化. 您可能可以稍微优化标量代码 - 一个常见的技巧是使用两个直方图,然后在最后组合它们.这允许您重叠加载/增量/存储,从而隐藏一些串行依赖项和相关的延迟.伪代码: 将直方图 1 初始化为全 0将直方图 2 初始化为全 0环形获取输入值 1获取输入值 2从直方图 1 加载值 1 的计数从直 ..
发布时间:2021-11-17 21:37:28 其他开发

NEON 程序集无法在 Xcode 4.3.2 中为 iOS 构建

我有一个代码库,可以在所有其他 NEON 编译器、ndk-build、RVDS 等中正常编译,但在 Xcode 下,我调用的每条 NEON 指令都会出现错误“错误指令".基本上好像没有检测到 NEON. 我正在尝试构建一个静态库,我进入了新项目,选择了 Cocoa Touch 静态库,然后添加了我现有的文件. 我正在阅读的所有内容都表明 NEON 应该已经启用.我删除了对 armv6 ..
发布时间:2021-09-30 20:11:58 移动开发