1  /* PR target/100637 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -msse2 -dp" } */
       4  
       5  typedef short __v2hi __attribute__ ((__vector_size__ (4)));
       6  typedef unsigned short __v2hu __attribute__ ((__vector_size__ (4)));
       7  
       8  __v2hi and (__v2hi a, __v2hi b) { return a & b; };
       9  
      10  __v2hi andn (__v2hi a, __v2hi b) { return a & ~b; };
      11  
      12  __v2hi or  (__v2hi a, __v2hi b) { return a | b; };
      13  
      14  __v2hi xor  (__v2hi a, __v2hi b) { return a ^ b; };
      15  
      16  __v2hi not  (__v2hi a) { return ~a; };
      17  
      18  __v2hi plus  (__v2hi a, __v2hi b) { return a + b; };
      19  /* { dg-final { scan-assembler "addv2hi3" } } */
      20  
      21  __v2hi minus  (__v2hi a, __v2hi b) { return a - b; };
      22  __v2hi neg  (__v2hi a) { return -a; };
      23  /* { dg-final { scan-assembler-times "subv2hi3" 2 } } */
      24  
      25  __v2hi mul  (__v2hi a, __v2hi b) { return a * b; };
      26  /* { dg-final { scan-assembler "mulv2hi3" } } */
      27  
      28  __v2hi shl (__v2hi a, int b) { return a << b; };
      29  /* { dg-final { scan-assembler "ashlv2hi3" } } */
      30  
      31  __v2hi ashr (__v2hi a, int b) { return a >> b; };
      32  /* { dg-final { scan-assembler "ashrv2hi3" } } */
      33  
      34  __v2hu lshr  (__v2hu a, int b) { return a >> b; };
      35  /* { dg-final { scan-assembler "lshrv2hi3" } } */