1/* { dg-do compile } */ 2/* { dg-options "-O2 -mfmaf" } */ 3 4float fmadds (float a, float b, float c) 5{ 6 return a * b + c; 7} 8 9float fmsubs (float a, float b, float c) 10{ 11 return a * b - c; 12} 13 14float fnmadds (float a, float b, float c) 15{ 16 return -(a * b + c); 17} 18 19float fnmsubs (float a, float b, float c) 20{ 21 return -(a * b - c); 22} 23 24double fmaddd (double a, double b, double c) 25{ 26 return a * b + c; 27} 28 29double fmsubd (double a, double b, double c) 30{ 31 return a * b - c; 32} 33 34double fnmaddd (double a, double b, double c) 35{ 36 return -(a * b + c); 37} 38 39double fnmsubd (double a, double b, double c) 40{ 41 return -(a * b - c); 42} 43 44/* { dg-final { scan-assembler "fmadds\t%" } } */ 45/* { dg-final { scan-assembler "fmsubs\t%" } } */ 46/* { dg-final { scan-assembler "fnmadds\t%" } } */ 47/* { dg-final { scan-assembler "fnmsubs\t%" } } */ 48/* { dg-final { scan-assembler "fmaddd\t%" } } */ 49/* { dg-final { scan-assembler "fmsubd\t%" } } */ 50/* { dg-final { scan-assembler "fnmaddd\t%" } } */ 51/* { dg-final { scan-assembler "fnmsubd\t%" } } */ 52