| /* { dg-do run } */ |
| /* { dg-options "-O3 -march=armv8.2-a" } */ |
| |
| #include "vect-shr-reg.c" |
| |
| int |
| main(void) |
| { |
| int64_t a[16]; |
| int64_t b[16]; |
| int64_t c[17]; |
| |
| uint64_t ua[16]; |
| uint64_t ub[16]; |
| uint64_t uc[17]; |
| |
| int64_t res_a[16]; |
| uint64_t res_ua[16]; |
| |
| int i; |
| |
| /* Set up inputs. */ |
| for (i = 0; i < 16; i++) |
| { |
| b[i] = -2; |
| c[i] = 34; |
| ub[i] = 0xffffffffffffffff; |
| uc[i] = 52; |
| } |
| |
| /* Set up reference values. */ |
| for (i = 0; i < 16; i++) |
| { |
| res_a[i] = -1LL; |
| res_ua[i] = 0x0fffLL; |
| } |
| |
| /* Do the shifts. */ |
| f (ua, ub, uc); |
| g (a, b, c); |
| |
| /* Compare outputs against reference values. */ |
| for (i = 0; i < 16; i++) |
| { |
| if (a[i] != res_a[i]) |
| __builtin_abort (); |
| |
| if (ua[i] != res_ua[i]) |
| __builtin_abort (); |
| } |
| |
| return 0; |
| } |