如何在C中创建测试并检查Arm neon

时间:2016-06-14 10:16:00

标签: c compiler-construction arm neon

我正在尝试用C编写测试来检查我对ARM氖内在的理解是否正确。我想将我的预期输出与Arm Neon的输出进行比较。我可以完成所有的int,uints,polys和float类型,但是我无法完成2D矢量类型。 Arm Neon出来提出索赔 错误:二进制表达式的操作数无效(' int8x8x2_t'(又名' struct int8x8x2_t')和' int8x8x2_t')。

这是我尝试编码的测试。我也无法获得printf功能。我知道它必须是一个结构,但我该怎么做呢。

#include<arm_neon.h>

#include<stdio.h>

int test_vtrn_s8()
{
    int8x8_t a = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 };
    int8x8_t b = { 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7 };

    int8x8x2_t want = { {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08},
                        {0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7} };


    int8x8x2_t result = vtrn_s8( a, b );

    for(int j = 0; j<2; ++j){
        for(int i = 0; i<8; ++i){
            if(want[j][i] != result[j][i] )
                return 1;
            /*printf("result is '0x%d'; and 'expected is 0x%dX\n", result, expected);*/
        }
    }
    return 0;
}

int main()
{
int pass = 0;
pass |= test_vtrn_s8();
return pass;

}

0 个答案:

没有答案