/* Test QBBC recognition */ /* { dg-do run } */ /* { dg-options "-O1" } */ /* -O1 in the options is significant. Without it bit-check-and-branch operation may not be optimized to QBBC. */ extern void abort (void); unsigned int test_qbbc_reg (unsigned int a, unsigned int b, unsigned int val) { if (!(val & (1 << 19))) return a; return b; } int main (int argc, char** argv) { if (test_qbbc_reg (101, 505, (1u << 19)) != 505) abort(); if (test_qbbc_reg (101, 505, (1u << 18)) != 101) abort(); return 0; }