| /* { dg-do compile } */ |
| /* { dg-options "-O2" } */ |
| |
| extern double fma (double, double, double); |
| extern float fmaf (float, float, float); |
| |
| double test_fma1 (double x, double y, double z) |
| { |
| return fma (x, y, z); |
| } |
| |
| float test_fma2 (float x, float y, float z) |
| { |
| return fmaf (x, y, z); |
| } |
| |
| double test_fnma1 (double x, double y, double z) |
| { |
| return fma (-x, y, z); |
| } |
| |
| float test_fnma2 (float x, float y, float z) |
| { |
| return fmaf (-x, y, z); |
| } |
| |
| double test_fms1 (double x, double y, double z) |
| { |
| return fma (x, y, -z); |
| } |
| |
| float test_fms2 (float x, float y, float z) |
| { |
| return fmaf (x, y, -z); |
| } |
| |
| double test_fnms1 (double x, double y, double z) |
| { |
| return fma (-x, y, -z); |
| } |
| |
| float test_fnms2 (float x, float y, float z) |
| { |
| return fmaf (-x, y, -z); |
| } |
| |
| /* { dg-final { scan-assembler-times "fmadd\td\[0-9\]" 1 } } */ |
| /* { dg-final { scan-assembler-times "fmadd\ts\[0-9\]" 1 } } */ |
| /* { dg-final { scan-assembler-times "fmsub\td\[0-9\]" 1 } } */ |
| /* { dg-final { scan-assembler-times "fmsub\ts\[0-9\]" 1 } } */ |
| /* { dg-final { scan-assembler-times "fnmsub\td\[0-9\]" 1 } } */ |
| /* { dg-final { scan-assembler-times "fnmsub\ts\[0-9\]" 1 } } */ |
| /* { dg-final { scan-assembler-times "fnmadd\td\[0-9\]" 1 } } */ |
| /* { dg-final { scan-assembler-times "fnmadd\ts\[0-9\]" 1 } } */ |
| |