1  /* { dg-do compile } */
       2  /* { dg-options "-march=rv64gc_zba -mabi=lp64" } */
       3  /* { dg-skip-if "" { *-*-* } { "-O0" } } */
       4  
       5  /* RV64 only.  */
       6  int foos(short *x, int n){
       7    return x[n];
       8  }
       9  int fooi(int *x, int n){
      10    return x[n];
      11  }
      12  int fooll(long long *x, int n){
      13    return x[n];
      14  }
      15  
      16  /* RV64 only.  */
      17  int ufoos(short *x, unsigned int n){
      18    return x[n];
      19  }
      20  int ufooi(int *x, unsigned int n){
      21    return x[n];
      22  }
      23  int ufooll(long long *x, unsigned int n){
      24    return x[n];
      25  }
      26  
      27  /* { dg-final { scan-assembler-times "sh1add\t" 1 } } */
      28  /* { dg-final { scan-assembler-times "sh2add\t" 1 } } */
      29  /* { dg-final { scan-assembler-times "sh3add\t" 1 } } */
      30  /* { dg-final { scan-assembler-times "sh3add.uw" 1 } } */
      31  /* { dg-final { scan-assembler-times "sh3add.uw" 1 } } */
      32  /* { dg-final { scan-assembler-times "sh3add.uw" 1 } } */