1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -mavx2" } */
       3  
       4  typedef char v16qi __attribute__ ((vector_size (16)));
       5  typedef short v8hi __attribute__ ((vector_size (16)));
       6  typedef int v4si __attribute__ ((vector_size (16)));
       7  
       8  typedef char v32qi __attribute__ ((vector_size (32)));
       9  typedef short v16hi __attribute__ ((vector_size (32)));
      10  typedef int v8si __attribute__ ((vector_size (32)));
      11  
      12  v16qi foo_v16qi (char a, v16qi b)
      13  {
      14      return (__extension__ (v16qi) {~a, ~a, ~a, ~a, ~a, ~a, ~a, ~a,
      15                                     ~a, ~a, ~a, ~a, ~a, ~a, ~a, ~a}) & b;
      16  }
      17  
      18  v8hi foo_v8hi (short a, v8hi b)
      19  {
      20      return (__extension__ (v8hi) {~a, ~a, ~a, ~a, ~a, ~a, ~a, ~a,}) & b;
      21  }
      22  
      23  v4si foo_v4si (int a, v4si b)
      24  {
      25      return (__extension__ (v4si) {~a, ~a, ~a, ~a}) & b;
      26  }
      27  
      28  v32qi foo_v32qi (char a, v32qi b)
      29  {
      30      return (__extension__ (v32qi) {~a, ~a, ~a, ~a, ~a, ~a, ~a, ~a,
      31                                     ~a, ~a, ~a, ~a, ~a, ~a, ~a, ~a,
      32                                     ~a, ~a, ~a, ~a, ~a, ~a, ~a, ~a,
      33                                     ~a, ~a, ~a, ~a, ~a, ~a, ~a, ~a}) & b;
      34  }
      35  
      36  v16hi foo_v16hi (short a, v16hi b)
      37  {
      38      return (__extension__ (v16hi) {~a, ~a, ~a, ~a, ~a, ~a, ~a, ~a,
      39                                     ~a, ~a, ~a, ~a, ~a, ~a, ~a, ~a}) & b;
      40  }
      41  
      42  v8si foo_v8si (int a, v8si b)
      43  {
      44      return (__extension__ (v8si) {~a, ~a, ~a, ~a, ~a, ~a, ~a, ~a,}) & b;
      45  }
      46  
      47  /* { dg-final { scan-assembler-times "vpandn" 6 } } */