blob: cf4e7ae4679d5b1896f35e3bf3135b0bd42befde [file] [log] [blame]
/* Test the vabsd_s64 intrinsic. */
/* { dg-do run } */
/* { dg-options "--save-temps -O2" } */
#include <arm_neon.h>
#include <limits.h>
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;
}