/* Test the vabsd_s64 intrinsic. */ /* { dg-do run } */ /* { dg-options "--save-temps -O2" } */ #include #include extern void abort (void); #define force_simd(V1) asm volatile ("mov %d0, %1.d[0]" \ : "=w"(V1) \ : "w"(V1) \ : /* No clobbers */); #define RUN_TEST(test, answ) \ { \ force_simd (test); \ force_simd (answ); \ int64_t res = vabsd_s64 (test); \ force_simd (res); \ if (res != answ) \ abort (); \ } int64_t input[] = {INT64_MAX, 10, 0, -10, INT64_MIN + 1, INT64_MIN}; int64_t expected[] = {INT64_MAX, 10, 0, 10, INT64_MAX, INT64_MIN}; int main (void) { RUN_TEST (input[0], expected[0]); RUN_TEST (input[1], expected[1]); RUN_TEST (input[2], expected[2]); RUN_TEST (input[3], expected[3]); RUN_TEST (input[4], expected[4]); RUN_TEST (input[5], expected[5]); return 0; }