| /* PR target/pr78794 */ | |
| /* { dg-do compile { target ia32 } } */ | |
| /* { dg-options "-O2 -march=slm -mno-bmi -mno-stackrealign" } */ | |
| /* { dg-final { scan-assembler "pandn" } } */ | |
| typedef unsigned long long ull; | |
| struct S1 | |
| { | |
| float x; | |
| ull y; | |
| }; | |
| struct S2 | |
| { | |
| int a1; | |
| struct S1 *node; | |
| int *a2; | |
| }; | |
| void | |
| foo(int c1, int c2, int c3, struct S2 *reg) | |
| { | |
| int i; | |
| for(i=0; i<reg->a1; i++) | |
| if(reg->node[i].y & ((ull) 1 << c1)) | |
| { | |
| if(reg->node[i].y & ((ull) 1 << c2)) | |
| reg->node[i].y ^= ((ull) 1 << c3); | |
| } | |
| } |