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