| /* { dg-do compile } */ |
| /* { dg-options "-O2 -ffinite-math-only" } */ |
| |
| int |
| f1 (int a) |
| { |
| return a == 17 || a == 32; |
| } |
| |
| int |
| f2 (int a) |
| { |
| return a == 33 || a == 18; |
| } |
| |
| int |
| f3 (int a, int b) |
| { |
| return a == 19 && b == 34; |
| } |
| |
| int |
| f4 (int a, int b) |
| { |
| return a == 35 && b == 20; |
| } |
| |
| int |
| f5 (int a) |
| { |
| return a == 0 || a == 5; |
| } |
| |
| int |
| f6 (int a) |
| { |
| return a == 6 || a == 0; |
| } |
| |
| int |
| f7 (int a, int b) |
| { |
| return a == 0 && b == 7; |
| } |
| |
| int |
| f8 (int a, int b) |
| { |
| return a == 9 && b == 0; |
| } |
| |
| int |
| f9 (float a, float b) |
| { |
| return a < 0.0f && a > b; |
| } |
| |
| int |
| f10 (float a, float b) |
| { |
| return a == b || b == 0.0f; |
| } |
| |
| int |
| f11 (double a, int b) |
| { |
| return a < 0.0f && b == 30; |
| } |
| |
| int |
| f12 (double a, int b) |
| { |
| return b == 31 || a == 0.0f; |
| } |
| |
| int |
| f13 (int a, int b) |
| { |
| a += b; |
| return a == 3 || a == 0; |
| } |
| |
| /* { dg-final { scan-assembler "cmp\t(.)+32" } } */ |
| /* { dg-final { scan-assembler "cmp\t(.)+33" } } */ |
| /* { dg-final { scan-assembler "cmp\t(.)+34" } } */ |
| /* { dg-final { scan-assembler "cmp\t(.)+35" } } */ |
| |
| /* { dg-final { scan-assembler-times "\tcmp\tw\[0-9\]+, 0" 4 } } */ |
| /* { dg-final { scan-assembler-times "fcmpe\t(.)+0\\.0" 2 } } */ |
| /* { dg-final { scan-assembler-times "fcmp\t(.)+0\\.0" 2 } } */ |
| |
| /* { dg-final { scan-assembler "adds\t" } } */ |
| /* { dg-final { scan-assembler-times "\tccmp\t" 11 } } */ |
| /* { dg-final { scan-assembler-times "fccmp\t.*0\\.0" 1 } } */ |
| /* { dg-final { scan-assembler-times "fccmpe\t.*0\\.0" 1 } } */ |