On 11 November 2014 09:37, Yangfei (Felix) <felix.y...@huawei.com> wrote: >> > Hello, >> > >> > I have written a testsuite for AArch32 Neon intrinsics, available at >> > https://gitorious.org/arm-neon-tests >> > >> > I am in the process of converting in into DejaGnu form for integration >> > into GCC. >> > >> > My most recent submission was >> > https://gcc.gnu.org/ml/gcc-patches/2014-07/msg00022.html >> > but I plan to submit another version soon. >> > >> > As you'll notice, this first submission only covers a small subset of >> > the original testsuite, but I do plan to convert it all. >> > >> > That being said, the current testsuite only covers AArch32 Neon >> > intrinsics, and needs to be expanded to cover the AArch64. It is still >> > useful to test the AArch32 subset on AArch64. >> > >> > Christophe. > > > Hello Christophe, > > Is the testsuite https://gitorious.org/arm-neon-tests written for > little-endian? > I noticed that some testcases treat "result_int8x8" as an array and access > it by array indexing when checking the test result. > And this will not work for big-endian. > > An example: > exec_vzip > { > int8_t buffer_int8x8 [] = { (int8_t)-16, (int8_t)-15, (int8_t)-14, > (int8_t)-13, (int8_t)-12, (int8_t)-11, (int8_t)-10, (int8_t)-9, }; > int8x8_t vector1_int8x8; > int8x8_t vector2_int8x8; > vector1_int8x8 = vld1_s8(buffer_int8x8); > vector2_int8x8 = vdup_n_s8(0x11); > result_vec_int8x8x2 = vzip_s8(vector1_int8x8, vector2_int8x8); > vst2_s8(result_bis_int8x8, result_vec_int8x8x2); > memcpy(result_int8x8, result_bis_int8x8, sizeof(result_int8x8)); > > > { { int i; for(i=0; i<8 ; i++) { if (result_int8x8[i] != > expected0_int8x8[i]) { fprintf(stderr, "ERROR in %s (%s line %d in buffer > '%s') at type %s " "index %d: got 0x%" "x" " != 0x%" "x" " %s\n", > "VZIP/VZIPQ", "./gcc.target/aarch64/advsimd-intrinsics/vzip.c", 232, > "expected0", "int8x8", i, result_int8x8[i], expected0_int8x8[i], > strlen("(chunk 0)") > 0 ? "(chunk 0)" : ""); abort(); } } }; }; >
Hi, The vzip test you mention has been ported to the GCC Dejagnu testsuite, and it does pass on armeb* targets. It currently fails on aarch64_be (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63652), but I suspect it's because we also have vldX/vldX_lane failing on aarch64_be (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63653). There is WIP to fix this. Regarding the testsuite on gitorious, I didn't have an environment suitable to properly run tests in big-endian mode, so there may be some problems left. Christophe.