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