ARM NEON Intrinsics示例
[code=csharp]
#include <stdio.h>
#include <arm_neon.h>
int main() {
float arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int len = sizeof(arr) / sizeof(arr[0]);
int dim_x4 = len / 4;
int left_x4 = len % 4;
float *p = arr; // 创建新的指针p指向数组首元素地址,p与arr独立
float32x4_t sum_vec = vdupq_n_f32(0.0); // 复制创建一个4元素vector sum_vec,并初始化元素为0
for (int dim = 0; dim < dim_x4; dim++) {
p = arr + dim * 4; // 更新指针位置
float32x4_t data_vec = vld1q_f32§; // 从地址p开始load四个元素存至vector data_vec
sum_vec = vaddq_f32(sum_vec, data_vec); // vector相加,结果存入新的vector
}
float32_t sum = vgetq_lane_f32(sum_vec, 0) + vgetq_lane_f32(sum_vec, 1) + vgetq_lane_f32(sum_vec, 2) + vgetq_lane_f32(sum_vec, 3);
p += 4; // 更新指针位置到剩余元素起始地址
for (int left = 0; left < left_x4; left++) {
sum += *(p + left); //对于剩下的少于4个的元素,依次计算累加即可
}
printf(“sum = %f\n”, sum);
return 0;
}
[/code]
ARM NEON Intrinsics示例相关推荐
- ARM Neon 编程笔记一(ARM NEON Intrinsics, SIMD运算, 优化心得)
1. ARM Neon Intrinsics 编程 1.入门:基本能上手写Intrinsics 1.1 Neon介绍.简明案例与编程惯例 1.2 如何检索Intrinsics 1.3 优化效果案例 1 ...
- 【genius_platform软件平台开发】第八十二讲:ARM Neon指令集一(ARM NEON Intrinsics, SIMD运算, 优化心得)
1. ARM Neon Intrinsics 编程 1.入门:基本能上手写Intrinsics 1.1 Neon介绍.简明案例与编程惯例 1.2 如何检索Intrinsics 1.3 优化效果案例 1 ...
- 【genius_platform软件平台开发】第四点:ARM NEON Intrinsics 使用详解
目录 前言 SIMD简介 ARM NEON Intrinsics简介 函数改写示例 结语 前言 最近公司在视频直播项目中要使用H.265/HEVC,具体的是使用HW硬件编码H.264/AVC,云端转码 ...
- ARM Neon Intrinsics 学习指北:从入门、进阶到学个通透
本文同步发表于GiantPandaCV公众号,未经作者允许严禁转载 前言 Neon是ARM平台的向量化计算指令集,通过一条指令完成多个数据的运算达到加速的目的,常用于AI.多媒体等计算密集型任务. 本 ...
- Arm NEON intrinsics指令格式
NEON Intrinsics 是一种更简单的编写 NEON 代码的方法,NEON Intrinsics 类似于 C 函数调用,在编译时由编译器替换为相应的汇编指令,使用时需要包含头文件arm_neo ...
- ARM Neon Intrinsics各函数介绍
#ifndef __ARM_NEON__ #error You must enable NEON instructions (e.g. -mfloat-abi=softfp -mfpu=neon) t ...
- 用 Neon Intrinsics 优化 C 代码
以下内容翻译自:Optimizing C Code with Neon Intrinsics 概述 本指南向您展示如何在 C 或 C++ 代码中使用 Neon intrinsics 函数,以利用 Ar ...
- Neon intrinsics
1.介绍 在上篇中,介绍了ARM的Neon,本篇主要介绍Neon intrinsics的函数用法,也就是assembly之前的用法.NEON指令是从Armv7架构开始引入的SIMD指令,其共有16个1 ...
- 【neon加速拆分/合并交叉数据】使用neon intrinsics加速合并/拆分uv的内存分布(交叉存储/分别存储)
说明 在YUV格式的图片中,uv数据可以"UVUVUVUV"形式交叉存储叫NV12,也可以以"UUUUUVVVVV"的格式分开存储,为了将二者转换,需要类似如下 ...
最新文章
- 淄博职业学院计算机应用,2019年淄博职业学院单独招生云计算技术与应用专业技能测试实施细则...
- 推荐一个从高中就开始自学IT的大佬
- android 左移动画_Android研究院之游戏开发Tween动画的实现(十九)
- 对产品质量的一点思考
- python入门之函数调用第二关_Python入门之函数调用——第2关:函数正确调用 - 得到想要的结果...
- kubeadm源码分析(kubernetes离线安装包,三步安装)
- C# 使用Epplus导出Excel [4]:合并指定行
- Maven web项目(简单的表单提交) 搭建(eclipse)
- 哈希函数-SHA1和SHA256算法
- 完全卸载NI系列软件的方法
- atx motherboard layout ATX主板规格尺寸图
- 运行最新创建的镜像:
- Animated之实例篇
- CCLE:肿瘤细胞系百科全书
- IPaddr和IPaddr2的区别
- 寒假“搜索”练习题解
- Linux进程的创建
- 修改服务器连接数,服务器修改连接数
- 面试华为测试岗,收到offer后我却毫不犹豫拒绝了....
- 2021年起重机司机(限桥式起重机)模拟试题及起重机司机(限桥式起重机)实操考试视频