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
f1(V * p)14 f1 (V *p)
15 {
16   *p = (*p & ((V) { ONE })) ^ ((V) { ONE});
17 }
18 
19 void
f2(V * p)20 f2 (V *p)
21 {
22   *p = (*p ^ ((V) { ONE })) & ((V) { ONE});
23 }
24 
25 void
f3(V * p)26 f3 (V *p)
27 {
28   *p = (~*p) & ((V) { ONE });
29 }
30 
31 void
f4(V * p,V * q)32 f4 (V *p, V *q)
33 {
34   *p = (*p ^ *q) == *q;
35 }
36 
37 void
f5(V * p,V * q)38 f5 (V *p, V *q)
39 {
40   *p = (*p ^ *q) == *p;
41 }
42 
43 void
f6(V * p,V * q,V * r)44 f6 (V *p, V *q, V *r)
45 {
46   *p = (*p & *r) == (*q & *r);
47 }
48 
49 void
f7(V * p,V * q,V * r)50 f7 (V *p, V *q, V *r)
51 {
52   *p = (*p & *r) == (*r & *q);
53 }
54 
55 void
f8(V * p,V * q,V * r)56 f8 (V *p, V *q, V *r)
57 {
58   *p = (*r & *p) == (*q & *r);
59 }
60 
61 void
f9(V * p,V * q,V * r)62 f9 (V *p, V *q, V *r)
63 {
64   *p = (*r & *p) == (*r & *q);
65 }
66 
67 void
f10(W * p,W * q)68 f10 (W *p, W *q)
69 {
70   *p = *p < (((const W) { ONEU }) << *q);
71 }
72