(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
riscv/
rvv/
vsetvl/
vlmax_call-1.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-march=rv32gcv -mabi=ilp32 -O3 -fno-tree-vectorize" } */
       3  
       4  #include "riscv_vector.h"
       5  
       6  void fn3 (void);
       7  
       8  void f (int8_t * restrict in, int8_t * restrict out, int n)
       9  {
      10    for (int i = 0 ; i < n * n * n * n; i++) {
      11      vbool64_t v = *(vbool64_t*)(in + 900 + i);
      12      *(vbool64_t*)(out + 900 + i) = v;
      13    }
      14    fn3 ();
      15    
      16    for (int i = 0 ; i < n * n * n * n; i++) {
      17      vbool64_t v = *(vbool64_t*)(in + 900 + i);
      18      *(vbool64_t*)(out + 900 + i) = v;
      19    }
      20    fn3 ();
      21    
      22    for (int i = 0 ; i < n * n * n * n; i++) {
      23      vbool64_t v = *(vbool64_t*)(in + 900 + i);
      24      *(vbool64_t*)(out + 900 + i) = v;
      25    }
      26    fn3 ();
      27    for (int i = 0 ; i < n * n * n * n; i++) {
      28      vbool64_t v = *(vbool64_t*)(in + 900 + i);
      29      *(vbool64_t*)(out + 900 + i) = v;
      30    }
      31    fn3 ();
      32    for (int i = 0 ; i < n * n * n * n; i++) {
      33      vbool64_t v = *(vbool64_t*)(in + 900 + i);
      34      *(vbool64_t*)(out + 900 + i) = v;
      35    }
      36  
      37  }
      38  
      39  int f2 (int8_t * restrict in, int8_t * restrict out, int n)
      40  {
      41    for (int i = 0 ; i < n * n * n * n; i++) {
      42      vbool32_t v = *(vbool32_t*)(in + 900 + i);
      43      *(vbool32_t*)(out + 900 + i) = v;
      44    }
      45    fn3 ();
      46    
      47    for (int i = 0 ; i < n * n * n * n; i++) {
      48      vbool32_t v = *(vbool32_t*)(in + 900 + i);
      49      *(vbool32_t*)(out + 900 + i) = v;
      50    }
      51    fn3 ();
      52    
      53    for (int i = 0 ; i < n * n * n * n; i++) {
      54      vbool32_t v = *(vbool32_t*)(in + 900 + i);
      55      *(vbool32_t*)(out + 900 + i) = v;
      56    }
      57    fn3 ();
      58    for (int i = 0 ; i < n * n * n * n; i++) {
      59      vbool32_t v = *(vbool32_t*)(in + 900 + i);
      60      *(vbool32_t*)(out + 900 + i) = v;
      61    }
      62    fn3 ();
      63    for (int i = 0 ; i < n * n * n * n; i++) {
      64      vbool32_t v = *(vbool32_t*)(in + 900 + i);
      65      *(vbool32_t*)(out + 900 + i) = v;
      66    }
      67  
      68  }
      69  
      70  int f3 (int8_t * restrict in, int8_t * restrict out, int n)
      71  {
      72    for (int i = 0 ; i < n * n * n * n; i++) {
      73      vbool16_t v = *(vbool16_t*)(in + 900 + i);
      74      *(vbool16_t*)(out + 900 + i) = v;
      75    }
      76    fn3 ();
      77    
      78    for (int i = 0 ; i < n * n * n * n; i++) {
      79      vbool16_t v = *(vbool16_t*)(in + 900 + i);
      80      *(vbool16_t*)(out + 900 + i) = v;
      81    }
      82    fn3 ();
      83    
      84    for (int i = 0 ; i < n * n * n * n; i++) {
      85      vbool16_t v = *(vbool16_t*)(in + 900 + i);
      86      *(vbool16_t*)(out + 900 + i) = v;
      87    }
      88    fn3 ();
      89    for (int i = 0 ; i < n * n * n * n; i++) {
      90      vbool16_t v = *(vbool16_t*)(in + 900 + i);
      91      *(vbool16_t*)(out + 900 + i) = v;
      92    }
      93    fn3 ();
      94    for (int i = 0 ; i < n * n * n * n; i++) {
      95      vbool16_t v = *(vbool16_t*)(in + 900 + i);
      96      *(vbool16_t*)(out + 900 + i) = v;
      97    }
      98  
      99  }
     100  
     101  int f4 (int8_t * restrict in, int8_t * restrict out, int n)
     102  {
     103    for (int i = 0 ; i < n * n * n * n; i++) {
     104      vbool8_t v = *(vbool8_t*)(in + 900 + i);
     105      *(vbool8_t*)(out + 900 + i) = v;
     106    }
     107    fn3 ();
     108    
     109    for (int i = 0 ; i < n * n * n * n; i++) {
     110      vbool8_t v = *(vbool8_t*)(in + 900 + i);
     111      *(vbool8_t*)(out + 900 + i) = v;
     112    }
     113    fn3 ();
     114    
     115    for (int i = 0 ; i < n * n * n * n; i++) {
     116      vbool8_t v = *(vbool8_t*)(in + 900 + i);
     117      *(vbool8_t*)(out + 900 + i) = v;
     118    }
     119    fn3 ();
     120    for (int i = 0 ; i < n * n * n * n; i++) {
     121      vbool8_t v = *(vbool8_t*)(in + 900 + i);
     122      *(vbool8_t*)(out + 900 + i) = v;
     123    }
     124    fn3 ();
     125    for (int i = 0 ; i < n * n * n * n; i++) {
     126      vbool8_t v = *(vbool8_t*)(in + 900 + i);
     127      *(vbool8_t*)(out + 900 + i) = v;
     128    }
     129  
     130  }
     131  
     132  int f5 (int8_t * restrict in, int8_t * restrict out, int n)
     133  {
     134    for (int i = 0 ; i < n * n * n * n; i++) {
     135      vbool4_t v = *(vbool4_t*)(in + 900 + i);
     136      *(vbool4_t*)(out + 900 + i) = v;
     137    }
     138    fn3 ();
     139    
     140    for (int i = 0 ; i < n * n * n * n; i++) {
     141      vbool4_t v = *(vbool4_t*)(in + 900 + i);
     142      *(vbool4_t*)(out + 900 + i) = v;
     143    }
     144    fn3 ();
     145    
     146    for (int i = 0 ; i < n * n * n * n; i++) {
     147      vbool4_t v = *(vbool4_t*)(in + 900 + i);
     148      *(vbool4_t*)(out + 900 + i) = v;
     149    }
     150    fn3 ();
     151    for (int i = 0 ; i < n * n * n * n; i++) {
     152      vbool4_t v = *(vbool4_t*)(in + 900 + i);
     153      *(vbool4_t*)(out + 900 + i) = v;
     154    }
     155    fn3 ();
     156    for (int i = 0 ; i < n * n * n * n; i++) {
     157      vbool4_t v = *(vbool4_t*)(in + 900 + i);
     158      *(vbool4_t*)(out + 900 + i) = v;
     159    }
     160  
     161  }
     162  
     163  int f6 (int8_t * restrict in, int8_t * restrict out, int n)
     164  {
     165    for (int i = 0 ; i < n * n * n * n; i++) {
     166      vbool2_t v = *(vbool2_t*)(in + 900 + i);
     167      *(vbool2_t*)(out + 900 + i) = v;
     168    }
     169    fn3 ();
     170    
     171    for (int i = 0 ; i < n * n * n * n; i++) {
     172      vbool2_t v = *(vbool2_t*)(in + 900 + i);
     173      *(vbool2_t*)(out + 900 + i) = v;
     174    }
     175    fn3 ();
     176    
     177    for (int i = 0 ; i < n * n * n * n; i++) {
     178      vbool2_t v = *(vbool2_t*)(in + 900 + i);
     179      *(vbool2_t*)(out + 900 + i) = v;
     180    }
     181    fn3 ();
     182    for (int i = 0 ; i < n * n * n * n; i++) {
     183      vbool2_t v = *(vbool2_t*)(in + 900 + i);
     184      *(vbool2_t*)(out + 900 + i) = v;
     185    }
     186    fn3 ();
     187    for (int i = 0 ; i < n * n * n * n; i++) {
     188      vbool2_t v = *(vbool2_t*)(in + 900 + i);
     189      *(vbool2_t*)(out + 900 + i) = v;
     190    }
     191  
     192  }
     193  
     194  int f7 (int8_t * restrict in, int8_t * restrict out, int n)
     195  {
     196    for (int i = 0 ; i < n * n * n * n; i++) {
     197      vbool1_t v = *(vbool1_t*)(in + 900 + i);
     198      *(vbool1_t*)(out + 900 + i) = v;
     199    }
     200    fn3 ();
     201    
     202    for (int i = 0 ; i < n * n * n * n; i++) {
     203      vbool1_t v = *(vbool1_t*)(in + 900 + i);
     204      *(vbool1_t*)(out + 900 + i) = v;
     205    }
     206    fn3 ();
     207    
     208    for (int i = 0 ; i < n * n * n * n; i++) {
     209      vbool1_t v = *(vbool1_t*)(in + 900 + i);
     210      *(vbool1_t*)(out + 900 + i) = v;
     211    }
     212    fn3 ();
     213    for (int i = 0 ; i < n * n * n * n; i++) {
     214      vbool1_t v = *(vbool1_t*)(in + 900 + i);
     215      *(vbool1_t*)(out + 900 + i) = v;
     216    }
     217    fn3 ();
     218    for (int i = 0 ; i < n * n * n * n; i++) {
     219      vbool1_t v = *(vbool1_t*)(in + 900 + i);
     220      *(vbool1_t*)(out + 900 + i) = v;
     221    }
     222  
     223  }
     224  
     225  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */
     226  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]\s+\.L[0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */
     227  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */
     228  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */
     229  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */
     230  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */
     231  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m1,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */
     232  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m1,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */
     233  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m2,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */
     234  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m2,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */
     235  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m4,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */
     236  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m4,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 5 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */
     237  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m8,\s*t[au],\s*m[au]} 5 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */
     238  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m8,\s*t[au],\s*m[au]\s+\.L[0-9][0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */
     239  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m8,\s*t[au],\s*m[au]\s+\.L[0-9][0-9][0-9]\:\s+vlm\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" } } } } */