安装
sudo apt install gcc-arm-linux-gnueabihf -y # 交叉编译器
sudo apt install libnewlib-arm-none-eabi -y # arm_neon.h
测试
neon_tes.cpp
#include <stdio.h>
#include <stdlib.h>
#include <arm_neon.h>
#include <math.h>
//---------------------------------------------
//
//
//使用NEON实现 a + b = c
//
//
//---------------------------------------------
int main()
{
//定义a, b, c
unsigned char a[8] = {0, 1, 2, 3, 4, 5, 6, 7};
unsigned char b[8] = {8, 9, 10, 11, 12, 13, 14, 15};
unsigned char c[8];
uint8x8_t rega, regb, regc; //定义3个8x8bit无符号整型的 NEON 寄存器
//加载 a, b 到寄存器
rega = vld1_u8(&a[0]);
regb = vld1_u8(&b[0]);
regc = vadd_u8(rega, regb); //做加法
vst1_u8(&c[0], regc); //回写到c中
//测试
for(int i = 0 ; i < 8 ; i++)
{
printf("%d ",c[i] );
}
printf("\n");
}
编译执行,
g++ -g -o neon_test neon_test.cpp
输出如下:
~/Downloads/NEON/NEON_0$ ./neon_test
8 10 12 14 16 18 20 22