diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.target/aarch64/vect-clz.c')
-rw-r--r-- | gcc-4.9/gcc/testsuite/gcc.target/aarch64/vect-clz.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vect-clz.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vect-clz.c new file mode 100644 index 000000000..8f1fe7090 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vect-clz.c @@ -0,0 +1,35 @@ +/* { dg-do run } */ +/* { dg-options "-O3 -save-temps -fno-inline" } */ + +extern void abort (); + +void +count_lz_v4si (unsigned *__restrict a, int *__restrict b) +{ + int i; + + for (i = 0; i < 4; i++) + b[i] = __builtin_clz (a[i]); +} + +/* { dg-final { scan-assembler "clz\tv\[0-9\]+\.4s" } } */ + +int +main () +{ + unsigned int x[4] = { 0x0, 0xFFFF, 0x1FFFF, 0xFFFFFFFF }; + int r[4] = { 32, 16, 15, 0 }; + int d[4], i; + + count_lz_v4si (x, d); + + for (i = 0; i < 4; i++) + { + if (d[i] != r[i]) + abort (); + } + + return 0; +} + +/* { dg-final { cleanup-saved-temps } } */ |