/* PR target/100637 */
/* { dg-do compile } */
/* { dg-options "-O2 -msse2 -dp" } */

typedef char __v4qi __attribute__ ((__vector_size__ (4)));

__v4qi and (__v4qi a, __v4qi b) { return a & b; };

__v4qi andn (__v4qi a, __v4qi b) { return a & ~b; };

__v4qi or  (__v4qi a, __v4qi b) { return a | b; };

__v4qi xor  (__v4qi a, __v4qi b) { return a ^ b; };

__v4qi not  (__v4qi a) { return ~a; };

__v4qi plus  (__v4qi a, __v4qi b) { return a + b; };
/* { dg-final { scan-assembler "addv4qi3" } } */

__v4qi minus  (__v4qi a, __v4qi b) { return a - b; };
__v4qi neg  (__v4qi a) { return -a; };
/* { dg-final { scan-assembler-times "subv4qi3" 2 } } */
