(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
pr103147-10.c
       1  /* { dg-options "-O2 -fpack-struct -mstrict-align -fno-stack-protector" } */
       2  /* { dg-final { check-function-bodies "**" "" "" } } */
       3  
       4  #include <arm_neon.h>
       5  
       6  /*
       7  ** ld2:
       8  **	...
       9  **	ld2	.*
      10  **	...
      11  ** (
      12  **	strb	.*
      13  ** |
      14  **	bl	memcpy
      15  ** )
      16  **	...
      17  */
      18  void
      19  ld2 (int32x4x2_t *a, int32_t *b)
      20  {
      21    *a = vld2q_s32 (b);
      22  }
      23  
      24  /*
      25  ** ld3:
      26  **	...
      27  **	ld3	.*
      28  **	...
      29  ** (
      30  **	strb	.*
      31  ** |
      32  **	bl	memcpy
      33  ** )
      34  **	...
      35  */
      36  void
      37  ld3 (int32x4x3_t *a, int32_t *b)
      38  {
      39    *a = vld3q_s32 (b);
      40  }
      41  
      42  /*
      43  ** ld4:
      44  **	...
      45  **	ld4	.*
      46  **	...
      47  ** (
      48  **	strb	.*
      49  ** |
      50  **	bl	memcpy
      51  ** )
      52  **	...
      53  */
      54  void
      55  ld4 (int32x4x4_t *a, int32_t *b)
      56  {
      57    *a = vld4q_s32 (b);
      58  }
      59  
      60  /*
      61  ** ret:
      62  **	...
      63  **	ldp	q0, q1, \[x0\]
      64  **	ldr	q2, \[x0, #?32\]
      65  **	...
      66  */
      67  int32x4x3_t
      68  ret (int32x4_t *ptr)
      69  {
      70    return (int32x4x3_t) { ptr[0], ptr[1], ptr[2] };
      71  }
      72  
      73  /*
      74  ** arg:
      75  **	...
      76  **	stp	d0, d1, \[x0\]
      77  **	...
      78  */
      79  void
      80  arg (int32x2x2_t arg, int32x2_t *ptr)
      81  {
      82    ptr[0] = arg.val[0];
      83    ptr[1] = arg.val[1];
      84  }