neon相关内容

将 VFP/Neon 用于 Visual Studio 2008 应用程序

我正在尝试指定运行 Windows Compact 7 的 ARM Cortex-A8 的基准测试.我想比较使用 VFP、NEON 和没有使用它们的性能. 我已经看到 GCC 编译器的“-mfpu=xxx"选项,但是,Visual Studio 2008 中需要哪些编译设置来指示应用程序使用的 FPU? 解决方案 Visual Studio 2008 既不支持 VFP 也不支持 NE ..
发布时间:2021-09-18 20:23:19 其他开发

SIMD 行列式计算

是否存在一种计算低维(约 4)矩阵行列式的方法,该方法适用于 SIMD(霓虹灯、SSE、SSE2)?我正在使用手动膨胀公式,但效果不佳.我在 linux 下一直使用 SSE 到 SSE3 和霓虹灯.矩阵元素都是浮点数. 解决方案 这是我的 5 美分. 2x2 矩阵的行列式: 这是给读者的练习,应该很容易实现 3x3 矩阵的行列式: 使用标量三重积.这将需要智能的 c ..
发布时间:2021-08-27 19:46:19 其他开发

霓虹灯vuzp的sse/avx等效项

Intel的向量扩展名SSE,AVX等为每种元素大小提供了两个解压缩操作,例如SSE内在函数是 _mm_unpacklo _ * 和 _mm_unpackhi _ * .对于向量中的4个元素,它将执行以下操作: 输入:(A0 A1 A2 A3)(B0 B1 B2 B3)unpacklo/hi:(A0 B0 A1 B1)(A2 B2 A3 B3) 相当于解压缩的是ARM NEON指令集中的 v ..
发布时间:2021-04-12 20:53:53 其他开发

用霓虹灯内在函数代替memcpy

我试图通过编写相同的霓虹灯内在函数来击败"memcpy"功能.以下是我的逻辑: uint8_t * m_input;//大小为400 x300uint8_t * m_output;//大小为400 x300//没有提及用于创建内存的完整代码库memcpy(m_output,m_input,sizeof(m_output [0])* 300 * 400); 霓虹灯: int32_t ht ..
发布时间:2021-04-09 19:26:16 其他开发

为什么乘法的氖本征函数比加法运算符慢?

我编写了一个测试应用程序,以比较c ++实现和霓虹优化的实现,以比较两个包含复数的向量的乘积. 霓虹灯实现比cpp快3倍.(代码1) 但是,如果我用乘法运算符 * 替换霓虹灯固有的乘法- vmulq_f32 来乘以两个霓虹灯寄存器,我的速度约为4倍. 然后,如果我也将霓虹灯内在函数替换为加减法-将 vaddq_f32 / vsubq_f32 替换为 + /-要添加/减去两个霓虹灯寄存 ..
发布时间:2021-04-09 19:26:13 移动开发

ARM NEON:如何实现256bytes查找表

我正在使用内联汇编移植一些我写给NEON的代码. 我需要做的一件事情是将范围为[0..128]的字节值转换为表中的整个范围为[0..255]的其他字节值 表很短,但是背后的数学并不容易,因此我认为不值得每次“即时"进行计算.所以我想尝试查找表. 我在32字节的情况下使用了VTBL,并且可以按预期工作 对于整个范围,一个想法是首先比较源所在的范围并进行不同的查找(即,具有4个 ..
发布时间:2021-04-09 19:24:35 其他开发

VST/VLD实际做什么?

下面两行代码会发生什么? vst1.64 {d8, d9, d10, d11}, [r4:128]! vst1.64 {d12, d13, d14, d15}, [r4:128] 更笼统地说,我想知道什么是VST& VLD从以下日期开始执行文档操作: ARM信息中心没有"不能对我说清楚. 解决方案 vst1.64 {d8, d9, d10, d11}, [r4:128]! 该 ..
发布时间:2020-09-07 03:03:47 其他开发

指定"-mfpu = neon-vfpv3"是否有优势?在"-mfpu =霓虹灯"上方具有单独管道的ARM?

我的Zynq-7000 ARM Cortex-A9处理器同时具有NEON和VFPv3扩展,而Zynq-7000-TRM则将处理器配置为具有"VFPv3和高级SIMD指令的独立管道" em>. 到目前为止,我已经使用Linaro GCC 6.3-2017.05和-mfpu=neon选项编译了程序,以利用SIMD指令.但是,如果编译器还具有要发出的非SIMD操作,使用-mfpu=neon-vfp ..
发布时间:2020-09-07 02:58:18 其他开发

ARM/霓虹灯Memcpy是否针对*未缓存*内存进行了优化?

我正在使用基于Xilinx Zynq 7000 ARM的SoC.我正在与DMA缓冲区(我一直在寻找使用Neon指令和内联asm为ARM编写更快的memcpy.无论glibc拥有什么,这都是可怕的,特别是如果我们要从一个已隔离的DMA缓冲区进行复制. 我从各种来源整理了自己的复制功能,包括: 快速ARM霓虹灯memcpy gcc中的arm内联汇编 http://infocenter. ..
发布时间:2020-09-07 02:42:02 其他开发

如何检查臂上NEON的存在?

如何确定给定的ARM处理器上是否存在NEON引擎?为此可以查询任何状态/标志寄存器吗? 解决方案 我相信 unixsmurf的答案与使用特权内核的操作系统所获得的效果差不多.对于通用功能检测,似乎ARM已要求从OS上获取它,因此您必须使用OS API来获取它. 在Android NDK上,将#include 与(android_getCpuFamily ..
发布时间:2020-09-07 02:40:59 其他开发

使用NEON内在函数除以浮点数

我当时正在处理四个像素的图像,这在Android应用程序的armv7上. 我想将一个float32x4_t向量除以另一个向量,但是其中的数字从大约0.7到3.85不等,在我看来,除法的唯一方法是使用右移,但这是2^n的数字. 此外,我是新手,因此欢迎您提供任何建设性的帮助或意见. 示例: 如何使用NEON内部函数执行这些操作? float32x4_t a = {25. ..
发布时间:2020-09-07 02:39:44 移动开发

ARM NEON:比较128位值

我有兴趣找到一种最快的方式(最低的周期计数),以比较存储在Cortex-A9内核(允许VFP指令)上的NEON寄存器(例如Q0和Q3)中的值. 到目前为止,我有以下内容: (1)使用VFP浮点比较: vcmp.f64 d0, d6 vmrs APSR_nzcv, fpscr vcmpeq.f64 d1, d7 vmrseq ..
发布时间:2020-09-07 02:31:57 其他开发