ARM NEON test 函数

来源:互联网 发布:博奥颐和是传销吗 知乎 编辑:程序博客网 时间:2024/06/09 03:16
/*the following is printf something test

*/
#include <stdlib.h>
#include "arm_neon.h"


/***************   float    *****************/
void neon_float32_4(uint32x4_t a)
{
    unsigned int i,j;
    uint32_t *zz=(uint32_t *)malloc(sizeof(uint32_t)*4);
    vst1q_f32(zz,a);
    printf("\nneon float 32x4 :");
    for(i=0;i<4;i++)
    {
        printf(" %f ",*zz);
        zz++;
    }
    printf("\n");
}

// float 32x2
void neon_float32_2(uint32x2_t a)
{
    unsigned int i,j;
    uint32_t *zz=(uint32_t *)malloc(sizeof(uint32_t)*2);
    vst1_f32(zz,a);
    printf("\nneon float 32x2 :");
    for(i=0;i<2;i++)
    {
        printf(" %f ",*zz);
        zz++;
    }
    printf("\n");
}

/*********************************************************
         neon  64 bit  
**********************************************************/
/***************  uint         *****************/
//uint 8x8 and 8x16
void neon_uint8(uint8x8_t a)
{
    unsigned int i;
    uint8_t *zz=(uint8_t *)malloc(sizeof(uint8_t)*8);
    vst1(zz,a);
    printf("\n uint 8x8 :\n");
    for(i=0;i<8;i++)
    {
        printf(" %d ",*zz);
        zz++;
    }
    printf(\n);
}


//uint 16x4
void neon_uint16(uint16x4_t a)
{
    unsigned int i;
    uint16_t *zz=(uint16_t *)malloc(sizeof(uint8_t)*8);
    vst1(zz,a);
    printf("\n uint 16x4 :\n");
    for(i=0;i<8;i++)
    {
        printf(" %d ",*zz);
        zz++;
    }
    printf(\n);

}

//uint 32x2
void neon_uint32(uint32x2_t a)
{
    unsigned int i;
    uint32x2_t *zz=(uint32_t *)malloc(sizeof(uint32_t)*2);
    vst1(zz,a);
    printf("\n uint 32x2 :\n");
    for(i=0;i<2;i++)
    {
        printf(" %d ",*zz);
        zz++;
    }
    printf(\n);

}

/***************  int      **************/
//int 8x8
void neon_int8(uint8x8_t a)
{
    unsigned int i;
    int8_t *zz=(int8_t *)malloc(sizeof(int8_t)*8);
    vst1(zz,a);
    printf("\n uint 8x8 :\n");
    for(i=0;i<8;i++)
    {
        printf(" %d ",*zz);
        zz++;
    }
    printf(\n);
}


//int 16x4
void neon_int16(int16x4_t a)
{
    unsigned int i;
    int16_t *zz=(int16_t *)malloc(sizeof(int8_t)*8);
    vst1(zz,a);
    printf("\n int 16x4 :\n");
    for(i=0;i<8;i++)
    {
        printf(" %d ",*zz);
        zz++;
    }
    printf(\n);

}

//int 32x2
void neon_int32(int32x2_t a)
{
    unsigned int i;
    int32x2_t *zz=(int32_t *)malloc(sizeof(int32_t)*2);
    vst1(zz,a);
    printf("\n uint 32x2 :\n");
    for(i=0;i<2;i++)
    {
        printf(" %d ",*zz);
        zz++;
    }
    printf(\n);

}



/****************************************************************
               neon   128 bit  
**************************************************************/
// 8x16
void neon_uintq8(uint8x16_t a)
{
    unsigned int i;
    uint8_t *zz=(uint8_t *)malloc(sizeof(uint8_t)*16);
    vst1q(zz,a);
    printf("\n uint 8x16 :\n");
    for(i=0;i<16;i++)
    {
        printf(" %d ",*zz);
        zz++;
    }
    printf(\n);
}


//uint 16x8
void neon_uint16(uint16x4_t a)
{
    unsigned int i;
    uint16_t *zz=(uint16_t *)malloc(sizeof(uint8_t)*8);
    vst1(zz,a);
    printf("\n uint 16x4 :\n");
    for(i=0;i<8;i++)
    {
        printf(" %d ",*zz);
        zz++;
    }
    printf(\n);

}

//uint 32x4
void neon_uint32(uint32x2_t a)
{
    unsigned int i;
    uint32x2_t *zz=(uint32_t *)malloc(sizeof(uint32_t)*2);
    vst1(zz,a);
    printf("\n uint 32x2 :\n");
    for(i=0;i<2;i++)
    {
        printf(" %d ",*zz);
        zz++;
    }
    printf(\n);

}