/* { dg-compile } */ /* Check if the instruction are being used also for compares. */ /* and with complement */ int ncrk (int a, int b) { return (a & ~b) ? 23 : 42; } /* { dg-final { scan-assembler-times "\tncrk\t" 1 } } */ int ncgrk (long long a, long long b) { return (a & ~b) ? 23 : 42; } /* { dg-final { scan-assembler-times "\tncgrk\t" 1 } } */ /* or with complement */ int ocrk (int a, int b) { return (a | ~b) ? 23 : 42; } /* { dg-final { scan-assembler-times "\tocrk\t" 1 } } */ int ocgrk (long long a, long long b) { return (a | ~b) ? 23 : 42; } /* { dg-final { scan-assembler-times "\tocgrk\t" 1 } } */ /* nand */ int nnrk (int a, int b) { return ~(a & b) ? 23 : 42; } /* { dg-final { scan-assembler-times "\tnnrk\t" 1 } } */ int nngrk (long long a, long long b) { return ~(a & b) ? 23 : 42; } /* { dg-final { scan-assembler-times "\tnngrk\t" 1 } } */ /* nor */ int nork (int a, int b) { return ~(a | b); } /* { dg-final { scan-assembler-times "\tnork\t" 1 } } */ int nogrk (long long a, long long b) { return ~(a | b) ? 23 : 42; } /* { dg-final { scan-assembler-times "\tnogrk\t" 1 } } */ /* nxor */ int nxrk (int a, int b) { return ~(a ^ b) ? 23 : 42; } /* { dg-final { scan-assembler-times "\tnxrk\t" 1 } } */ int nxgrk (long long a, long long b) { return ~(a ^ b) ? 23 : 42; } /* { dg-final { scan-assembler-times "\tnxgrk\t" 1 } } */