1  /* { dg-do compile } */
       2  /* { dg-options "-O3" } */
       3  /* { dg-require-effective-target arm_v8_2a_fp16_scalar_ok } */
       4  /* { dg-add-options arm_v8_2a_fp16_scalar } */
       5  
       6  extern __fp16 foo ();
       7  extern void bar (__fp16* x);
       8  
       9  void f1 ()
      10  {
      11    volatile __fp16 a = 17.0;
      12  }
      13  
      14  
      15  void f2 (__fp16 *a)
      16  {
      17    *a = 17.0;
      18  }
      19  
      20  void f3 ()
      21  {
      22    __fp16 b = foo ();
      23    b = 17.0;
      24    bar (&b);
      25  }
      26  
      27  __fp16 f4 ()
      28  {
      29    __fp16 a = 0;
      30    __fp16 b = 1;
      31    __fp16 c = 2;
      32    __fp16 d = 4;
      33  
      34    __fp16 z = a + b;
      35    z = z + c;
      36    z = z - d;
      37    return z;
      38  }
      39  
      40  __fp16 f5 ()
      41  {
      42    __fp16 a = 16;
      43    bar (&a);
      44    return a;
      45  }
      46  
      47  /* { dg-final { scan-assembler-times {fmov\th[0-9]+, #?1\.7e\+1}  3 } } */
      48  /* { dg-final { scan-assembler-times {fmov\th[0-9]+, #?-1\.0e\+0} 1 } } */
      49  /* { dg-final { scan-assembler-times {fmov\th[0-9]+, #?1\.6e\+1}  1 } } */