| /* { dg-do compile } */ |
| /* { dg-options "-O2" } */ |
| |
| int |
| cmp_si_test1 (int a, int b, int c) |
| { |
| if (a > b) |
| return a + c; |
| else |
| return a + b + c; |
| } |
| |
| int |
| cmp_si_test2 (int a, int b, int c) |
| { |
| if ((a >> 3) > b) |
| return a + c; |
| else |
| return a + b + c; |
| } |
| |
| typedef long long s64; |
| |
| s64 |
| cmp_di_test1 (s64 a, s64 b, s64 c) |
| { |
| if (a > b) |
| return a + c; |
| else |
| return a + b + c; |
| } |
| |
| s64 |
| cmp_di_test2 (s64 a, s64 b, s64 c) |
| { |
| if ((a >> 3) > b) |
| return a + c; |
| else |
| return a + b + c; |
| } |
| |
| int |
| cmp_di_test3 (int a, s64 b, s64 c) |
| { |
| if (a > b) |
| return a + c; |
| else |
| return a + b + c; |
| } |
| |
| int |
| cmp_di_test4 (int a, s64 b, s64 c) |
| { |
| if (((s64)a << 3) > b) |
| return a + c; |
| else |
| return a + b + c; |
| } |
| |
| /* { dg-final { scan-assembler-times "cmp\tw\[0-9\]+, w\[0-9\]+" 2 } } */ |
| /* { dg-final { scan-assembler-times "cmp\tx\[0-9\]+, x\[0-9\]+" 2 } } */ |
| /* { dg-final { scan-assembler-times "cmp\tx\[0-9\]+, w\[0-9\]+, sxtw" 2 } } */ |