(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
csky/
fpuv3/
fpv3_fmov.c
       1  /* { dg-do compile } */
       2  /* { dg-skip-if  "test is specific to ck860f"  { csky-*-* }  { "*" }  { "-mcpu=ck860*f* -mfloat-abi=hard" "-mcpu=ck860*f* -mhard-float"  }  }  */
       3  /* { dg-options "-O2 -mfpu=fpv3" } */
       4  
       5  #define FUNC(i) func_ ## i
       6  
       7  #define FTYPE __fp16
       8  FTYPE FUNC(ld16) (FTYPE *a, FTYPE *b)
       9  {
      10    return *a = *b;
      11  }
      12  
      13  /* { dg-final { scan-assembler "fld\.16" } }*/
      14  /* { dg-final { scan-assembler "fst\.16" } }*/
      15  
      16  #undef FTYPE
      17  #define FTYPE float
      18  FTYPE FUNC(ld32) (FTYPE *a, FTYPE *b)
      19  {
      20    return *a = *b;
      21  }
      22  
      23  /* { dg-final { scan-assembler "fld\.32" } }*/
      24  /* { dg-final { scan-assembler "fld\.32" } }*/
      25  
      26  #undef FTYPE
      27  #define FTYPE double
      28  FTYPE FUNC(ld64) (FTYPE *a, FTYPE *b)
      29  {
      30    return *a = *b;
      31  }
      32  
      33  /* { dg-final { scan-assembler "fld\.64" } }*/
      34  /* { dg-final { scan-assembler "fst\.64" } }*/
      35  
      36  
      37  #undef FTYPE
      38  #define FTYPE __fp16
      39  FTYPE FUNC(ldr16) (FTYPE *a, int i, FTYPE *b)
      40  {
      41    return a[i] = b[i];
      42  }
      43  
      44  /* { dg-final { scan-assembler "fldr\.16" } }*/
      45  /* { dg-final { scan-assembler "fstr\.16" } }*/
      46  
      47  #undef FTYPE
      48  #define FTYPE float
      49  FTYPE FUNC(ldr32) (FTYPE *a, int i, FTYPE *b)
      50  {
      51    return a[i] = b[i];
      52  }
      53  
      54  /* { dg-final { scan-assembler "fldr\.32" } }*/
      55  /* { dg-final { scan-assembler "fstr\.32" } }*/
      56  
      57  #undef FTYPE
      58  #define FTYPE double
      59  FTYPE FUNC(ldr64) (FTYPE *a, int i, FTYPE *b)
      60  {
      61    return a[i] = b[i];
      62  }
      63  
      64  /* { dg-final { scan-assembler "fldr\.64" } }*/
      65  /* { dg-final { scan-assembler "fstr\.64" } }*/
      66  
      67  
      68  #undef FTYPE
      69  #define FTYPE __fp16
      70  FTYPE FUNC(mov16) (FTYPE a, FTYPE b)
      71  {
      72    a = b;
      73    return a;
      74  }
      75  
      76  /* { dg-final { scan-assembler "fmov\.16" } }*/
      77  
      78  #undef FTYPE
      79  #define FTYPE float
      80  FTYPE FUNC(mov32) (FTYPE a, FTYPE b)
      81  {
      82    a = b;
      83    return a;
      84  }
      85  
      86  /* { dg-final { scan-assembler "fmov\.32" } }*/
      87  
      88  #undef FTYPE
      89  #define FTYPE double
      90  FTYPE FUNC(mov64) (FTYPE a, FTYPE b)
      91  {
      92    a = b;
      93    return a;
      94  }
      95  
      96  /* { dg-final { scan-assembler "fmov\.64" } }*/