1  /* { dg-do compile } */
       2  /* { dg-options "-O3 -mzarch -march=arch13 -mzvector" } */
       3  
       4  #include <vecintrin.h>
       5  
       6  unsigned char
       7  vstrsb ()
       8  {
       9    int cc;
      10    vector signed char haystack = { 'h', 'o', 'l', 'a', 'h', 'i', 'h', 'o',
      11  				  'h', 'i', 'h', 'o' };
      12    vector signed char needle = { 'h', 'i', 'h', 'o' };
      13    vector unsigned char length = { 0 };
      14    vector unsigned char result = vec_search_string_cc (haystack, needle,
      15  						      length, &cc);
      16    return result[7];
      17  }
      18  
      19  /* { dg-final { scan-assembler-times "vstrsb\t" 1 } } */
      20  
      21  unsigned char
      22  vstrsh ()
      23  {
      24    int cc;
      25    vector signed short haystack = { 'h', 'o', 'l', 'a', 'h', 'i', 'h', 'o' };
      26    vector signed short needle = { 'h', 'i', 'h', 'o' };
      27    vector unsigned char length = { 0 };
      28    vector unsigned char result = vec_search_string_cc (haystack, needle,
      29  						      length, &cc);
      30    return result[7];
      31  }
      32  
      33  /* { dg-final { scan-assembler-times "vstrsh\t" 1 } } */
      34  
      35  unsigned char
      36  vstrsf ()
      37  {
      38    int cc;
      39    vector signed int haystack = { 'h', 'i', 'h', 'o' };
      40    vector signed int needle = { 'h', 'o' };
      41    vector unsigned char length = { 0 };
      42    vector unsigned char result = vec_search_string_cc (haystack, needle,
      43  						      length, &cc);
      44    return result[7];
      45  }
      46  
      47  /* { dg-final { scan-assembler-times "vstrsf\t" 1 } } */