(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
movti_2.c
       1  /* { dg-do assemble } */
       2  /* { dg-options "-O -mtune=neoverse-v1 --save-temps" } */
       3  /* { dg-final { check-function-bodies "**" "" "" } } */
       4  
       5  #pragma GCC target "+nothing+nosimd+fp"
       6  
       7  /*
       8  ** fpr_to_fpr:
       9  **	sub	sp, sp, #16
      10  **	str	q1, \[sp\]
      11  **	ldr	q0, \[sp\]
      12  **	add	sp, sp, #?16
      13  **	ret
      14  */
      15  void
      16  fpr_to_fpr (void)
      17  {
      18    register __int128_t q0 asm ("q0");
      19    register __int128_t q1 asm ("q1");
      20    asm volatile ("" : "=w" (q1));
      21    q0 = q1;
      22    asm volatile ("" :: "w" (q0));
      23  }
      24  
      25  /*
      26  ** gpr_to_fpr:	{ target aarch64_little_endian }
      27  **	fmov	d0, x0
      28  **	fmov	v0.d\[1\], x1
      29  **	ret
      30  */
      31  /*
      32  ** gpr_to_fpr:	{ target aarch64_big_endian }
      33  **	fmov	d0, x1
      34  **	fmov	v0.d\[1\], x0
      35  **	ret
      36  */
      37  void
      38  gpr_to_fpr (__int128_t x0)
      39  {
      40    register __int128_t q0 asm ("q0");
      41    q0 = x0;
      42    asm volatile ("" :: "w" (q0));
      43  }
      44  
      45  /*
      46  ** zero_to_fpr:
      47  **	fmov	d0, xzr
      48  **	ret
      49  */
      50  void
      51  zero_to_fpr ()
      52  {
      53    register __int128_t q0 asm ("q0");
      54    q0 = 0;
      55    asm volatile ("" :: "w" (q0));
      56  }
      57  
      58  /*
      59  ** fpr_to_gpr:	{ target aarch64_little_endian }
      60  ** (
      61  **	fmov	x0, d0
      62  **	fmov	x1, v0.d\[1\]
      63  ** |
      64  **	fmov	x1, v0.d\[1\]
      65  **	fmov	x0, d0
      66  ** )
      67  **	ret
      68  */
      69  /*
      70  ** fpr_to_gpr:	{ target aarch64_big_endian }
      71  ** (
      72  **	fmov	x1, d0
      73  **	fmov	x0, v0.d\[1\]
      74  ** |
      75  **	fmov	x0, v0.d\[1\]
      76  **	fmov	x1, d0
      77  ** )
      78  **	ret
      79  */
      80  __int128_t
      81  fpr_to_gpr ()
      82  {
      83    register __int128_t q0 asm ("q0");
      84    asm volatile ("" : "=w" (q0));
      85    return q0;
      86  }