我正在尝试用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;
}