1  /* Test that you can inline a function without custom insn attributes into
       2     one that does have custom insn attributes.  */
       3  
       4  /* { dg-do compile } */
       5  /* { dg-options "-O1 -ffinite-math-only" } */
       6  
       7  /* -O1 in the options is significant.  Without it FP operations may not be
       8     optimized to custom instructions.  */
       9  
      10  #include <math.h>
      11  
      12  static inline 
      13  __attribute__ ((always_inline))
      14  void
      15  custom_fp1 (float operand_a, float operand_b, float *result)
      16  
      17  {
      18    result[0] = fmaxf (operand_a, operand_b);
      19    result[1] = fminf (operand_a, operand_b);
      20  }
      21  
      22  extern void
      23  custom_fp (float operand_a, float operand_b, float *result)
      24    __attribute__ ((target ("custom-fmaxs=246,custom-fmins=247")));
      25  
      26  void
      27  custom_fp (float operand_a, float operand_b, float *result)
      28  {
      29    custom_fp1 (operand_a, operand_b, result);
      30  }
      31  
      32  /* { dg-final { scan-assembler "custom\\t246, .* # fmaxs .*" } } */
      33  /* { dg-final { scan-assembler "custom\\t247, .* # fmins .*" } } */