xref: /llvm-project/clang/test/CodeGen/RISCV/rvv-intrinsics-handcrafted/vget-index-out-of-range.c (revision 3055c5815ac08aa0d8597bff63569b9ed8ec0822)
1 // REQUIRES: riscv-registered-target
2 // RUN: %clang_cc1 -triple riscv64 -target-feature +f -target-feature +d \
3 // RUN:   -target-feature +v -target-feature +zfh -target-feature +zvfh \
4 // RUN:   -fsyntax-only -verify %s
5 
6 #include <riscv_vector.h>
7 
test_vget_v_index_not_constant(vint8m2_t src,int index)8 vint8m1_t test_vget_v_index_not_constant(vint8m2_t src, int index) {
9   // expected-error@+1 {{argument to '__riscv_vget_v_i8m2_i8m1' must be a constant integer}}
10   return __riscv_vget_v_i8m2_i8m1(src, index);
11 }
12 
test_vget_v_i8m2_i8m1(vint8m2_t src)13 vint8m1_t test_vget_v_i8m2_i8m1(vint8m2_t src) {
14   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
15   return __riscv_vget_v_i8m2_i8m1(src, 2);
16 }
17 
test_vget_v_i8m4_i8m1(vint8m4_t src)18 vint8m1_t test_vget_v_i8m4_i8m1(vint8m4_t src) {
19   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
20   return __riscv_vget_v_i8m4_i8m1(src, 4);
21 }
22 
test_vget_v_i8m4_i8m2(vint8m4_t src)23 vint8m2_t test_vget_v_i8m4_i8m2(vint8m4_t src) {
24   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
25   return __riscv_vget_v_i8m4_i8m2(src, 2);
26 }
27 
test_vget_v_i8m8_i8m1(vint8m8_t src)28 vint8m1_t test_vget_v_i8m8_i8m1(vint8m8_t src) {
29   // expected-error@+1 {{argument value 8 is outside the valid range [0, 7]}}
30   return __riscv_vget_v_i8m8_i8m1(src, 8);
31 }
32 
test_vget_v_i8m8_i8m2(vint8m8_t src)33 vint8m2_t test_vget_v_i8m8_i8m2(vint8m8_t src) {
34   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
35   return __riscv_vget_v_i8m8_i8m2(src, 4);
36 }
37 
test_vget_v_i8m8_i8m4(vint8m8_t src)38 vint8m4_t test_vget_v_i8m8_i8m4(vint8m8_t src) {
39   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
40   return __riscv_vget_v_i8m8_i8m4(src, 2);
41 }
42 
test_vget_v_i16m2_i16m1(vint16m2_t src)43 vint16m1_t test_vget_v_i16m2_i16m1(vint16m2_t src) {
44   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
45   return __riscv_vget_v_i16m2_i16m1(src, 2);
46 }
47 
test_vget_v_i16m4_i16m1(vint16m4_t src)48 vint16m1_t test_vget_v_i16m4_i16m1(vint16m4_t src) {
49   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
50   return __riscv_vget_v_i16m4_i16m1(src, 4);
51 }
52 
test_vget_v_i16m4_i16m2(vint16m4_t src)53 vint16m2_t test_vget_v_i16m4_i16m2(vint16m4_t src) {
54   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
55   return __riscv_vget_v_i16m4_i16m2(src, 2);
56 }
57 
test_vget_v_i16m8_i16m1(vint16m8_t src)58 vint16m1_t test_vget_v_i16m8_i16m1(vint16m8_t src) {
59   // expected-error@+1 {{argument value 8 is outside the valid range [0, 7]}}
60   return __riscv_vget_v_i16m8_i16m1(src, 8);
61 }
62 
test_vget_v_i16m8_i16m2(vint16m8_t src)63 vint16m2_t test_vget_v_i16m8_i16m2(vint16m8_t src) {
64   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
65   return __riscv_vget_v_i16m8_i16m2(src, 4);
66 }
67 
test_vget_v_i16m8_i16m4(vint16m8_t src)68 vint16m4_t test_vget_v_i16m8_i16m4(vint16m8_t src) {
69   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
70   return __riscv_vget_v_i16m8_i16m4(src, 2);
71 }
72 
test_vget_v_i32m2_i32m1(vint32m2_t src)73 vint32m1_t test_vget_v_i32m2_i32m1(vint32m2_t src) {
74   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
75   return __riscv_vget_v_i32m2_i32m1(src, 2);
76 }
77 
test_vget_v_i32m4_i32m1(vint32m4_t src)78 vint32m1_t test_vget_v_i32m4_i32m1(vint32m4_t src) {
79   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
80   return __riscv_vget_v_i32m4_i32m1(src, 4);
81 }
82 
test_vget_v_i32m4_i32m2(vint32m4_t src)83 vint32m2_t test_vget_v_i32m4_i32m2(vint32m4_t src) {
84   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
85   return __riscv_vget_v_i32m4_i32m2(src, 2);
86 }
87 
test_vget_v_i32m8_i32m1(vint32m8_t src)88 vint32m1_t test_vget_v_i32m8_i32m1(vint32m8_t src) {
89   // expected-error@+1 {{argument value 8 is outside the valid range [0, 7]}}
90   return __riscv_vget_v_i32m8_i32m1(src, 8);
91 }
92 
test_vget_v_i32m8_i32m2(vint32m8_t src)93 vint32m2_t test_vget_v_i32m8_i32m2(vint32m8_t src) {
94   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
95   return __riscv_vget_v_i32m8_i32m2(src, 4);
96 }
97 
test_vget_v_i32m8_i32m4(vint32m8_t src)98 vint32m4_t test_vget_v_i32m8_i32m4(vint32m8_t src) {
99   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
100   return __riscv_vget_v_i32m8_i32m4(src, 2);
101 }
102 
test_vget_v_i64m2_i64m1(vint64m2_t src)103 vint64m1_t test_vget_v_i64m2_i64m1(vint64m2_t src) {
104   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
105   return __riscv_vget_v_i64m2_i64m1(src, 2);
106 }
107 
test_vget_v_i64m4_i64m1(vint64m4_t src)108 vint64m1_t test_vget_v_i64m4_i64m1(vint64m4_t src) {
109   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
110   return __riscv_vget_v_i64m4_i64m1(src, 4);
111 }
112 
test_vget_v_i64m4_i64m2(vint64m4_t src)113 vint64m2_t test_vget_v_i64m4_i64m2(vint64m4_t src) {
114   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
115   return __riscv_vget_v_i64m4_i64m2(src, 2);
116 }
117 
test_vget_v_i64m8_i64m1(vint64m8_t src)118 vint64m1_t test_vget_v_i64m8_i64m1(vint64m8_t src) {
119   // expected-error@+1 {{argument value 8 is outside the valid range [0, 7]}}
120   return __riscv_vget_v_i64m8_i64m1(src, 8);
121 }
122 
test_vget_v_i64m8_i64m2(vint64m8_t src)123 vint64m2_t test_vget_v_i64m8_i64m2(vint64m8_t src) {
124   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
125   return __riscv_vget_v_i64m8_i64m2(src, 4);
126 }
127 
test_vget_v_i64m8_i64m4(vint64m8_t src)128 vint64m4_t test_vget_v_i64m8_i64m4(vint64m8_t src) {
129   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
130   return __riscv_vget_v_i64m8_i64m4(src, 2);
131 }
132 
test_vget_v_u8m2_u8m1(vuint8m2_t src)133 vuint8m1_t test_vget_v_u8m2_u8m1(vuint8m2_t src) {
134   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
135   return __riscv_vget_v_u8m2_u8m1(src, 2);
136 }
137 
test_vget_v_u8m4_u8m1(vuint8m4_t src)138 vuint8m1_t test_vget_v_u8m4_u8m1(vuint8m4_t src) {
139   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
140   return __riscv_vget_v_u8m4_u8m1(src, 4);
141 }
142 
test_vget_v_u8m4_u8m2(vuint8m4_t src)143 vuint8m2_t test_vget_v_u8m4_u8m2(vuint8m4_t src) {
144   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
145   return __riscv_vget_v_u8m4_u8m2(src, 2);
146 }
147 
test_vget_v_u8m8_u8m1(vuint8m8_t src)148 vuint8m1_t test_vget_v_u8m8_u8m1(vuint8m8_t src) {
149   // expected-error@+1 {{argument value 8 is outside the valid range [0, 7]}}
150   return __riscv_vget_v_u8m8_u8m1(src, 8);
151 }
152 
test_vget_v_u8m8_u8m2(vuint8m8_t src)153 vuint8m2_t test_vget_v_u8m8_u8m2(vuint8m8_t src) {
154   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
155   return __riscv_vget_v_u8m8_u8m2(src, 4);
156 }
157 
test_vget_v_u8m8_u8m4(vuint8m8_t src)158 vuint8m4_t test_vget_v_u8m8_u8m4(vuint8m8_t src) {
159   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
160   return __riscv_vget_v_u8m8_u8m4(src, 2);
161 }
162 
test_vget_v_u16m2_u16m1(vuint16m2_t src)163 vuint16m1_t test_vget_v_u16m2_u16m1(vuint16m2_t src) {
164   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
165   return __riscv_vget_v_u16m2_u16m1(src, 2);
166 }
167 
test_vget_v_u16m4_u16m1(vuint16m4_t src)168 vuint16m1_t test_vget_v_u16m4_u16m1(vuint16m4_t src) {
169   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
170   return __riscv_vget_v_u16m4_u16m1(src, 4);
171 }
172 
test_vget_v_u16m4_u16m2(vuint16m4_t src)173 vuint16m2_t test_vget_v_u16m4_u16m2(vuint16m4_t src) {
174   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
175   return __riscv_vget_v_u16m4_u16m2(src, 2);
176 }
177 
test_vget_v_u16m8_u16m1(vuint16m8_t src)178 vuint16m1_t test_vget_v_u16m8_u16m1(vuint16m8_t src) {
179   // expected-error@+1 {{argument value 8 is outside the valid range [0, 7]}}
180   return __riscv_vget_v_u16m8_u16m1(src, 8);
181 }
182 
test_vget_v_u16m8_u16m2(vuint16m8_t src)183 vuint16m2_t test_vget_v_u16m8_u16m2(vuint16m8_t src) {
184   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
185   return __riscv_vget_v_u16m8_u16m2(src, 4);
186 }
187 
test_vget_v_u16m8_u16m4(vuint16m8_t src)188 vuint16m4_t test_vget_v_u16m8_u16m4(vuint16m8_t src) {
189   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
190   return __riscv_vget_v_u16m8_u16m4(src, 2);
191 }
192 
test_vget_v_u32m2_u32m1(vuint32m2_t src)193 vuint32m1_t test_vget_v_u32m2_u32m1(vuint32m2_t src) {
194   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
195   return __riscv_vget_v_u32m2_u32m1(src, 2);
196 }
197 
test_vget_v_u32m4_u32m1(vuint32m4_t src)198 vuint32m1_t test_vget_v_u32m4_u32m1(vuint32m4_t src) {
199   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
200   return __riscv_vget_v_u32m4_u32m1(src, 4);
201 }
202 
test_vget_v_u32m4_u32m2(vuint32m4_t src)203 vuint32m2_t test_vget_v_u32m4_u32m2(vuint32m4_t src) {
204   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
205   return __riscv_vget_v_u32m4_u32m2(src, 2);
206 }
207 
test_vget_v_u32m8_u32m1(vuint32m8_t src)208 vuint32m1_t test_vget_v_u32m8_u32m1(vuint32m8_t src) {
209   // expected-error@+1 {{argument value 8 is outside the valid range [0, 7]}}
210   return __riscv_vget_v_u32m8_u32m1(src, 8);
211 }
212 
test_vget_v_u32m8_u32m2(vuint32m8_t src)213 vuint32m2_t test_vget_v_u32m8_u32m2(vuint32m8_t src) {
214   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
215   return __riscv_vget_v_u32m8_u32m2(src, 4);
216 }
217 
test_vget_v_u32m8_u32m4(vuint32m8_t src)218 vuint32m4_t test_vget_v_u32m8_u32m4(vuint32m8_t src) {
219   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
220   return __riscv_vget_v_u32m8_u32m4(src, 2);
221 }
222 
test_vget_v_u64m2_u64m1(vuint64m2_t src)223 vuint64m1_t test_vget_v_u64m2_u64m1(vuint64m2_t src) {
224   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
225   return __riscv_vget_v_u64m2_u64m1(src, 2);
226 }
227 
test_vget_v_u64m4_u64m1(vuint64m4_t src)228 vuint64m1_t test_vget_v_u64m4_u64m1(vuint64m4_t src) {
229   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
230   return __riscv_vget_v_u64m4_u64m1(src, 4);
231 }
232 
test_vget_v_u64m4_u64m2(vuint64m4_t src)233 vuint64m2_t test_vget_v_u64m4_u64m2(vuint64m4_t src) {
234   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
235   return __riscv_vget_v_u64m4_u64m2(src, 2);
236 }
237 
test_vget_v_u64m8_u64m1(vuint64m8_t src)238 vuint64m1_t test_vget_v_u64m8_u64m1(vuint64m8_t src) {
239   // expected-error@+1 {{argument value 8 is outside the valid range [0, 7]}}
240   return __riscv_vget_v_u64m8_u64m1(src, 8);
241 }
242 
test_vget_v_u64m8_u64m2(vuint64m8_t src)243 vuint64m2_t test_vget_v_u64m8_u64m2(vuint64m8_t src) {
244   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
245   return __riscv_vget_v_u64m8_u64m2(src, 4);
246 }
247 
test_vget_v_u64m8_u64m4(vuint64m8_t src)248 vuint64m4_t test_vget_v_u64m8_u64m4(vuint64m8_t src) {
249   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
250   return __riscv_vget_v_u64m8_u64m4(src, 2);
251 }
252 
test_vget_v_f32m2_f32m1(vfloat32m2_t src)253 vfloat32m1_t test_vget_v_f32m2_f32m1(vfloat32m2_t src) {
254   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
255   return __riscv_vget_v_f32m2_f32m1(src, 2);
256 }
257 
test_vget_v_f32m4_f32m1(vfloat32m4_t src)258 vfloat32m1_t test_vget_v_f32m4_f32m1(vfloat32m4_t src) {
259   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
260   return __riscv_vget_v_f32m4_f32m1(src, 4);
261 }
262 
test_vget_v_f32m4_f32m2(vfloat32m4_t src)263 vfloat32m2_t test_vget_v_f32m4_f32m2(vfloat32m4_t src) {
264   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
265   return __riscv_vget_v_f32m4_f32m2(src, 2);
266 }
267 
test_vget_v_f32m8_f32m1(vfloat32m8_t src)268 vfloat32m1_t test_vget_v_f32m8_f32m1(vfloat32m8_t src) {
269   // expected-error@+1 {{argument value 8 is outside the valid range [0, 7]}}
270   return __riscv_vget_v_f32m8_f32m1(src, 8);
271 }
272 
test_vget_v_f32m8_f32m2(vfloat32m8_t src)273 vfloat32m2_t test_vget_v_f32m8_f32m2(vfloat32m8_t src) {
274   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
275   return __riscv_vget_v_f32m8_f32m2(src, 4);
276 }
277 
test_vget_v_f32m8_f32m4(vfloat32m8_t src)278 vfloat32m4_t test_vget_v_f32m8_f32m4(vfloat32m8_t src) {
279   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
280   return __riscv_vget_v_f32m8_f32m4(src, 2);
281 }
282 
test_vget_v_f64m2_f64m1(vfloat64m2_t src)283 vfloat64m1_t test_vget_v_f64m2_f64m1(vfloat64m2_t src) {
284   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
285   return __riscv_vget_v_f64m2_f64m1(src, 2);
286 }
287 
test_vget_v_f64m4_f64m1(vfloat64m4_t src)288 vfloat64m1_t test_vget_v_f64m4_f64m1(vfloat64m4_t src) {
289   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
290   return __riscv_vget_v_f64m4_f64m1(src, 4);
291 }
292 
test_vget_v_f64m4_f64m2(vfloat64m4_t src)293 vfloat64m2_t test_vget_v_f64m4_f64m2(vfloat64m4_t src) {
294   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
295   return __riscv_vget_v_f64m4_f64m2(src, 2);
296 }
297 
test_vget_v_f64m8_f64m1(vfloat64m8_t src)298 vfloat64m1_t test_vget_v_f64m8_f64m1(vfloat64m8_t src) {
299   // expected-error@+1 {{argument value 8 is outside the valid range [0, 7]}}
300   return __riscv_vget_v_f64m8_f64m1(src, 8);
301 }
302 
test_vget_v_f64m8_f64m2(vfloat64m8_t src)303 vfloat64m2_t test_vget_v_f64m8_f64m2(vfloat64m8_t src) {
304   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
305   return __riscv_vget_v_f64m8_f64m2(src, 4);
306 }
307 
test_vget_v_f64m8_f64m4(vfloat64m8_t src)308 vfloat64m4_t test_vget_v_f64m8_f64m4(vfloat64m8_t src) {
309   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
310   return __riscv_vget_v_f64m8_f64m4(src, 2);
311 }
312 
test_vget_v_f16m2_f16m1(vfloat16m2_t src)313 vfloat16m1_t test_vget_v_f16m2_f16m1(vfloat16m2_t src) {
314   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
315   return __riscv_vget_v_f16m2_f16m1(src, 2);
316 }
317 
test_vget_v_f16m4_f16m1(vfloat16m4_t src)318 vfloat16m1_t test_vget_v_f16m4_f16m1(vfloat16m4_t src) {
319   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
320   return __riscv_vget_v_f16m4_f16m1(src, 4);
321 }
322 
test_vget_v_f16m8_f16m1(vfloat16m8_t src)323 vfloat16m1_t test_vget_v_f16m8_f16m1(vfloat16m8_t src) {
324   // expected-error@+1 {{argument value 8 is outside the valid range [0, 7]}}
325   return __riscv_vget_v_f16m8_f16m1(src, 8);
326 }
327 
test_vget_v_f16m4_f16m2(vfloat16m4_t src)328 vfloat16m2_t test_vget_v_f16m4_f16m2(vfloat16m4_t src) {
329   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
330   return __riscv_vget_v_f16m4_f16m2(src, 2);
331 }
332 
test_vget_v_f16m8_f16m2(vfloat16m8_t src)333 vfloat16m2_t test_vget_v_f16m8_f16m2(vfloat16m8_t src) {
334   // expected-error@+1 {{argument value 4 is outside the valid range [0, 3]}}
335   return __riscv_vget_v_f16m8_f16m2(src, 4);
336 }
337 
test_vget_v_f16m8_f16m4(vfloat16m8_t src)338 vfloat16m4_t test_vget_v_f16m8_f16m4(vfloat16m8_t src) {
339   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
340   return __riscv_vget_v_f16m8_f16m4(src, 2);
341 }
342 
test_vget_v_i32m1x2_i32m1(vint32m1x2_t src)343 vint32m1_t test_vget_v_i32m1x2_i32m1(vint32m1x2_t src) {
344   // expected-error@+1 {{argument value 2 is outside the valid range [0, 1]}}
345   return __riscv_vget_v_i32m1x2_i32m1(src, 2);
346 }
347