(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
ia64/
mno-fused-madd.c
       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); }