1. 對寄存器數據重排
/*
兩個向量,每兩個通道一組,第一個向量每組的后一個元素與第二個向量每組的第一個元素一次彼此交換
*/
#include <stdio.h>
#include <arm_neon.h>
void main()
{
int arrc[8]={0};
int arrd[4]={0};
int arre[4]={0};
// 1 2 3 4
// 5 6 7 8
int32x4_t a = {1,2,3,4};
int32x4_t b = {5,6,7,8};
// 1 5 3 7
// 2 6 4 8
int32x4x2_t c = vtrnq_s32(a,b);
// 1 5 3 7
int32x4_t d = vtrn1q_s32(a,b);
// 2 6 4 8
int32x4_t e= vtrn2q_s32(a,b);
vst1q_s32_x2(arrc,c);
vst1q_s32(arrd,d);
vst1q_s32(arre,e);
for(int i=0;i<8;i++)
printf("%d ",arrc[i]);
printf("\n====\n");
for(int i=0;i<4;i++)
printf("%d ",arrd[i]);
printf("\n====\n");
for(int i=0;i<4;i++)
printf("%d ",arre[i]);
printf("\n====\n");
}