1 /* { dg-do compile */
2 /* { dg-options "-O2 -ffp-contract=off" } */
3 /* { dg-final { scan-assembler-not "fma" } } */
4 /* { dg-final { scan-assembler-not "fms" } } */
5 /* { dg-final { scan-assembler-not "fnma" } } */
6 /* { dg-final { scan-assembler "fmpy" } } */
7 /* { dg-final { scan-assembler "fadd" } } */
8 /* { dg-final { scan-assembler "fsub" } } */
9
10 float foo01(float a, float b, float c) {return (a + b * c);}
11 float foo02(float a, float b, float c) {return (a - b * c);}
12 float foo03(float a, float b, float c) {return (a * b + c);}
13 float foo04(float a, float b, float c) {return (a * b - c);}
14
15 double foo05(double a, double b, double c) {return (a + b * c);}
16 double foo06(double a, double b, double c) {return (a - b * c);}
17 double foo07(double a, double b, double c) {return (a * b + c);}
18 double foo08(double a, double b, double c) {return (a * b - c);}
19
20 __float80 foo09(__float80 a, __float80 b, __float80 c) {return (a + b * c);}
21 __float80 foo10(__float80 a, __float80 b, __float80 c) {return (a - b * c);}
22 __float80 foo11(__float80 a, __float80 b, __float80 c) {return (a * b + c);}
23 __float80 foo12(__float80 a, __float80 b, __float80 c) {return (a * b - c);}
24
25
26
27 float foo20(double a, double b, double c) {return (float) (a + b * c);}
28 float foo21(double a, double b, double c) {return (float) (a - b * c);}
29 float foo22(double a, double b, double c) {return (float) (a * b + c);}
30 float foo23(double a, double b, double c) {return (float) (a * b - c);}
31
32 float foo24(__float80 a, __float80 b, __float80 c) {return (float) (a + b * c);}
33 float foo25(__float80 a, __float80 b, __float80 c) {return (float) (a - b * c);}
34 float foo26(__float80 a, __float80 b, __float80 c) {return (float) (a * b + c);}
35 float foo27(__float80 a, __float80 b, __float80 c) {return (float) (a * b - c);}
36
37 double foo28(__float80 a, __float80 b, __float80 c) {return (double) (a + b * c);}
38 double foo29(__float80 a, __float80 b, __float80 c) {return (double) (a - b * c);}
39 double foo30(__float80 a, __float80 b, __float80 c) {return (double) (a * b + c);}
40 double foo31(__float80 a, __float80 b, __float80 c) {return (double) (a * b - c);}
41
42
43 float foo001(float a, float b, double c) { return (a + b * c); }
44 float foo002(float a, float b, double c) { return (a - b * c); }
45
46 float foo005(float a, double b, double c) { return (a + b * c); }
47 float foo006(float a, double b, double c) { return (a - b * c); }
48 float foo007(float a, double b, double c) { return (a * b + c); }
49 float foo008(float a, double b, double c) { return (a * b - c); }
50
51 double foo009(double a, float b, double c) { return (a + b * c); }
52 double foo010(double a, float b, double c) { return (a - b * c); }
53 double foo011(double a, float b, double c) { return (a * b + c); }
54 double foo012(double a, float b, double c) { return (a * b - c); }
55
56 float foo013(float a, double b, __float80 c) { return (a + b * c); }
57 float foo014(float a, double b, __float80 c) { return (a - b * c); }
58 float foo017(double a, float b, __float80 c) { return (a + b * c); }
59 float foo018(double a, float b, __float80 c) { return (a - b * c); }
60
61 float foo021(float a, __float80 b, double c) { return (a + b * c); }
62 float foo022(float a, __float80 b, double c) { return (a - b * c); }
63 float foo023(float a, __float80 b, double c) { return (a * b + c); }
64 float foo024(float a, __float80 b, double c) { return (a * b - c); }