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)23foo(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