(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
riscv/
rvv/
base/
spill-12.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-march=rv32gcv -mabi=ilp32 -msave-restore -fno-schedule-insns -fno-schedule-insns2 -O3" } */
       3  /* { dg-final { check-function-bodies "**" "" } } */
       4  
       5  
       6  void fn2 (float a1, float a2, float a3, float a4,
       7            float a5, float a6, float a7, float a8);
       8  void fn3 (char*);
       9  
      10  
      11  /*
      12  ** stack_save_restore_1:
      13  **	call\tt0,__riscv_save_0
      14  **	li\tt0,-8192
      15  **	addi\tt0,t0,192
      16  **	add\tsp,sp,t0
      17  **	...
      18  **	li\ta0,-8192
      19  **	addi\ta0,a0,192
      20  **	li\ta5,8192
      21  **	addi\ta5,a5,-192
      22  **	add\ta5,a5,a0
      23  **	add\ta0,a5,sp
      24  **	...
      25  **	tail\t__riscv_restore_0
      26  */
      27  int stack_save_restore_1 (float a1, float a2, float a3, float a4,
      28                        float a5, float a6, float a7, float a8)
      29  {
      30    char d[8000];
      31    float f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13;
      32    asm volatile ("nop"
      33                  : "=f" (f1), "=f" (f2), "=f" (f3), "=f" (f4), "=f" (f5), "=f" (f6),
      34                    "=f" (f7), "=f" (f8), "=f" (f9),  "=f" (f10), "=f" (f11),
      35                    "=f" (f12), "=f" (f13)
      36                  :
      37                  :);
      38    asm volatile ("nop"
      39                  :
      40                  : "f" (f1), "f" (f2), "f" (f3), "f" (f4), "f" (f5), "f" (f6),
      41                    "f" (f7), "f" (f8), "f" (f9), "f" (f10), "f" (f11),
      42                    "f" (f12), "f" (f13)
      43                  :);
      44    fn2 (a1, a2, a3, a4, a5, a6, a7, a8);
      45    fn3(d);
      46    return 0;
      47  }