1 /* { dg-do compile { target { s390*-*-* } } } */
2 /* { dg-options "-O0 -mzarch -march=z13 -mzvector" } */
3 
4 #include <vecintrin.h>
5 
6 signed char
foo64(signed char * p)7 foo64 (signed char *p)
8 {
9   return vec_load_bndry (p, 64)[0];
10   /* { dg-final { scan-assembler-times "\tvlbb\t%v..?,0\\(%r..?\\),0" 1 } } */
11 }
12 
13 signed char
foo128(signed char * p)14 foo128 (signed char *p)
15 {
16   return
17     vec_load_bndry (p, 128)[0]
18     + vec_load_bndry (p + 16, 128)[0];
19   /* { dg-final { scan-assembler-times "\tvlbb\t%v..?,0\\(%r..?\\),1" 2 } } */
20 }
21 
22 signed char
foo256(signed char * p)23 foo256 (signed char *p)
24 {
25   return
26     vec_load_bndry (p, 256)[0]
27     + vec_load_bndry (p + 16, 256)[0]
28     + vec_load_bndry (p + 32, 256)[0];
29   /* { dg-final { scan-assembler-times "\tvlbb\t%v..?,0\\(%r..?\\),2" 3 } } */
30 }
31 
32 signed char
foo512(signed char * p)33 foo512 (signed char *p)
34 {
35   return
36     vec_load_bndry (p, 512)[0]
37     + vec_load_bndry (p + 16, 512)[0]
38     + vec_load_bndry (p + 32, 512)[0]
39     + vec_load_bndry (p + 48, 512)[0];
40   /* { dg-final { scan-assembler-times "\tvlbb\t%v..?,0\\(%r..?\\),3" 4 } } */
41 }
42 
43 signed char
foo1024(signed char * p)44 foo1024 (signed char *p)
45 {
46   return
47     vec_load_bndry (p, 1024)[0]
48     + vec_load_bndry (p + 16, 1024)[0]
49     + vec_load_bndry (p + 32, 1024)[0]
50     + vec_load_bndry (p + 48, 1024)[0]
51     + vec_load_bndry (p + 64, 1024)[0];
52   /* { dg-final { scan-assembler-times "\tvlbb\t%v..?,0\\(%r..?\\),4" 5 } } */
53 }
54 
55 signed char
foo2048(signed char * p)56 foo2048 (signed char *p)
57 {
58   return
59     vec_load_bndry (p, 2048)[0]
60     + vec_load_bndry (p + 16, 2048)[0]
61     + vec_load_bndry (p + 32, 2048)[0]
62     + vec_load_bndry (p + 48, 2048)[0]
63     + vec_load_bndry (p + 64, 2048)[0]
64     + vec_load_bndry (p + 80, 2048)[0];
65   /* { dg-final { scan-assembler-times "\tvlbb\t%v..?,0\\(%r..?\\),5" 6 } } */
66 }
67 
68 signed char
foo4096(signed char * p)69 foo4096 (signed char *p)
70 {
71   return
72     vec_load_bndry (p, 4096)[0]
73     + vec_load_bndry (p + 16, 4096)[0]
74     + vec_load_bndry (p + 32, 4096)[0]
75     + vec_load_bndry (p + 48, 4096)[0]
76     + vec_load_bndry (p + 64, 4096)[0]
77     + vec_load_bndry (p + 80, 4096)[0]
78     + vec_load_bndry (p + 96, 4096)[0];
79   /* { dg-final { scan-assembler-times "\tvlbb\t%v..?,0\\(%r..?\\),6" 7 } } */
80 }
81