neon相关内容

VLD1 中的对齐

我有一个关于 ARM Neon VLD1 指令对齐的问题.以下代码中的对齐方式是如何工作的? DATA .req r0vld1.16 {d16, d17, d18, d19},[数据,:128]! 这条读指令的起始地址是否移位到DATA+一个正整数,使得它是不小于DATA的16的最小倍数(16字节=128位),或者DATA本身变为最小倍数16 不少于DATA? 解决方案 这是对 CPU ..
发布时间:2021-11-17 22:21:51 其他开发

Visual Studio 中的 ARM NEON Intrisics 支持

支持 ARM NEON 内部函数的最早版本的 Visual Studio (C++) 是什么? 解决方案 Visual Studio 2012 在为 Windows-on-ARM 编译时支持 NEON 内在函数(以及 ARMv6 内在函数).Visual Studio 2008 在为 Windows Mobile 编译时仅支持 ARMv5 DSP、XScale 和 WMMX 指令. ..
发布时间:2021-11-17 22:21:26 其他开发

VST/VLD 实际上是做什么的?

下面两行代码到底会发生什么? vst1.64 {d8, d9, d10, d11}, [r4:128]!vst1.64 {d12, d13, d14, d15}, [r4:128] 更一般地说,我想知道什么是 VST &VLD 从 doc 开始:ARM 信息中心不要给我说清楚. 解决方案 vst1.64 {d8, d9, d10, d11}, [r4:128]! 该指令将寄存器 d8 ..
发布时间:2021-11-17 22:20:39 其他开发

C 与 vDSP 与 NEON - NEON 怎么会像 C 一样慢?

NEON 怎么可能像 C 一样慢? 我一直在尝试构建一个快速直方图函数,该函数通过为传入值分配一个值(即它们最接近的范围阈值)将其分入范围.这是将应用于图像的东西,因此它必须很快(假设图像数组为 640x480,因此有 300,000 个元素).直方图范围数是 (0,25,50,75,100) 的倍数.输入将是浮点数,最终输出显然是整数 我通过打开一个新的空项目(无应用程序委托)并仅使 ..
发布时间:2021-11-17 22:20:16 移动开发

使用 NEON 优化 Cortex-A8 颜色转换

