(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
vec-strir-13.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -mdejagnu-cpu=power10" } */
       3  
       4  #include <altivec.h>
       5  
       6  vector unsigned short
       7  doString(vector unsigned short *vp)
       8  {
       9    /* Though two built-in functions are called, the implementation
      10       should use a single instruction to implement both and should
      11       convert tail recursion to iteration with two copies of the "loop
      12       body" when compiled with -O2 or -O3.  */
      13    vector unsigned short result = vec_strir (*vp);
      14    if (vec_strir_p (*vp))
      15      return result;
      16    else
      17      return doString (vp + 1);
      18  }
      19  
      20  /* Enforce that exactly two dot-form instructions which are properly biased
      21     for the target's endianness implement this built-in.  */
      22  
      23  /* { dg-final { scan-assembler-times {\mvstrihr\.} 2 { target { be } } } } */
      24  /* { dg-final { scan-assembler-times {\mvstrihr\M[^.]} 0 { target { be } } } } */
      25  /* { dg-final { scan-assembler-times {\mvstrihl} 0 { target { be } } } } */
      26  /* { dg-final { scan-assembler-times {\mvstrihl\.} 2 { target { le } } } } */
      27  /* { dg-final { scan-assembler-times {\mvstrihl\M[^.]} 0 { target { le } } } } */
      28  /* { dg-final { scan-assembler-times {\mvstrihr} 0 { target { le } } } } */
      29