1*67e74705SXin Li // REQUIRES: systemz-registered-target
2*67e74705SXin Li // RUN: %clang_cc1 -target-cpu z13 -triple s390x-unknown-unknown \
3*67e74705SXin Li // RUN: -Wall -Wno-unused -Werror -fsyntax-only -verify %s
4*67e74705SXin Li
5*67e74705SXin Li typedef __attribute__((vector_size(16))) signed char vec_schar;
6*67e74705SXin Li typedef __attribute__((vector_size(16))) signed short vec_sshort;
7*67e74705SXin Li typedef __attribute__((vector_size(16))) signed int vec_sint;
8*67e74705SXin Li typedef __attribute__((vector_size(16))) signed long long vec_slong;
9*67e74705SXin Li typedef __attribute__((vector_size(16))) unsigned char vec_uchar;
10*67e74705SXin Li typedef __attribute__((vector_size(16))) unsigned short vec_ushort;
11*67e74705SXin Li typedef __attribute__((vector_size(16))) unsigned int vec_uint;
12*67e74705SXin Li typedef __attribute__((vector_size(16))) unsigned long long vec_ulong;
13*67e74705SXin Li typedef __attribute__((vector_size(16))) double vec_double;
14*67e74705SXin Li
15*67e74705SXin Li volatile vec_schar vsc;
16*67e74705SXin Li volatile vec_sshort vss;
17*67e74705SXin Li volatile vec_sint vsi;
18*67e74705SXin Li volatile vec_slong vsl;
19*67e74705SXin Li volatile vec_uchar vuc;
20*67e74705SXin Li volatile vec_ushort vus;
21*67e74705SXin Li volatile vec_uint vui;
22*67e74705SXin Li volatile vec_ulong vul;
23*67e74705SXin Li volatile vec_double vd;
24*67e74705SXin Li
25*67e74705SXin Li volatile unsigned int len;
26*67e74705SXin Li const void * volatile cptr;
27*67e74705SXin Li int cc;
28*67e74705SXin Li
test_core(void)29*67e74705SXin Li void test_core(void) {
30*67e74705SXin Li __builtin_s390_lcbb(cptr, -1); // expected-error {{argument should be a value from 0 to 15}}
31*67e74705SXin Li __builtin_s390_lcbb(cptr, 16); // expected-error {{argument should be a value from 0 to 15}}
32*67e74705SXin Li __builtin_s390_lcbb(cptr, len); // expected-error {{must be a constant integer}}
33*67e74705SXin Li
34*67e74705SXin Li __builtin_s390_vlbb(cptr, -1); // expected-error {{argument should be a value from 0 to 15}}
35*67e74705SXin Li __builtin_s390_vlbb(cptr, 16); // expected-error {{argument should be a value from 0 to 15}}
36*67e74705SXin Li __builtin_s390_vlbb(cptr, len); // expected-error {{must be a constant integer}}
37*67e74705SXin Li
38*67e74705SXin Li __builtin_s390_vpdi(vul, vul, -1); // expected-error {{argument should be a value from 0 to 15}}
39*67e74705SXin Li __builtin_s390_vpdi(vul, vul, 16); // expected-error {{argument should be a value from 0 to 15}}
40*67e74705SXin Li __builtin_s390_vpdi(vul, vul, len); // expected-error {{must be a constant integer}}
41*67e74705SXin Li }
42*67e74705SXin Li
test_integer(void)43*67e74705SXin Li void test_integer(void) {
44*67e74705SXin Li __builtin_s390_verimb(vuc, vuc, vuc, -1); // expected-error {{argument should be a value from 0 to 255}}
45*67e74705SXin Li __builtin_s390_verimb(vuc, vuc, vuc, 256); // expected-error {{argument should be a value from 0 to 255}}
46*67e74705SXin Li __builtin_s390_verimb(vuc, vuc, vuc, len); // expected-error {{must be a constant integer}}
47*67e74705SXin Li
48*67e74705SXin Li __builtin_s390_verimh(vus, vus, vus, -1); // expected-error {{argument should be a value from 0 to 255}}
49*67e74705SXin Li __builtin_s390_verimh(vus, vus, vus, 256); // expected-error {{argument should be a value from 0 to 255}}
50*67e74705SXin Li __builtin_s390_verimh(vus, vus, vus, len); // expected-error {{must be a constant integer}}
51*67e74705SXin Li
52*67e74705SXin Li __builtin_s390_verimf(vui, vui, vui, -1); // expected-error {{argument should be a value from 0 to 255}}
53*67e74705SXin Li __builtin_s390_verimf(vui, vui, vui, 256); // expected-error {{argument should be a value from 0 to 255}}
54*67e74705SXin Li __builtin_s390_verimf(vui, vui, vui, len); // expected-error {{must be a constant integer}}
55*67e74705SXin Li
56*67e74705SXin Li __builtin_s390_verimg(vul, vul, vul, -1); // expected-error {{argument should be a value from 0 to 255}}
57*67e74705SXin Li __builtin_s390_verimg(vul, vul, vul, 256); // expected-error {{argument should be a value from 0 to 255}}
58*67e74705SXin Li __builtin_s390_verimg(vul, vul, vul, len); // expected-error {{must be a constant integer}}
59*67e74705SXin Li
60*67e74705SXin Li __builtin_s390_vsldb(vuc, vuc, -1); // expected-error {{argument should be a value from 0 to 15}}
61*67e74705SXin Li __builtin_s390_vsldb(vuc, vuc, 16); // expected-error {{argument should be a value from 0 to 15}}
62*67e74705SXin Li __builtin_s390_vsldb(vuc, vuc, len); // expected-error {{must be a constant integer}}
63*67e74705SXin Li }
64*67e74705SXin Li
test_string(void)65*67e74705SXin Li void test_string(void) {
66*67e74705SXin Li __builtin_s390_vfaeb(vuc, vuc, -1); // expected-error {{argument should be a value from 0 to 15}}
67*67e74705SXin Li __builtin_s390_vfaeb(vuc, vuc, 16); // expected-error {{argument should be a value from 0 to 15}}
68*67e74705SXin Li __builtin_s390_vfaeb(vuc, vuc, len); // expected-error {{must be a constant integer}}
69*67e74705SXin Li
70*67e74705SXin Li __builtin_s390_vfaeh(vus, vus, -1); // expected-error {{argument should be a value from 0 to 15}}
71*67e74705SXin Li __builtin_s390_vfaeh(vus, vus, 16); // expected-error {{argument should be a value from 0 to 15}}
72*67e74705SXin Li __builtin_s390_vfaeh(vus, vus, len); // expected-error {{must be a constant integer}}
73*67e74705SXin Li
74*67e74705SXin Li __builtin_s390_vfaef(vui, vui, -1); // expected-error {{argument should be a value from 0 to 15}}
75*67e74705SXin Li __builtin_s390_vfaef(vui, vui, 16); // expected-error {{argument should be a value from 0 to 15}}
76*67e74705SXin Li __builtin_s390_vfaef(vui, vui, len); // expected-error {{must be a constant integer}}
77*67e74705SXin Li
78*67e74705SXin Li __builtin_s390_vfaezb(vuc, vuc, -1); // expected-error {{argument should be a value from 0 to 15}}
79*67e74705SXin Li __builtin_s390_vfaezb(vuc, vuc, 16); // expected-error {{argument should be a value from 0 to 15}}
80*67e74705SXin Li __builtin_s390_vfaezb(vuc, vuc, len); // expected-error {{must be a constant integer}}
81*67e74705SXin Li
82*67e74705SXin Li __builtin_s390_vfaezh(vus, vus, -1); // expected-error {{argument should be a value from 0 to 15}}
83*67e74705SXin Li __builtin_s390_vfaezh(vus, vus, 16); // expected-error {{argument should be a value from 0 to 15}}
84*67e74705SXin Li __builtin_s390_vfaezh(vus, vus, len); // expected-error {{must be a constant integer}}
85*67e74705SXin Li
86*67e74705SXin Li __builtin_s390_vfaezf(vui, vui, -1); // expected-error {{argument should be a value from 0 to 15}}
87*67e74705SXin Li __builtin_s390_vfaezf(vui, vui, 16); // expected-error {{argument should be a value from 0 to 15}}
88*67e74705SXin Li __builtin_s390_vfaezf(vui, vui, len); // expected-error {{must be a constant integer}}
89*67e74705SXin Li
90*67e74705SXin Li __builtin_s390_vstrcb(vuc, vuc, vuc, -1); // expected-error {{argument should be a value from 0 to 15}}
91*67e74705SXin Li __builtin_s390_vstrcb(vuc, vuc, vuc, 16); // expected-error {{argument should be a value from 0 to 15}}
92*67e74705SXin Li __builtin_s390_vstrcb(vuc, vuc, vuc, len); // expected-error {{must be a constant integer}}
93*67e74705SXin Li
94*67e74705SXin Li __builtin_s390_vstrch(vus, vus, vus, -1); // expected-error {{argument should be a value from 0 to 15}}
95*67e74705SXin Li __builtin_s390_vstrch(vus, vus, vus, 16); // expected-error {{argument should be a value from 0 to 15}}
96*67e74705SXin Li __builtin_s390_vstrch(vus, vus, vus, len); // expected-error {{must be a constant integer}}
97*67e74705SXin Li
98*67e74705SXin Li __builtin_s390_vstrcf(vui, vui, vui, -1); // expected-error {{argument should be a value from 0 to 15}}
99*67e74705SXin Li __builtin_s390_vstrcf(vui, vui, vui, 16); // expected-error {{argument should be a value from 0 to 15}}
100*67e74705SXin Li __builtin_s390_vstrcf(vui, vui, vui, len); // expected-error {{must be a constant integer}}
101*67e74705SXin Li
102*67e74705SXin Li __builtin_s390_vstrczb(vuc, vuc, vuc, -1); // expected-error {{argument should be a value from 0 to 15}}
103*67e74705SXin Li __builtin_s390_vstrczb(vuc, vuc, vuc, 16); // expected-error {{argument should be a value from 0 to 15}}
104*67e74705SXin Li __builtin_s390_vstrczb(vuc, vuc, vuc, len); // expected-error {{must be a constant integer}}
105*67e74705SXin Li
106*67e74705SXin Li __builtin_s390_vstrczh(vus, vus, vus, -1); // expected-error {{argument should be a value from 0 to 15}}
107*67e74705SXin Li __builtin_s390_vstrczh(vus, vus, vus, 16); // expected-error {{argument should be a value from 0 to 15}}
108*67e74705SXin Li __builtin_s390_vstrczh(vus, vus, vus, len); // expected-error {{must be a constant integer}}
109*67e74705SXin Li
110*67e74705SXin Li __builtin_s390_vstrczf(vui, vui, vui, -1); // expected-error {{argument should be a value from 0 to 15}}
111*67e74705SXin Li __builtin_s390_vstrczf(vui, vui, vui, 16); // expected-error {{argument should be a value from 0 to 15}}
112*67e74705SXin Li __builtin_s390_vstrczf(vui, vui, vui, len); // expected-error {{must be a constant integer}}
113*67e74705SXin Li
114*67e74705SXin Li __builtin_s390_vfaebs(vuc, vuc, -1, &cc); // expected-error {{argument should be a value from 0 to 15}}
115*67e74705SXin Li __builtin_s390_vfaebs(vuc, vuc, 16, &cc); // expected-error {{argument should be a value from 0 to 15}}
116*67e74705SXin Li __builtin_s390_vfaebs(vuc, vuc, len, &cc); // expected-error {{must be a constant integer}}
117*67e74705SXin Li
118*67e74705SXin Li __builtin_s390_vfaehs(vus, vus, -1, &cc); // expected-error {{argument should be a value from 0 to 15}}
119*67e74705SXin Li __builtin_s390_vfaehs(vus, vus, 16, &cc); // expected-error {{argument should be a value from 0 to 15}}
120*67e74705SXin Li __builtin_s390_vfaehs(vus, vus, len, &cc); // expected-error {{must be a constant integer}}
121*67e74705SXin Li
122*67e74705SXin Li __builtin_s390_vfaefs(vui, vui, -1, &cc); // expected-error {{argument should be a value from 0 to 15}}
123*67e74705SXin Li __builtin_s390_vfaefs(vui, vui, 16, &cc); // expected-error {{argument should be a value from 0 to 15}}
124*67e74705SXin Li __builtin_s390_vfaefs(vui, vui, len, &cc); // expected-error {{must be a constant integer}}
125*67e74705SXin Li
126*67e74705SXin Li __builtin_s390_vfaezbs(vuc, vuc, -1, &cc); // expected-error {{argument should be a value from 0 to 15}}
127*67e74705SXin Li __builtin_s390_vfaezbs(vuc, vuc, 16, &cc); // expected-error {{argument should be a value from 0 to 15}}
128*67e74705SXin Li __builtin_s390_vfaezbs(vuc, vuc, len, &cc); // expected-error {{must be a constant integer}}
129*67e74705SXin Li
130*67e74705SXin Li __builtin_s390_vfaezhs(vus, vus, -1, &cc); // expected-error {{argument should be a value from 0 to 15}}
131*67e74705SXin Li __builtin_s390_vfaezhs(vus, vus, 16, &cc); // expected-error {{argument should be a value from 0 to 15}}
132*67e74705SXin Li __builtin_s390_vfaezhs(vus, vus, len, &cc); // expected-error {{must be a constant integer}}
133*67e74705SXin Li
134*67e74705SXin Li __builtin_s390_vfaezfs(vui, vui, -1, &cc); // expected-error {{argument should be a value from 0 to 15}}
135*67e74705SXin Li __builtin_s390_vfaezfs(vui, vui, 16, &cc); // expected-error {{argument should be a value from 0 to 15}}
136*67e74705SXin Li __builtin_s390_vfaezfs(vui, vui, len, &cc); // expected-error {{must be a constant integer}}
137*67e74705SXin Li
138*67e74705SXin Li __builtin_s390_vstrcbs(vuc, vuc, vuc, -1, &cc); // expected-error {{argument should be a value from 0 to 15}}
139*67e74705SXin Li __builtin_s390_vstrcbs(vuc, vuc, vuc, 16, &cc); // expected-error {{argument should be a value from 0 to 15}}
140*67e74705SXin Li __builtin_s390_vstrcbs(vuc, vuc, vuc, len, &cc); // expected-error {{must be a constant integer}}
141*67e74705SXin Li
142*67e74705SXin Li __builtin_s390_vstrchs(vus, vus, vus, -1, &cc); // expected-error {{argument should be a value from 0 to 15}}
143*67e74705SXin Li __builtin_s390_vstrchs(vus, vus, vus, 16, &cc); // expected-error {{argument should be a value from 0 to 15}}
144*67e74705SXin Li __builtin_s390_vstrchs(vus, vus, vus, len, &cc); // expected-error {{must be a constant integer}}
145*67e74705SXin Li
146*67e74705SXin Li __builtin_s390_vstrcfs(vui, vui, vui, -1, &cc); // expected-error {{argument should be a value from 0 to 15}}
147*67e74705SXin Li __builtin_s390_vstrcfs(vui, vui, vui, 16, &cc); // expected-error {{argument should be a value from 0 to 15}}
148*67e74705SXin Li __builtin_s390_vstrcfs(vui, vui, vui, len, &cc); // expected-error {{must be a constant integer}}
149*67e74705SXin Li
150*67e74705SXin Li __builtin_s390_vstrczbs(vuc, vuc, vuc, -1, &cc); // expected-error {{argument should be a value from 0 to 15}}
151*67e74705SXin Li __builtin_s390_vstrczbs(vuc, vuc, vuc, 16, &cc); // expected-error {{argument should be a value from 0 to 15}}
152*67e74705SXin Li __builtin_s390_vstrczbs(vuc, vuc, vuc, len, &cc); // expected-error {{must be a constant integer}}
153*67e74705SXin Li
154*67e74705SXin Li __builtin_s390_vstrczhs(vus, vus, vus, -1, &cc); // expected-error {{argument should be a value from 0 to 15}}
155*67e74705SXin Li __builtin_s390_vstrczhs(vus, vus, vus, 16, &cc); // expected-error {{argument should be a value from 0 to 15}}
156*67e74705SXin Li __builtin_s390_vstrczhs(vus, vus, vus, len, &cc); // expected-error {{must be a constant integer}}
157*67e74705SXin Li
158*67e74705SXin Li __builtin_s390_vstrczfs(vui, vui, vui, -1, &cc); // expected-error {{argument should be a value from 0 to 15}}
159*67e74705SXin Li __builtin_s390_vstrczfs(vui, vui, vui, 16, &cc); // expected-error {{argument should be a value from 0 to 15}}
160*67e74705SXin Li __builtin_s390_vstrczfs(vui, vui, vui, len, &cc); // expected-error {{must be a constant integer}}
161*67e74705SXin Li }
162*67e74705SXin Li
test_float(void)163*67e74705SXin Li void test_float(void) {
164*67e74705SXin Li __builtin_s390_vftcidb(vd, -1, &cc); // expected-error {{argument should be a value from 0 to 4095}}
165*67e74705SXin Li __builtin_s390_vftcidb(vd, 4096, &cc); // expected-error {{argument should be a value from 0 to 4095}}
166*67e74705SXin Li __builtin_s390_vftcidb(vd, len, &cc); // expected-error {{must be a constant integer}}
167*67e74705SXin Li
168*67e74705SXin Li __builtin_s390_vfidb(vd, -1, 0); // expected-error {{argument should be a value from 0 to 15}}
169*67e74705SXin Li __builtin_s390_vfidb(vd, 16, 0); // expected-error {{argument should be a value from 0 to 15}}
170*67e74705SXin Li __builtin_s390_vfidb(vd, len, 0); // expected-error {{must be a constant integer}}
171*67e74705SXin Li __builtin_s390_vfidb(vd, 0, -1); // expected-error {{argument should be a value from 0 to 15}}
172*67e74705SXin Li __builtin_s390_vfidb(vd, 0, 16); // expected-error {{argument should be a value from 0 to 15}}
173*67e74705SXin Li __builtin_s390_vfidb(vd, 0, len); // expected-error {{must be a constant integer}}
174*67e74705SXin Li }
175