PR inline-asm/84742
[official-gcc.git] / gcc / testsuite / gcc.target / ia64 / mfused-madd.c
blob8ecb31f0dd3a1468ede7cfca44051c183198882e
1 /* { dg-do compile */
2 /* { dg-options "-O2" } */
3 /* { dg-final { scan-assembler-not "fmpy" } } */
4 /* { dg-final { scan-assembler-not "fadd" } } */
5 /* { dg-final { scan-assembler-not "fsub" } } */
6 /* { dg-final { scan-assembler "fma" } } */
7 /* { dg-final { scan-assembler "fms" } } */
8 /* { dg-final { scan-assembler "fnma" } } */
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);}
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);}
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);}
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);}
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);}
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);}
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); }
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); }
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); }
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); }
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); }