1 /* PR target/pr78794 */
2 /* { dg-do compile { target ia32 } } */
3 /* { dg-options "-O2 -march=slm -mno-bmi -mno-stackrealign" } */
4 /* { dg-final { scan-assembler "pandn" } } */
5 
6 typedef unsigned long long ull;
7 
8 struct S1
9 {
10   float x;
11   ull y;
12 };
13 
14 
15 struct S2
16 {
17   int a1;
18   struct S1 *node;
19   int *a2;
20 };
21 
22 void
foo(int c1,int c2,int c3,struct S2 * reg)23 foo(int c1, int c2, int c3, struct S2 *reg)
24 {
25   int i;
26   for(i=0; i<reg->a1; i++)
27     if(reg->node[i].y & ((ull) 1 << c1))
28       {
29 	if(reg->node[i].y & ((ull) 1 << c2))
30 	  reg->node[i].y ^= ((ull) 1 << c3);
31       }
32 }
33