1  /* { dg-do compile } */
       2  /* { dg-options "-march=rv32gcv -mabi=ilp32d -O3" } */
       3  /* { dg-final { check-function-bodies "**" "" } } */
       4  
       5  #include "riscv_vector.h"
       6  
       7  /*
       8  ** mov3:
       9  **	vsetvli\s+[a-x0-9]+,\s*zero,\s*e32,\s*mf2,\s*t[au],\s*m[au]
      10  **	vle32\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      11  **	vse32\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      12  **  ret
      13  */
      14  void mov3 (float *in, float *out)
      15  {
      16    vfloat32mf2_t v = *(vfloat32mf2_t*)in;
      17    *(vfloat32mf2_t*)out = v;
      18  }
      19  
      20  /*
      21  ** mov4:
      22  **	vl1re32\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      23  **	vs1r\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      24  **  ret
      25  */
      26  void mov4 (float *in, float *out)
      27  {
      28    vfloat32m1_t v = *(vfloat32m1_t*)in;
      29    *(vfloat32m1_t*)out = v;
      30  }
      31  
      32  /*
      33  ** mov5:
      34  **	vl2re32\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      35  **	vs2r\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      36  **  ret
      37  */
      38  void mov5 (float *in, float *out)
      39  {
      40    vfloat32m2_t v = *(vfloat32m2_t*)in;
      41    *(vfloat32m2_t*)out = v;
      42  }
      43  
      44  /*
      45  ** mov6:
      46  **	vl4re32\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      47  **	vs4r\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      48  **  ret
      49  */
      50  void mov6 (float *in, float *out)
      51  {
      52    vfloat32m4_t v = *(vfloat32m4_t*)in;
      53    *(vfloat32m4_t*)out = v;
      54  }
      55  
      56  /*
      57  ** mov7:
      58  **	vl8re32\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      59  **	vs8r\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      60  **  ret
      61  */
      62  void mov7 (float *in, float *out)
      63  {
      64    vfloat32m8_t v = *(vfloat32m8_t*)in;
      65    *(vfloat32m8_t*)out = v;
      66  }