1  /* PR tree-optimization/54713 */
       2  /* { dg-skip-if "exceeds eBPF stack limit" { bpf-*-* } } */
       3  
       4  #ifndef N
       5  #define N 8
       6  #define ONE 1, 1, 1, 1, 1, 1, 1, 1
       7  #define ONEU 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U
       8  #endif
       9  
      10  typedef int V __attribute__((vector_size (N * sizeof (int))));
      11  typedef unsigned int W __attribute__((vector_size (N * sizeof (int))));
      12  
      13  void
      14  f1 (V *p)
      15  {
      16    *p = (*p & ((V) { ONE })) ^ ((V) { ONE});
      17  }
      18  
      19  void
      20  f2 (V *p)
      21  {
      22    *p = (*p ^ ((V) { ONE })) & ((V) { ONE});
      23  }
      24  
      25  void
      26  f3 (V *p)
      27  {
      28    *p = (~*p) & ((V) { ONE });
      29  }
      30  
      31  void
      32  f4 (V *p, V *q)
      33  {
      34    *p = (*p ^ *q) == *q;
      35  }
      36  
      37  void
      38  f5 (V *p, V *q)
      39  {
      40    *p = (*p ^ *q) == *p;
      41  }
      42  
      43  void
      44  f6 (V *p, V *q, V *r)
      45  {
      46    *p = (*p & *r) == (*q & *r);
      47  }
      48  
      49  void
      50  f7 (V *p, V *q, V *r)
      51  {
      52    *p = (*p & *r) == (*r & *q);
      53  }
      54  
      55  void
      56  f8 (V *p, V *q, V *r)
      57  {
      58    *p = (*r & *p) == (*q & *r);
      59  }
      60  
      61  void
      62  f9 (V *p, V *q, V *r)
      63  {
      64    *p = (*r & *p) == (*r & *q);
      65  }
      66  
      67  void
      68  f10 (W *p, W *q)
      69  {
      70    *p = *p < (((const W) { ONEU }) << *q);
      71  }