1 /* { dg-do compile } */
2 /* { dg-options "-O3 -mzarch -march=arch13 -mzvector" } */
3
4 #include <vecintrin.h>
5
6 unsigned char
vstrsb()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
vstrsh()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
vstrsf()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 } } */
48