/* Check that the rotcl instruction is generated. */ /* { dg-do compile } */ /* { dg-options "-O1" } */ /* { dg-skip-if "" { "sh*-*-*" } { "-m5*"} { "" } } */ /* { dg-final { scan-assembler-times "rotcl" 28 } } */ typedef char bool; long long test_00 (long long a) { return a << 1; } unsigned int test_01 (unsigned int a, int b, int c) { bool r = b == c; return ((a << 1) | r); } unsigned int test_02 (unsigned int a, int b, int c) { bool r = b == c; return ((a << 2) | r); } unsigned int test_03 (unsigned int a, int b, int c) { bool r = b == c; return ((a << 3) | r); } unsigned int test_04 (unsigned int a, int b, int c) { bool r = b == c; return ((a << 4) | r); } unsigned int test_05 (unsigned int a, int b, int c) { bool r = b == c; return ((a << 5) | r); } unsigned int test_06 (unsigned int a, int b, int c) { bool r = b == c; return ((a << 6) | r); } unsigned int test_07 (unsigned int a, int b, int c) { bool r = b == c; return ((a << 7) | r); } unsigned int test_08 (unsigned int a, int b, int c) { bool r = b == c; return ((a << 8) | r); } unsigned int test_09 (unsigned int a, int b, int c) { bool r = b == c; return ((a << 31) | r); } unsigned int test_10 (unsigned int a, int b) { /* 1x shlr, 1x rotcl */ return (a << 1) | (b & 1); } unsigned int test_11 (unsigned int a, int b) { /* 1x shlr, 1x rotcl (+1x add as shll) */ return (a << 2) | (b & 1); } unsigned int test_12 (unsigned int a, int b) { /* 1x shlr, 1x shll2, 1x rotcl */ return (a << 3) | (b & 1); } unsigned int test_13 (unsigned int a, int b) { /* 1x shll, 1x rotcl */ bool r = b < 0; return (a << 1) | r; } unsigned int test_14 (unsigned int a, int b, int c) { bool r = b != c; return ((a << 1) | r); } unsigned int test_15 (unsigned int a, int b, int c) { bool r = b != c; return ((a << 11) | r); } unsigned int test_16 (unsigned int a, int b, int c) { bool r = b != c; return ((a << 3) | r); } unsigned int test_17 (unsigned int a, int b, int c) { bool r = b != c; return ((a << 4) | r); } unsigned int test_18 (unsigned int a, int b, int c) { bool r = b != c; return ((a << 5) | r); } unsigned int test_19 (unsigned int a, int b, int c) { bool r = b != c; return ((a << 6) | r); } unsigned int test_20 (unsigned int a, int b, int c) { bool r = b != c; return ((a << 7) | r); } unsigned int test_21 (unsigned int a, int b, int c) { bool r = b != c; return ((a << 8) | r); } unsigned int test_22 (unsigned int a, int b, int c) { bool r = b != c; return ((a << 31) | r); } unsigned int test_23 (unsigned int a, int b, int c) { /* 1x shll, 1x rotcl */ return (a >> 31) | (b << 13); } unsigned int test_24 (unsigned int a, unsigned int b) { /* 1x shll, 1x rotcl */ return (a >> 31) | (b << 1); } unsigned int test_25 (unsigned int a, unsigned int b) { /* 1x shll, 1x rotcl */ return (a >> 31) | (b << 3); } unsigned int test_26 (unsigned int a, unsigned int b) { /* 1x shll, 1x rotcl */ return (b << 3) | (a >> 31); } unsigned int test_27 (unsigned int a, unsigned int b) { /* 1x shlr, 1x rotcl */ return (a << 1) | ((b >> 4) & 1); }