3 /* Check if the instruction are being used also for compares. */
5 /* and with complement */
10 return (a
& ~b
) ? 23 : 42;
13 /* { dg-final { scan-assembler-times "\tncrk\t" 1 } } */
16 ncgrk (long long a
, long long b
)
18 return (a
& ~b
) ? 23 : 42;
21 /* { dg-final { scan-assembler-times "\tncgrk\t" 1 } } */
23 /* or with complement */
28 return (a
| ~b
) ? 23 : 42;
31 /* { dg-final { scan-assembler-times "\tocrk\t" 1 } } */
34 ocgrk (long long a
, long long b
)
36 return (a
| ~b
) ? 23 : 42;
39 /* { dg-final { scan-assembler-times "\tocgrk\t" 1 } } */
46 return ~(a
& b
) ? 23 : 42;
49 /* { dg-final { scan-assembler-times "\tnnrk\t" 1 } } */
52 nngrk (long long a
, long long b
)
54 return ~(a
& b
) ? 23 : 42;
57 /* { dg-final { scan-assembler-times "\tnngrk\t" 1 } } */
67 /* { dg-final { scan-assembler-times "\tnork\t" 1 } } */
70 nogrk (long long a
, long long b
)
72 return ~(a
| b
) ? 23 : 42;
75 /* { dg-final { scan-assembler-times "\tnogrk\t" 1 } } */
82 return ~(a
^ b
) ? 23 : 42;
85 /* { dg-final { scan-assembler-times "\tnxrk\t" 1 } } */
88 nxgrk (long long a
, long long b
)
90 return ~(a
^ b
) ? 23 : 42;
93 /* { dg-final { scan-assembler-times "\tnxgrk\t" 1 } } */