我目前正在执行颜色转换例程,以便从 YUY2 转换为 NV12.我有一个非常快的函数,但没有我预期的那么快,主要是由于缓存未命中. void convert_hd(uint8_t *orig, uint8_t *result) {uint32_t 宽度 = 1280;uint32_t 高度 = 720;uint8_t *lineOdd = orig;uint8_t *lineEven = ori ..
发布时间:2021-11-17 22:18:23 其他开发

使用 NEON 优化 Cortex-A8 颜色转换

我目前正在执行颜色转换例程,以便从 YUY2 转换为 NV12.我有一个非常快的函数,但没有我预期的那么快,主要是由于缓存未命中. void convert_hd(uint8_t *orig, uint8_t *result) {uint32_t 宽度 = 1280;uint32_t 高度 = 720;uint8_t *lineOdd = orig;uint8_t *lineEven = ori ..
发布时间:2021-11-17 22:18:04 其他开发

使用 NEON 对 ARM 汇编中的四字向量中的所有元素求和

我刚开始组装,虽然手臂信息中心通常很有帮助,但有时说明对新手来说可能有点混乱.基本上我需要做的是在一个四字寄存器中求和 4 个浮点值,并将结果存储在一个单精度寄存器中.我认为指令 VPADD 可以做我需要的,但我不太确定. 解决方案 看来你想得到一定长度数组的总和,而不是只有四个浮点值. 在这种情况下,您的代码可以工作,但远未优化: 许多管道互锁 每次迭代不必要的 32 ..
发布时间:2021-11-17 22:17:32 其他开发

在 iOS 上使用 NEON 乘法累加

即使我只为 armv7 编译,NEON 乘法累加内部函数似乎被分解为单独的乘法和加法. 我在使用 Xcode 5 到 6 以及不同的优化设置(通过 Xcode 和直接通过命令行构建)的多个 Xcode 版本(最高至最新 4.5)中都遇到过这种情况. 例如构建和反汇编一些包含 的test.cpp #include float32x4_t 测试( float32x4_t a, floa ..
发布时间:2021-11-17 22:15:40 移动开发

ARM memcpy 和对齐

我正在使用 NEON使用 Cortex-A8 处理器上的 Windows Embedded Compact 7 ARM 汇编器从 ARM 网站使用预加载实现的内存复制. 我注意到当我为该函数提供非字对齐值时,我得到了数据类型未对齐异常 例如: ;带有预加载的 NEON 内存副本对齐LEAF_ENTRY NEONCopyPLDPLD [r1, #0xC0]VLDM r1!,{d0-d7 ..
发布时间:2021-11-17 22:15:37 其他开发

如何使用 Neon SIMD 将无符号字符转换为有符号整数

如何使用Neon将uint8_t数据类型的变量转换为int32_t?我找不到这样做的任何内在因素. 解决方案 假设您想将一个 16 x 8 位整数的向量转换为四个 4 x 32 位整数的向量,您可以通过先解包为 16 位来实现然后再次到 32 位: //加载 8 位向量uint8x16_t v = vld1q_u8(p);//从 p 加载 16 x 8 位整数的向量//解压为 16 位i ..
发布时间:2021-11-17 22:15:05 其他开发

ARM NEON SIMD 版本 2

与 Cortex A15 中的 NEON SIMD 和 NEON SIMD 版本 2 有什么区别? 解决方案 它增加了 SIMD FMA 指令 (VFMA.F32) 并强制要求 NEON 半精度扩展.ARM Cortex-A7、ARM Cortex-A15 和 Qualcomm Krait(不确定 ARM Cortex-A5)支持 NEONv2. ..
发布时间:2021-11-17 22:13:54 其他开发

ARM NEON SIMD 版本 2

与 Cortex A15 中的 NEON SIMD 和 NEON SIMD 版本 2 有什么区别? 解决方案 它增加了 SIMD FMA 指令 (VFMA.F32) 并强制要求 NEON 半精度扩展.ARM Cortex-A7、ARM Cortex-A15 和 Qualcomm Krait(不确定 ARM Cortex-A5)支持 NEONv2. ..
发布时间:2021-11-17 22:13:24 其他开发

使用 ARM NEON 内在函数添加 alpha 和 permute

我正在开发一个 iOS 应用程序,需要相当快地从 RGB -> BGRA 转换图像.如果可能,我想使用 NEON 内在函数.有没有比简单地分配组件更快的方法? void neonPermuteRGBtoBGRA(unsigned char* src, unsigned char* dst, int numPix){数字像素/= 8;//一次处理8个像素uint8x8_t alpha = vdup ..
发布时间:2021-11-17 22:13:21 其他开发

ARM Neon:如何从 uint8x16_t 转换为 uint8x8x2_t?

我最近发现了 vreinterpret{q}_dsttype_srctype 转换运算符.但是,这似乎不支持 此链接(页面底部): 某些内在函数使用以下形式的向量类型数组: xx_t 这些类型被视为包含单个的普通 C 结构名为 val 的元素. 一个示例结构定义是: struct int16x4x2_t{int16x4_t val[2];}; 你知道如何从uint8x1 ..
发布时间:2021-11-17 22:13:12 C/C++开发

霓虹灯浮点乘法比预期的要慢

我有两个浮动标签.我需要将第一个选项卡中的元素与第二个选项卡中的相应元素相乘,并将结果存储在第三个选项卡中. 我想使用 NEON 来并行化浮点乘法:同时进行四个浮点乘法而不是一个. 我预计会有显着的加速,但我只实现了大约 20% 的执行时间减少.这是我的代码: #include #include #include const int n = 100;//表格大小/* 用随机浮点数填充 ..
发布时间:2021-11-17 22:13:09 C/C++开发

快速 ARM NEON memcpy

我想在 ARMv7 内核上复制图像.最简单的实现是每行调用 memcpy. for(i = 0; i 我知道以下内容 d, dp, s, sp, w 都是 32 字节对齐的,所以我的下一个(仍然很幼稚)实现是沿着 for (int i = 0; i ..
发布时间:2021-11-17 22:11:05 其他开发

NEON 向量化无符号字节的乘积和:(a[i]-int1) * (b[i]-int2)

我需要改进一个循环,因为它被我的应用程序调用了数千次.我想我需要用 Neon 来做,但我不知道从哪里开始. 假设/先决条件: w 始终为 320(16/32 的倍数). pa 和 pb 是 16 字节对齐的 ma 和 mb 为正. int whileInstruction (const unsigned char *pa,const unsigned char *pb,in ..
发布时间:2021-11-17 22:10:59 C/C++开发

ARM NEON 矢量化失败

我想在我的 ARM cortex-a9 上启用 NEON 向量化,但我在编译时得到了这个输出: “未矢量化:不支持相关 stmt:D.14140_82 = D.14143_77 * D.14141_81" 这是我的循环: void my_mul(float32_t * __restrict data1, float32_t * __restrict data2, float32_t ..
发布时间:2021-11-17 22:10:41 其他开发

使用 ARM NEON 内在函数对 cvtColor 进行 SIMD 优化

我正在研究 BGR 到灰度转换的 SIMD 优化,这相当于 OpenCV 的 cvtColor() 函数.这个函数有一个英特尔 SSE 版本,我指的是它.(我所做的基本上是将 SSE 代码转换为 NEON 代码.) 我快写完代码了,可以用g++编译了,但是还是无法得到正确的输出.有没有人知道错误可能是什么? 我得到了什么(不正确): 我应该得到什么: 这是我的代码: #i ..
发布时间:2021-11-17 22:09:55 C/C++开发