(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
arm/
mve/
intrinsics/
mve_vldr.c
       1  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
       2  /* { dg-add-options arm_v8_1m_mve } */
       3  /* { dg-additional-options "-O2" } */
       4  
       5  #include "arm_mve.h"
       6  void
       7  foo (uint16_t row_x_col, int8_t *out)
       8  {
       9    for (;;)
      10     {
      11       int32x4_t out_3;
      12       int8_t *rhs_0;
      13       int8_t *lhs_3;
      14       int i_row_x_col;
      15       for (;i_row_x_col < row_x_col; i_row_x_col++)
      16        {
      17  	int32x4_t ker_0 = vldrbq_s32(rhs_0);
      18  	int32x4_t ip_3 = vldrbq_s32(lhs_3);
      19  	out_3 = vmulq_s32(ip_3, ker_0);
      20        }
      21       vstrbq_s32(out, out_3);
      22     }
      23  }
      24  
      25  void
      26  foo1 (uint16_t row_x_col, int8_t *out)
      27  {
      28    for (;;)
      29     {
      30       int16x8_t out_3;
      31       int8_t *rhs_0;
      32       int8_t *lhs_3;
      33       int i_row_x_col;
      34       for (; i_row_x_col < row_x_col; i_row_x_col++)
      35        {
      36  	int16x8_t ker_0 = vldrbq_s16(rhs_0);
      37  	int16x8_t ip_3 = vldrbq_s16(lhs_3);
      38  	out_3 = vmulq_s16(ip_3, ker_0);
      39        }
      40       vstrbq_s16(out, out_3);
      41     }
      42  }
      43  
      44  void
      45  foo2 (uint16_t row_x_col, int16_t *out)
      46  {
      47    for (;;)
      48     {
      49       int32x4_t out_3;
      50       int16_t *rhs_0;
      51       int16_t *lhs_3;
      52       int i_row_x_col;
      53       for (; i_row_x_col < row_x_col; i_row_x_col++)
      54        {
      55  	int32x4_t ker_0 = vldrhq_s32(rhs_0);
      56  	int32x4_t ip_3 = vldrhq_s32(lhs_3);
      57  	out_3 = vmulq_s32(ip_3, ker_0);
      58        }
      59       vstrhq_s32(out, out_3);
      60     }
      61  }