xref: /llvm-project/clang/test/CodeGen/SystemZ/builtins-systemz-vector-error.c (revision 057e6bb5540b5ec57e73c56dca80c17fabc949e5)
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