(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
riscv/
rvv/
base/
mov-8.c
       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  ** mov1:
       9  **	vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]
      10  **	vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      11  **	vsm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      12  **  ret
      13  */
      14  void mov1 (int8_t *in, int8_t *out)
      15  {
      16    vbool64_t v = *(vbool64_t*)in;
      17    *(vbool64_t*)out = v;
      18  }
      19  
      20  /*
      21  ** mov2:
      22  **	vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]
      23  **	vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      24  **	vsm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      25  **  ret
      26  */
      27  void mov2 (int8_t *in, int8_t *out)
      28  {
      29    vbool32_t v = *(vbool32_t*)in;
      30    *(vbool32_t*)out = v;
      31  }
      32  
      33  /*
      34  ** mov3:
      35  **	vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]
      36  **	vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      37  **	vsm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      38  **  ret
      39  */
      40  void mov3 (int8_t *in, int8_t *out)
      41  {
      42    vbool16_t v = *(vbool16_t*)in;
      43    *(vbool16_t*)out = v;
      44  }
      45  
      46  /*
      47  ** mov4:
      48  **	vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m1,\s*t[au],\s*m[au]
      49  **	vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      50  **	vsm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      51  **  ret
      52  */
      53  void mov4 (int8_t *in, int8_t *out)
      54  {
      55    vbool8_t v = *(vbool8_t*)in;
      56    *(vbool8_t*)out = v;
      57  }
      58  
      59  /*
      60  ** mov5:
      61  **	vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m2,\s*t[au],\s*m[au]
      62  **	vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      63  **	vsm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      64  **  ret
      65  */
      66  void mov5 (int8_t *in, int8_t *out)
      67  {
      68    vbool4_t v = *(vbool4_t*)in;
      69    *(vbool4_t*)out = v;
      70  }
      71  
      72  /*
      73  ** mov6:
      74  **	vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m4,\s*t[au],\s*m[au]
      75  **	vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      76  **	vsm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      77  **  ret
      78  */
      79  void mov6 (int8_t *in, int8_t *out)
      80  {
      81    vbool2_t v = *(vbool2_t*)in;
      82    *(vbool2_t*)out = v;
      83  }
      84  
      85  /*
      86  ** mov7:
      87  **	vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m8,\s*t[au],\s*m[au]
      88  **	vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      89  **	vsm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
      90  **  ret
      91  */
      92  void mov7 (int8_t *in, int8_t *out)
      93  {
      94    vbool1_t v = *(vbool1_t*)in;
      95    *(vbool1_t*)out = v;
      96  }