(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
riscv/
rvv/
base/
spill-11.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-msave-restore -march=rv32gcv -mabi=ilp32 -msave-restore -fno-schedule-insns -fno-schedule-insns2 -O3" } */
       3  /* { dg-final { check-function-bodies "**" "" } } */
       4  #include "riscv_vector.h"
       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  ** stack_save_restore_2:
      12  **	call\tt0,__riscv_save_2
      13  **	csrr\tt0,vlenb
      14  **	slli\tt1,t0,1
      15  **	sub\tsp,sp,t1
      16  **	li\tt0,-8192
      17  **	addi\tt0,t0,192
      18  **	add\tsp,sp,t0
      19  **	...
      20  **	csrr\tt0,vlenb
      21  **	slli\tt1,t0,1
      22  **	add\tsp,sp,t1
      23  **	li\tt0,8192
      24  **	addi\tt0,t0,-192
      25  **	add\tsp,sp,t0
      26  **	tail\t__riscv_restore_2
      27  */
      28  int stack_save_restore_2 (float a1, float a2, float a3, float a4,
      29                        float a5, float a6, float a7, float a8,
      30                        vuint8m1_t data, uint8_t *base)
      31  {
      32    char d[8000];
      33    float f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13;
      34    asm volatile ("nop"
      35                  : "=f" (f1), "=f" (f2), "=f" (f3), "=f" (f4), "=f" (f5), "=f" (f6),
      36                    "=f" (f7), "=f" (f8), "=f" (f9),  "=f" (f10), "=f" (f11),
      37                    "=f" (f12), "=f" (f13)
      38                  :
      39                  :);
      40    asm volatile ("nop"
      41                  :
      42                  : "f" (f1), "f" (f2), "f" (f3), "f" (f4), "f" (f5), "f" (f6),
      43                    "f" (f7), "f" (f8), "f" (f9), "f" (f10), "f" (f11),
      44                    "f" (f12), "f" (f13)
      45                  :);
      46    vuint8m8_t v0, v8, v16, v24;
      47    asm volatile ("nop"
      48                  : "=vr" (v0), "=vr" (v8), "=vr" (v16), "=vr" (v24)
      49                  :
      50                  :);
      51    asm volatile ("nop"
      52                  :
      53                  : "vr" (v0), "vr" (v8), "vr" (v16), "vr" (v24)
      54                  :);
      55    *(vuint8m1_t *)base = data;
      56    fn2 (a1, a2, a3, a4, a5, a6, a7, a8);
      57    fn3(d);
      58    return 0;
      59  }