(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
sve/
pcs/
saves_2_le_wrap.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O -mlittle-endian -fshrink-wrap -fno-stack-clash-protection -g" } */
       3  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
       4  
       5  void standard_callee (void);
       6  __attribute__((aarch64_vector_pcs)) void vpcs_callee (void);
       7  
       8  /*
       9  ** calls_standard:
      10  **	stp	x29, x30, \[sp, -16\]!
      11  **	mov	x29, sp
      12  **	addvl	sp, sp, #-18
      13  **	str	p4, \[sp\]
      14  **	str	p5, \[sp, #1, mul vl\]
      15  **	str	p6, \[sp, #2, mul vl\]
      16  **	str	p7, \[sp, #3, mul vl\]
      17  **	str	p8, \[sp, #4, mul vl\]
      18  **	str	p9, \[sp, #5, mul vl\]
      19  **	str	p10, \[sp, #6, mul vl\]
      20  **	str	p11, \[sp, #7, mul vl\]
      21  **	str	p12, \[sp, #8, mul vl\]
      22  **	str	p13, \[sp, #9, mul vl\]
      23  **	str	p14, \[sp, #10, mul vl\]
      24  **	str	p15, \[sp, #11, mul vl\]
      25  **	str	z8, \[sp, #2, mul vl\]
      26  **	str	z9, \[sp, #3, mul vl\]
      27  **	str	z10, \[sp, #4, mul vl\]
      28  **	str	z11, \[sp, #5, mul vl\]
      29  **	str	z12, \[sp, #6, mul vl\]
      30  **	str	z13, \[sp, #7, mul vl\]
      31  **	str	z14, \[sp, #8, mul vl\]
      32  **	str	z15, \[sp, #9, mul vl\]
      33  **	str	z16, \[sp, #10, mul vl\]
      34  **	str	z17, \[sp, #11, mul vl\]
      35  **	str	z18, \[sp, #12, mul vl\]
      36  **	str	z19, \[sp, #13, mul vl\]
      37  **	str	z20, \[sp, #14, mul vl\]
      38  **	str	z21, \[sp, #15, mul vl\]
      39  **	str	z22, \[sp, #16, mul vl\]
      40  **	str	z23, \[sp, #17, mul vl\]
      41  **	bl	standard_callee
      42  **	ldr	z8, \[sp, #2, mul vl\]
      43  **	ldr	z9, \[sp, #3, mul vl\]
      44  **	ldr	z10, \[sp, #4, mul vl\]
      45  **	ldr	z11, \[sp, #5, mul vl\]
      46  **	ldr	z12, \[sp, #6, mul vl\]
      47  **	ldr	z13, \[sp, #7, mul vl\]
      48  **	ldr	z14, \[sp, #8, mul vl\]
      49  **	ldr	z15, \[sp, #9, mul vl\]
      50  **	ldr	z16, \[sp, #10, mul vl\]
      51  **	ldr	z17, \[sp, #11, mul vl\]
      52  **	ldr	z18, \[sp, #12, mul vl\]
      53  **	ldr	z19, \[sp, #13, mul vl\]
      54  **	ldr	z20, \[sp, #14, mul vl\]
      55  **	ldr	z21, \[sp, #15, mul vl\]
      56  **	ldr	z22, \[sp, #16, mul vl\]
      57  **	ldr	z23, \[sp, #17, mul vl\]
      58  **	ldr	p4, \[sp\]
      59  **	ldr	p5, \[sp, #1, mul vl\]
      60  **	ldr	p6, \[sp, #2, mul vl\]
      61  **	ldr	p7, \[sp, #3, mul vl\]
      62  **	ldr	p8, \[sp, #4, mul vl\]
      63  **	ldr	p9, \[sp, #5, mul vl\]
      64  **	ldr	p10, \[sp, #6, mul vl\]
      65  **	ldr	p11, \[sp, #7, mul vl\]
      66  **	ldr	p12, \[sp, #8, mul vl\]
      67  **	ldr	p13, \[sp, #9, mul vl\]
      68  **	ldr	p14, \[sp, #10, mul vl\]
      69  **	ldr	p15, \[sp, #11, mul vl\]
      70  **	addvl	sp, sp, #18
      71  **	ldp	x29, x30, \[sp\], 16
      72  **	ret
      73  */
      74  void calls_standard (__SVInt8_t x) { standard_callee (); }
      75  
      76  /*
      77  ** calls_vpcs:
      78  **	stp	x29, x30, \[sp, -16\]!
      79  **	mov	x29, sp
      80  **	addvl	sp, sp, #-18
      81  **	str	p4, \[sp\]
      82  **	str	p5, \[sp, #1, mul vl\]
      83  **	str	p6, \[sp, #2, mul vl\]
      84  **	str	p7, \[sp, #3, mul vl\]
      85  **	str	p8, \[sp, #4, mul vl\]
      86  **	str	p9, \[sp, #5, mul vl\]
      87  **	str	p10, \[sp, #6, mul vl\]
      88  **	str	p11, \[sp, #7, mul vl\]
      89  **	str	p12, \[sp, #8, mul vl\]
      90  **	str	p13, \[sp, #9, mul vl\]
      91  **	str	p14, \[sp, #10, mul vl\]
      92  **	str	p15, \[sp, #11, mul vl\]
      93  **	str	z8, \[sp, #2, mul vl\]
      94  **	str	z9, \[sp, #3, mul vl\]
      95  **	str	z10, \[sp, #4, mul vl\]
      96  **	str	z11, \[sp, #5, mul vl\]
      97  **	str	z12, \[sp, #6, mul vl\]
      98  **	str	z13, \[sp, #7, mul vl\]
      99  **	str	z14, \[sp, #8, mul vl\]
     100  **	str	z15, \[sp, #9, mul vl\]
     101  **	str	z16, \[sp, #10, mul vl\]
     102  **	str	z17, \[sp, #11, mul vl\]
     103  **	str	z18, \[sp, #12, mul vl\]
     104  **	str	z19, \[sp, #13, mul vl\]
     105  **	str	z20, \[sp, #14, mul vl\]
     106  **	str	z21, \[sp, #15, mul vl\]
     107  **	str	z22, \[sp, #16, mul vl\]
     108  **	str	z23, \[sp, #17, mul vl\]
     109  **	bl	vpcs_callee
     110  **	ldr	z8, \[sp, #2, mul vl\]
     111  **	ldr	z9, \[sp, #3, mul vl\]
     112  **	ldr	z10, \[sp, #4, mul vl\]
     113  **	ldr	z11, \[sp, #5, mul vl\]
     114  **	ldr	z12, \[sp, #6, mul vl\]
     115  **	ldr	z13, \[sp, #7, mul vl\]
     116  **	ldr	z14, \[sp, #8, mul vl\]
     117  **	ldr	z15, \[sp, #9, mul vl\]
     118  **	ldr	z16, \[sp, #10, mul vl\]
     119  **	ldr	z17, \[sp, #11, mul vl\]
     120  **	ldr	z18, \[sp, #12, mul vl\]
     121  **	ldr	z19, \[sp, #13, mul vl\]
     122  **	ldr	z20, \[sp, #14, mul vl\]
     123  **	ldr	z21, \[sp, #15, mul vl\]
     124  **	ldr	z22, \[sp, #16, mul vl\]
     125  **	ldr	z23, \[sp, #17, mul vl\]
     126  **	ldr	p4, \[sp\]
     127  **	ldr	p5, \[sp, #1, mul vl\]
     128  **	ldr	p6, \[sp, #2, mul vl\]
     129  **	ldr	p7, \[sp, #3, mul vl\]
     130  **	ldr	p8, \[sp, #4, mul vl\]
     131  **	ldr	p9, \[sp, #5, mul vl\]
     132  **	ldr	p10, \[sp, #6, mul vl\]
     133  **	ldr	p11, \[sp, #7, mul vl\]
     134  **	ldr	p12, \[sp, #8, mul vl\]
     135  **	ldr	p13, \[sp, #9, mul vl\]
     136  **	ldr	p14, \[sp, #10, mul vl\]
     137  **	ldr	p15, \[sp, #11, mul vl\]
     138  **	addvl	sp, sp, #18
     139  **	ldp	x29, x30, \[sp\], 16
     140  **	ret
     141  */
     142  void calls_vpcs (__SVInt8_t x) { vpcs_callee (); }
     143  
     144  /*
     145  ** calls_standard_ptr:
     146  **	stp	x29, x30, \[sp, -16\]!
     147  **	mov	x29, sp
     148  **	addvl	sp, sp, #-18
     149  **	str	p4, \[sp\]
     150  **	str	p5, \[sp, #1, mul vl\]
     151  **	str	p6, \[sp, #2, mul vl\]
     152  **	str	p7, \[sp, #3, mul vl\]
     153  **	str	p8, \[sp, #4, mul vl\]
     154  **	str	p9, \[sp, #5, mul vl\]
     155  **	str	p10, \[sp, #6, mul vl\]
     156  **	str	p11, \[sp, #7, mul vl\]
     157  **	str	p12, \[sp, #8, mul vl\]
     158  **	str	p13, \[sp, #9, mul vl\]
     159  **	str	p14, \[sp, #10, mul vl\]
     160  **	str	p15, \[sp, #11, mul vl\]
     161  **	str	z8, \[sp, #2, mul vl\]
     162  **	str	z9, \[sp, #3, mul vl\]
     163  **	str	z10, \[sp, #4, mul vl\]
     164  **	str	z11, \[sp, #5, mul vl\]
     165  **	str	z12, \[sp, #6, mul vl\]
     166  **	str	z13, \[sp, #7, mul vl\]
     167  **	str	z14, \[sp, #8, mul vl\]
     168  **	str	z15, \[sp, #9, mul vl\]
     169  **	str	z16, \[sp, #10, mul vl\]
     170  **	str	z17, \[sp, #11, mul vl\]
     171  **	str	z18, \[sp, #12, mul vl\]
     172  **	str	z19, \[sp, #13, mul vl\]
     173  **	str	z20, \[sp, #14, mul vl\]
     174  **	str	z21, \[sp, #15, mul vl\]
     175  **	str	z22, \[sp, #16, mul vl\]
     176  **	str	z23, \[sp, #17, mul vl\]
     177  **	blr	x0
     178  **	ldr	z8, \[sp, #2, mul vl\]
     179  **	ldr	z9, \[sp, #3, mul vl\]
     180  **	ldr	z10, \[sp, #4, mul vl\]
     181  **	ldr	z11, \[sp, #5, mul vl\]
     182  **	ldr	z12, \[sp, #6, mul vl\]
     183  **	ldr	z13, \[sp, #7, mul vl\]
     184  **	ldr	z14, \[sp, #8, mul vl\]
     185  **	ldr	z15, \[sp, #9, mul vl\]
     186  **	ldr	z16, \[sp, #10, mul vl\]
     187  **	ldr	z17, \[sp, #11, mul vl\]
     188  **	ldr	z18, \[sp, #12, mul vl\]
     189  **	ldr	z19, \[sp, #13, mul vl\]
     190  **	ldr	z20, \[sp, #14, mul vl\]
     191  **	ldr	z21, \[sp, #15, mul vl\]
     192  **	ldr	z22, \[sp, #16, mul vl\]
     193  **	ldr	z23, \[sp, #17, mul vl\]
     194  **	ldr	p4, \[sp\]
     195  **	ldr	p5, \[sp, #1, mul vl\]
     196  **	ldr	p6, \[sp, #2, mul vl\]
     197  **	ldr	p7, \[sp, #3, mul vl\]
     198  **	ldr	p8, \[sp, #4, mul vl\]
     199  **	ldr	p9, \[sp, #5, mul vl\]
     200  **	ldr	p10, \[sp, #6, mul vl\]
     201  **	ldr	p11, \[sp, #7, mul vl\]
     202  **	ldr	p12, \[sp, #8, mul vl\]
     203  **	ldr	p13, \[sp, #9, mul vl\]
     204  **	ldr	p14, \[sp, #10, mul vl\]
     205  **	ldr	p15, \[sp, #11, mul vl\]
     206  **	addvl	sp, sp, #18
     207  **	ldp	x29, x30, \[sp\], 16
     208  **	ret
     209  */
     210  void
     211  calls_standard_ptr (__SVInt8_t x, void (*fn) (void))
     212  {
     213    fn ();
     214  }
     215  
     216  /*
     217  ** calls_vpcs_ptr:
     218  **	stp	x29, x30, \[sp, -16\]!
     219  **	mov	x29, sp
     220  **	addvl	sp, sp, #-18
     221  **	str	p4, \[sp\]
     222  **	str	p5, \[sp, #1, mul vl\]
     223  **	str	p6, \[sp, #2, mul vl\]
     224  **	str	p7, \[sp, #3, mul vl\]
     225  **	str	p8, \[sp, #4, mul vl\]
     226  **	str	p9, \[sp, #5, mul vl\]
     227  **	str	p10, \[sp, #6, mul vl\]
     228  **	str	p11, \[sp, #7, mul vl\]
     229  **	str	p12, \[sp, #8, mul vl\]
     230  **	str	p13, \[sp, #9, mul vl\]
     231  **	str	p14, \[sp, #10, mul vl\]
     232  **	str	p15, \[sp, #11, mul vl\]
     233  **	str	z8, \[sp, #2, mul vl\]
     234  **	str	z9, \[sp, #3, mul vl\]
     235  **	str	z10, \[sp, #4, mul vl\]
     236  **	str	z11, \[sp, #5, mul vl\]
     237  **	str	z12, \[sp, #6, mul vl\]
     238  **	str	z13, \[sp, #7, mul vl\]
     239  **	str	z14, \[sp, #8, mul vl\]
     240  **	str	z15, \[sp, #9, mul vl\]
     241  **	str	z16, \[sp, #10, mul vl\]
     242  **	str	z17, \[sp, #11, mul vl\]
     243  **	str	z18, \[sp, #12, mul vl\]
     244  **	str	z19, \[sp, #13, mul vl\]
     245  **	str	z20, \[sp, #14, mul vl\]
     246  **	str	z21, \[sp, #15, mul vl\]
     247  **	str	z22, \[sp, #16, mul vl\]
     248  **	str	z23, \[sp, #17, mul vl\]
     249  **	blr	x0
     250  **	ldr	z8, \[sp, #2, mul vl\]
     251  **	ldr	z9, \[sp, #3, mul vl\]
     252  **	ldr	z10, \[sp, #4, mul vl\]
     253  **	ldr	z11, \[sp, #5, mul vl\]
     254  **	ldr	z12, \[sp, #6, mul vl\]
     255  **	ldr	z13, \[sp, #7, mul vl\]
     256  **	ldr	z14, \[sp, #8, mul vl\]
     257  **	ldr	z15, \[sp, #9, mul vl\]
     258  **	ldr	z16, \[sp, #10, mul vl\]
     259  **	ldr	z17, \[sp, #11, mul vl\]
     260  **	ldr	z18, \[sp, #12, mul vl\]
     261  **	ldr	z19, \[sp, #13, mul vl\]
     262  **	ldr	z20, \[sp, #14, mul vl\]
     263  **	ldr	z21, \[sp, #15, mul vl\]
     264  **	ldr	z22, \[sp, #16, mul vl\]
     265  **	ldr	z23, \[sp, #17, mul vl\]
     266  **	ldr	p4, \[sp\]
     267  **	ldr	p5, \[sp, #1, mul vl\]
     268  **	ldr	p6, \[sp, #2, mul vl\]
     269  **	ldr	p7, \[sp, #3, mul vl\]
     270  **	ldr	p8, \[sp, #4, mul vl\]
     271  **	ldr	p9, \[sp, #5, mul vl\]
     272  **	ldr	p10, \[sp, #6, mul vl\]
     273  **	ldr	p11, \[sp, #7, mul vl\]
     274  **	ldr	p12, \[sp, #8, mul vl\]
     275  **	ldr	p13, \[sp, #9, mul vl\]
     276  **	ldr	p14, \[sp, #10, mul vl\]
     277  **	ldr	p15, \[sp, #11, mul vl\]
     278  **	addvl	sp, sp, #18
     279  **	ldp	x29, x30, \[sp\], 16
     280  **	ret
     281  */
     282  void
     283  calls_vpcs_ptr (__SVInt8_t x,
     284  		void (*__attribute__((aarch64_vector_pcs)) fn) (void))
     285  {
     286    fn ();
     287  }