Viewing file: bitops-1.c (1.06 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do run } */ /* { dg-options "-O3 -mzarch -march=arch12 --save-temps" } */ /* { dg-require-effective-target s390_vxe } */
typedef unsigned int uv4si __attribute__((vector_size(16)));
uv4si __attribute__((noinline)) not_xor (uv4si a, uv4si b) { return ~(a ^ b); } /* { dg-final { scan-assembler-times "vnx\t%v24,%v24,%v26" 1 } } */
uv4si __attribute__((noinline)) not_and (uv4si a, uv4si b) { return ~(a & b); } /* { dg-final { scan-assembler-times "vnn\t%v24,%v24,%v26" 1 } } */
uv4si __attribute__((noinline)) or_not (uv4si a, uv4si b) { return a | ~b; } /* { dg-final { scan-assembler-times "voc\t%v24,%v24,%v26" 1 } } */
int main () { uv4si a = (uv4si){ 42, 1, 0, 2 }; uv4si b = (uv4si){ 42, 2, 0, 2 }; uv4si c;
c = not_xor (a, b);
if (c[0] != ~0 || c[1] != ~3 || c[2] != ~0 || c[3] != ~0) __builtin_abort ();
c = not_and (a, b);
if (c[0] != ~42 || c[1] != ~0 || c[2] != ~0 || c[3] != ~2) __builtin_abort ();
c = or_not (a, b);
if (c[0] != ~0 || c[1] != ~2 || c[2] != ~0 || c[3] != ~0) __builtin_abort ();
return 0; }
|