1 /* { dg-do compile } */
2 /* { dg-options "-O3 -mzarch -march=arch13 -mzvector" } */
3 
4 #include <vecintrin.h>
5 
6 unsigned char
vstrszb()7 vstrszb ()
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
15     = vec_search_string_until_zero_cc (haystack, needle, length, &cc);
16   return result[7];
17 }
18 
19 /* { dg-final { scan-assembler-times "vstrszb\t" 1 } } */
20 
21 unsigned char
vstrszh()22 vstrszh ()
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
29     = vec_search_string_until_zero_cc (haystack, needle, length, &cc);
30   return result[7];
31 }
32 
33 /* { dg-final { scan-assembler-times "vstrszh\t" 1 } } */
34 
35 unsigned char
vstrszf()36 vstrszf ()
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
43     = vec_search_string_until_zero_cc (haystack, needle, length, &cc);
44   return result[7];
45 }
46 
47 /* { dg-final { scan-assembler-times "vstrszf\t" 1 } } */
48