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