xref: /llvm-project/clang/test/Sema/aarch64-sve-intrinsics/acle_sve_imm.cpp (revision 123064dc397d478a636ba1c5960d41ad381036a0)
1 // REQUIRES: aarch64-registered-target
2 
3 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -fsyntax-only -verify -verify-ignore-unexpected=error %s
4 // RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve -fsyntax-only -verify -verify-ignore-unexpected=error %s
5 
6 #ifdef SVE_OVERLOADED_FORMS
7 // A simple used,unused... macro, long enough to represent any SVE builtin.
8 #define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
9 #else
10 #define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
11 #endif
12 
13 #include <arm_sve.h>
14 
test_range_0_255()15 void test_range_0_255()
16 {
17   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 255]}}
18   SVE_ACLE_FUNC(svext,_s8,,)(svundef_s8(), svundef_s8(), -1);
19   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 255]}}
20   SVE_ACLE_FUNC(svext,_u8,,)(svundef_u8(), svundef_u8(), -1);
21 }
22 
test_range_0_127()23 void test_range_0_127()
24 {
25   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 127]}}
26   SVE_ACLE_FUNC(svext,_s16,,)(svundef_s16(), svundef_s16(), -1);
27   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 127]}}
28   SVE_ACLE_FUNC(svext,_u16,,)(svundef_u16(), svundef_u16(), 128);
29   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 127]}}
30   SVE_ACLE_FUNC(svext,_f16,,)(svundef_f16(), svundef_f16(), -1);
31 }
32 
test_range_0_63()33 void test_range_0_63()
34 {
35   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 63]}}
36   SVE_ACLE_FUNC(svext,_s32,,)(svundef_s32(), svundef_s32(), -1);
37   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 63]}}
38   SVE_ACLE_FUNC(svext,_u32,,)(svundef_u32(), svundef_u32(), -1);
39   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 63]}}
40   SVE_ACLE_FUNC(svext,_f32,,)(svundef_f32(), svundef_f32(), 64);
41 }
42 
test_range_0_31()43 void test_range_0_31()
44 {
45   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 31]}}
46   SVE_ACLE_FUNC(svext,_s64,,)(svundef_s64(), svundef_s64(), -1);
47   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 31]}}
48   SVE_ACLE_FUNC(svext,_u64,,)(svundef_u64(), svundef_u64(), 32);
49   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 31]}}
50   SVE_ACLE_FUNC(svext,_f64,,)(svundef_f64(), svundef_f64(), -1);
51 }
52 
test_range_0_1()53 void test_range_0_1()
54 {
55   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
56   SVE_ACLE_FUNC(svget2,_s8,,)(svundef2_s8(), -1);
57   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
58   SVE_ACLE_FUNC(svget2,_s16,,)(svundef2_s16(), 2);
59   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
60   SVE_ACLE_FUNC(svget2,_s32,,)(svundef2_s32(), -1);
61   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
62   SVE_ACLE_FUNC(svget2,_s64,,)(svundef2_s64(), 2);
63   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
64   SVE_ACLE_FUNC(svget2,_u8,,)(svundef2_u8(), -1);
65   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
66   SVE_ACLE_FUNC(svget2,_u16,,)(svundef2_u16(), 2);
67   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
68   SVE_ACLE_FUNC(svget2,_u32,,)(svundef2_u32(), -1);
69   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
70   SVE_ACLE_FUNC(svget2,_u64,,)(svundef2_u64(), 2);
71   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
72   SVE_ACLE_FUNC(svget2,_f16,,)(svundef2_f16(), -1);
73   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
74   SVE_ACLE_FUNC(svget2,_f32,,)(svundef2_f32(), 2);
75   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
76   SVE_ACLE_FUNC(svget2,_f64,,)(svundef2_f64(), -1);
77   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
78   SVE_ACLE_FUNC(svset2,_s8,,)(svundef2_s8(), 2, svundef_s8());
79   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
80   SVE_ACLE_FUNC(svset2,_s16,,)(svundef2_s16(), -1, svundef_s16());
81   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
82   SVE_ACLE_FUNC(svset2,_s32,,)(svundef2_s32(), 2, svundef_s32());
83   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
84   SVE_ACLE_FUNC(svset2,_s64,,)(svundef2_s64(), -1, svundef_s64());
85   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
86   SVE_ACLE_FUNC(svset2,_u8,,)(svundef2_u8(), 2, svundef_u8());
87   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
88   SVE_ACLE_FUNC(svset2,_u16,,)(svundef2_u16(), -1, svundef_u16());
89   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
90   SVE_ACLE_FUNC(svset2,_u32,,)(svundef2_u32(), 2, svundef_u32());
91   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
92   SVE_ACLE_FUNC(svset2,_u64,,)(svundef2_u64(), -1, svundef_u64());
93   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
94   SVE_ACLE_FUNC(svset2,_f16,,)(svundef2_f16(), 2, svundef_f16());
95   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
96   SVE_ACLE_FUNC(svset2,_f32,,)(svundef2_f32(), -1, svundef_f32());
97   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
98   SVE_ACLE_FUNC(svset2,_f64,,)(svundef2_f64(), 2, svundef_f64());
99 }
100 
test_range_0_2()101 void test_range_0_2()
102 {
103   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
104   SVE_ACLE_FUNC(svget3,_s8,,)(svundef3_s8(), 3);
105   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
106   SVE_ACLE_FUNC(svget3,_s16,,)(svundef3_s16(), -1);
107   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
108   SVE_ACLE_FUNC(svget3,_s32,,)(svundef3_s32(), 3);
109   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
110   SVE_ACLE_FUNC(svget3,_s64,,)(svundef3_s64(), -1);
111   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
112   SVE_ACLE_FUNC(svget3,_u8,,)(svundef3_u8(), 3);
113   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
114   SVE_ACLE_FUNC(svget3,_u16,,)(svundef3_u16(), -1);
115   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
116   SVE_ACLE_FUNC(svget3,_u32,,)(svundef3_u32(), 3);
117   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
118   SVE_ACLE_FUNC(svget3,_u64,,)(svundef3_u64(), -1);
119   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
120   SVE_ACLE_FUNC(svget3,_f16,,)(svundef3_f16(), 3);
121   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
122   SVE_ACLE_FUNC(svget3,_f32,,)(svundef3_f32(), -1);
123   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
124   SVE_ACLE_FUNC(svget3,_f64,,)(svundef3_f64(), 3);
125   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
126   SVE_ACLE_FUNC(svset3,_s8,,)(svundef3_s8(), -1, svundef_s8());
127   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
128   SVE_ACLE_FUNC(svset3,_s16,,)(svundef3_s16(), -1, svundef_s16());
129   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
130   SVE_ACLE_FUNC(svset3,_s32,,)(svundef3_s32(), 3, svundef_s32());
131   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
132   SVE_ACLE_FUNC(svset3,_s64,,)(svundef3_s64(), -1, svundef_s64());
133   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
134   SVE_ACLE_FUNC(svset3,_u8,,)(svundef3_u8(), 3, svundef_u8());
135   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
136   SVE_ACLE_FUNC(svset3,_u16,,)(svundef3_u16(), -1, svundef_u16());
137   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
138   SVE_ACLE_FUNC(svset3,_u32,,)(svundef3_u32(), 3, svundef_u32());
139   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
140   SVE_ACLE_FUNC(svset3,_u64,,)(svundef3_u64(), -1, svundef_u64());
141   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
142   SVE_ACLE_FUNC(svset3,_f16,,)(svundef3_f16(), 3, svundef_f16());
143   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
144   SVE_ACLE_FUNC(svset3,_f32,,)(svundef3_f32(), -1, svundef_f32());
145   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 2]}}
146   SVE_ACLE_FUNC(svset3,_f64,,)(svundef3_f64(), 3, svundef_f64());
147 }
148 
test_range_0_3()149 void test_range_0_3()
150 {
151   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
152   SVE_ACLE_FUNC(svget4,_s8,,)(svundef4_s8(), -1);
153   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
154   SVE_ACLE_FUNC(svget4,_s16,,)(svundef4_s16(), 4);
155   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
156   SVE_ACLE_FUNC(svget4,_s32,,)(svundef4_s32(), -1);
157   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
158   SVE_ACLE_FUNC(svget4,_s64,,)(svundef4_s64(), 4);
159   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
160   SVE_ACLE_FUNC(svget4,_u8,,)(svundef4_u8(), -1);
161   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
162   SVE_ACLE_FUNC(svget4,_u16,,)(svundef4_u16(), 4);
163   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
164   SVE_ACLE_FUNC(svget4,_u32,,)(svundef4_u32(), -1);
165   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
166   SVE_ACLE_FUNC(svget4,_u64,,)(svundef4_u64(), 4);
167   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
168   SVE_ACLE_FUNC(svget4,_f16,,)(svundef4_f16(), -1);
169   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
170   SVE_ACLE_FUNC(svget4,_f32,,)(svundef4_f32(), 4);
171   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
172   SVE_ACLE_FUNC(svget4,_f64,,)(svundef4_f64(), -1);
173   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
174   SVE_ACLE_FUNC(svset4,_s8,,)(svundef4_s8(), -1, svundef_s8());
175   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
176   SVE_ACLE_FUNC(svset4,_s32,,)(svundef4_s32(), 4, svundef_s32());
177   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
178   SVE_ACLE_FUNC(svset4,_s64,,)(svundef4_s64(), -1, svundef_s64());
179   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
180   SVE_ACLE_FUNC(svset4,_u8,,)(svundef4_u8(), 4, svundef_u8());
181   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
182   SVE_ACLE_FUNC(svset4,_u16,,)(svundef4_u16(), -1, svundef_u16());
183   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
184   SVE_ACLE_FUNC(svset4,_u32,,)(svundef4_u32(), 4, svundef_u32());
185   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
186   SVE_ACLE_FUNC(svset4,_u64,,)(svundef4_u64(), -1, svundef_u64());
187   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
188   SVE_ACLE_FUNC(svset4,_f16,,)(svundef4_f16(), 4, svundef_f16());
189   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
190   SVE_ACLE_FUNC(svset4,_f32,,)(svundef4_f32(), -1, svundef_f32());
191   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
192   SVE_ACLE_FUNC(svset4,_f64,,)(svundef4_f64(), 4, svundef_f64());
193 }
194 
test_range_0_7()195 void test_range_0_7()
196 {
197   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
198   SVE_ACLE_FUNC(svtmad,_f16,,)(svundef_f16(), svundef_f16(), -1);
199   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
200   SVE_ACLE_FUNC(svtmad,_f32,,)(svundef_f32(), svundef_f32(), 8);
201   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
202   SVE_ACLE_FUNC(svtmad,_f64,,)(svundef_f64(), svundef_f64(), -1);
203 }
204 
test_range_0_13(svbool_t pg,const void * const_void_ptr)205 void test_range_0_13(svbool_t pg, const void *const_void_ptr)
206 {
207   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 13]}}
208   svprfb(pg, const_void_ptr, svprfop(14));
209   // expected-error-re@+1 {{must be a constant integer}}
210   svprfb_vnum(pg, const_void_ptr, 0, svprfop(-1));
211   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 13]}}
212   svprfd(pg, const_void_ptr, svprfop(14));
213   // expected-error-re@+1 {{must be a constant integer}}
214   svprfd_vnum(pg, const_void_ptr, 0, svprfop(-1));
215   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 13]}}
216   svprfh(pg, const_void_ptr, svprfop(14));
217   // expected-error-re@+1 {{must be a constant integer}}
218   svprfh_vnum(pg, const_void_ptr, 0, svprfop(-1));
219   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [0, 13]}}
220   svprfw(pg, const_void_ptr, svprfop(14));
221   // expected-error-re@+1 {{must be a constant integer}}
222   svprfw_vnum(pg, const_void_ptr, 0, svprfop(-1));
223 }
224 
test_range_1_16()225 void test_range_1_16()
226 {
227   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
228   SVE_ACLE_FUNC(svqdecd,_s64,,)(svundef_s64(), 0);
229   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
230   SVE_ACLE_FUNC(svqdecd_pat,_s64,,)(svundef_s64(), SV_VL8, 17);
231   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
232   SVE_ACLE_FUNC(svqdecd,_u64,,)(svundef_u64(), 0);
233   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
234   SVE_ACLE_FUNC(svqdecd_pat,_u64,,)(svundef_u64(), SV_VL64, 17);
235   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
236   SVE_ACLE_FUNC(svqdech,_s16,,)(svundef_s16(), 0);
237   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
238   SVE_ACLE_FUNC(svqdech,_u16,,)(svundef_u16(), 17);
239   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
240   SVE_ACLE_FUNC(svqdech_pat,_s16,,)(svundef_s16(), SV_VL8, 0);
241   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
242   SVE_ACLE_FUNC(svqdech_pat,_u16,,)(svundef_u16(), SV_VL64, 17);
243   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
244   SVE_ACLE_FUNC(svqdecw,_s32,,)(svundef_s32(), 0);
245   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
246   SVE_ACLE_FUNC(svqdecw,_u32,,)(svundef_u32(), 17);
247   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
248   SVE_ACLE_FUNC(svqdecw_pat,_s32,,)(svundef_s32(), SV_VL8, 0);
249   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
250   SVE_ACLE_FUNC(svqdecw_pat,_u32,,)(svundef_u32(), SV_VL64, 17);
251   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
252   SVE_ACLE_FUNC(svqincd,_s64,,)(svundef_s64(), 0);
253   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
254   SVE_ACLE_FUNC(svqincd,_u64,,)(svundef_u64(), 17);
255   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
256   SVE_ACLE_FUNC(svqincd_pat,_s64,,)(svundef_s64(), SV_VL8, 0);
257   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
258   SVE_ACLE_FUNC(svqincd_pat,_u64,,)(svundef_u64(), SV_VL64, 17);
259   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
260   SVE_ACLE_FUNC(svqinch,_s16,,)(svundef_s16(), 0);
261   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
262   SVE_ACLE_FUNC(svqinch,_u16,,)(svundef_u16(), 17);
263   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
264   SVE_ACLE_FUNC(svqinch_pat,_s16,,)(svundef_s16(), SV_VL8, 0);
265   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
266   SVE_ACLE_FUNC(svqinch_pat,_u16,,)(svundef_u16(), SV_VL64, 17);
267   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
268   SVE_ACLE_FUNC(svqincw,_s32,,)(svundef_s32(), 0);
269   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
270   SVE_ACLE_FUNC(svqincw,_u32,,)(svundef_u32(), 17);
271   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
272   SVE_ACLE_FUNC(svqincw_pat,_s32,,)(svundef_s32(), SV_VL8, 0);
273   // expected-error-re@+1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
274   SVE_ACLE_FUNC(svqincw_pat,_u32,,)(svundef_u32(), SV_VL64, 17);
275 }
276 
test_constant(uint64_t u64)277 void test_constant(uint64_t u64)
278 {
279   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
280   SVE_ACLE_FUNC(svget2,_s8,,)(svundef2_s8(), u64);
281   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
282   SVE_ACLE_FUNC(svget2,_s16,,)(svundef2_s16(), u64);
283   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
284   SVE_ACLE_FUNC(svget2,_s32,,)(svundef2_s32(), u64);
285   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
286   SVE_ACLE_FUNC(svget2,_s64,,)(svundef2_s64(), u64);
287   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
288   SVE_ACLE_FUNC(svget2,_u8,,)(svundef2_u8(), u64);
289   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
290   SVE_ACLE_FUNC(svget2,_u16,,)(svundef2_u16(), u64);
291   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
292   SVE_ACLE_FUNC(svget2,_u32,,)(svundef2_u32(), u64);
293   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
294   SVE_ACLE_FUNC(svget2,_u64,,)(svundef2_u64(), u64);
295   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
296   SVE_ACLE_FUNC(svget2,_f16,,)(svundef2_f16(), u64);
297   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
298   SVE_ACLE_FUNC(svget2,_f32,,)(svundef2_f32(), u64);
299   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
300   SVE_ACLE_FUNC(svget2,_f64,,)(svundef2_f64(), u64);
301   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
302   SVE_ACLE_FUNC(svget3,_s8,,)(svundef3_s8(), u64);
303   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
304   SVE_ACLE_FUNC(svget3,_s16,,)(svundef3_s16(), u64);
305   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
306   SVE_ACLE_FUNC(svget3,_s32,,)(svundef3_s32(), u64);
307   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
308   SVE_ACLE_FUNC(svget3,_s64,,)(svundef3_s64(), u64);
309   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
310   SVE_ACLE_FUNC(svget3,_u8,,)(svundef3_u8(), u64);
311   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
312   SVE_ACLE_FUNC(svget3,_u16,,)(svundef3_u16(), u64);
313   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
314   SVE_ACLE_FUNC(svget3,_u32,,)(svundef3_u32(), u64);
315   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
316   SVE_ACLE_FUNC(svget3,_u64,,)(svundef3_u64(), u64);
317   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
318   SVE_ACLE_FUNC(svget3,_f16,,)(svundef3_f16(), u64);
319   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
320   SVE_ACLE_FUNC(svget3,_f32,,)(svundef3_f32(), u64);
321   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
322   SVE_ACLE_FUNC(svget3,_f64,,)(svundef3_f64(), u64);
323   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
324   SVE_ACLE_FUNC(svget4,_s8,,)(svundef4_s8(), u64);
325   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
326   SVE_ACLE_FUNC(svget4,_s16,,)(svundef4_s16(), u64);
327   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
328   SVE_ACLE_FUNC(svget4,_s32,,)(svundef4_s32(), u64);
329   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
330   SVE_ACLE_FUNC(svget4,_s64,,)(svundef4_s64(), u64);
331   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
332   SVE_ACLE_FUNC(svget4,_u8,,)(svundef4_u8(), u64);
333   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
334   SVE_ACLE_FUNC(svget4,_u16,,)(svundef4_u16(), u64);
335   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
336   SVE_ACLE_FUNC(svget4,_u32,,)(svundef4_u32(), u64);
337   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
338   SVE_ACLE_FUNC(svget4,_u64,,)(svundef4_u64(), u64);
339   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
340   SVE_ACLE_FUNC(svget4,_f16,,)(svundef4_f16(), u64);
341   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
342   SVE_ACLE_FUNC(svget4,_f32,,)(svundef4_f32(), u64);
343   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
344   SVE_ACLE_FUNC(svget4,_f64,,)(svundef4_f64(), u64);
345   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
346   SVE_ACLE_FUNC(svset2,_s8,,)(svundef2_s8(), u64, svundef_s8());
347   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
348   SVE_ACLE_FUNC(svset2,_s16,,)(svundef2_s16(), u64, svundef_s16());
349   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
350   SVE_ACLE_FUNC(svset2,_s32,,)(svundef2_s32(), u64, svundef_s32());
351   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
352   SVE_ACLE_FUNC(svset2,_s64,,)(svundef2_s64(), u64, svundef_s64());
353   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
354   SVE_ACLE_FUNC(svset2,_u8,,)(svundef2_u8(), u64, svundef_u8());
355   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
356   SVE_ACLE_FUNC(svset2,_u16,,)(svundef2_u16(), u64, svundef_u16());
357   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
358   SVE_ACLE_FUNC(svset2,_u32,,)(svundef2_u32(), u64, svundef_u32());
359   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
360   SVE_ACLE_FUNC(svset2,_u64,,)(svundef2_u64(), u64, svundef_u64());
361   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
362   SVE_ACLE_FUNC(svset2,_f16,,)(svundef2_f16(), u64, svundef_f16());
363   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
364   SVE_ACLE_FUNC(svset2,_f32,,)(svundef2_f32(), u64, svundef_f32());
365   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
366   SVE_ACLE_FUNC(svset2,_f64,,)(svundef2_f64(), u64, svundef_f64());
367   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
368   SVE_ACLE_FUNC(svset3,_s8,,)(svundef3_s8(), u64, svundef_s8());
369   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
370   SVE_ACLE_FUNC(svset3,_s16,,)(svundef3_s16(), u64, svundef_s16());
371   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
372   SVE_ACLE_FUNC(svset3,_s32,,)(svundef3_s32(), u64, svundef_s32());
373   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
374   SVE_ACLE_FUNC(svset3,_s64,,)(svundef3_s64(), u64, svundef_s64());
375   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
376   SVE_ACLE_FUNC(svset3,_u8,,)(svundef3_u8(), u64, svundef_u8());
377   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
378   SVE_ACLE_FUNC(svset3,_u16,,)(svundef3_u16(), u64, svundef_u16());
379   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
380   SVE_ACLE_FUNC(svset3,_u32,,)(svundef3_u32(), u64, svundef_u32());
381   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
382   SVE_ACLE_FUNC(svset3,_u64,,)(svundef3_u64(), u64, svundef_u64());
383   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
384   SVE_ACLE_FUNC(svset3,_f16,,)(svundef3_f16(), u64, svundef_f16());
385   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
386   SVE_ACLE_FUNC(svset3,_f32,,)(svundef3_f32(), u64, svundef_f32());
387   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
388   SVE_ACLE_FUNC(svset3,_f64,,)(svundef3_f64(), u64, svundef_f64());
389   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
390   SVE_ACLE_FUNC(svset4,_s8,,)(svundef4_s8(), u64, svundef_s8());
391   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
392   SVE_ACLE_FUNC(svset4,_s16,,)(svundef4_s16(), u64, svundef_s16());
393   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
394   SVE_ACLE_FUNC(svset4,_s32,,)(svundef4_s32(), u64, svundef_s32());
395   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
396   SVE_ACLE_FUNC(svset4,_s64,,)(svundef4_s64(), u64, svundef_s64());
397   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
398   SVE_ACLE_FUNC(svset4,_u8,,)(svundef4_u8(), u64, svundef_u8());
399   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
400   SVE_ACLE_FUNC(svset4,_u16,,)(svundef4_u16(), u64, svundef_u16());
401   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
402   SVE_ACLE_FUNC(svset4,_u32,,)(svundef4_u32(), u64, svundef_u32());
403   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
404   SVE_ACLE_FUNC(svset4,_u64,,)(svundef4_u64(), u64, svundef_u64());
405   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
406   SVE_ACLE_FUNC(svset4,_f16,,)(svundef4_f16(), u64, svundef_f16());
407   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
408   SVE_ACLE_FUNC(svset4,_f32,,)(svundef4_f32(), u64, svundef_f32());
409   // expected-error-re@+1 {{argument to '{{.*}}' must be a constant integer}}
410   SVE_ACLE_FUNC(svset4,_f64,,)(svundef4_f64(), u64, svundef_f64());
411 }
412 
test_num_args()413 void test_num_args()
414 {
415   // expected-note@* {{requires 0 arguments, but 1 was provided}}
416   SVE_ACLE_FUNC(svcnt,, b,)(1);
417   // expected-note@* {{requires 0 arguments, but 1 was provided}}
418   SVE_ACLE_FUNC(svcnt,, h,)(2);
419   // expected-note@* {{requires 0 arguments, but 1 was provided}}
420   SVE_ACLE_FUNC(svcnt,, w,)(3);
421   // expected-note@* {{requires 0 arguments, but 1 was provided}}
422   SVE_ACLE_FUNC(svcnt,, d,)(4);
423   // expected-note@* {{requires 0 arguments, but 1 was provided}}
424   SVE_ACLE_FUNC(svptrue,, _b8,)(1);
425   // expected-note@* {{requires 0 arguments, but 1 was provided}}
426   SVE_ACLE_FUNC(svptrue,, _b16,)(2);
427   // expected-note@* {{requires 0 arguments, but 1 was provided}}
428   SVE_ACLE_FUNC(svptrue,, _b32,)(3);
429   // expected-note@* {{requires 0 arguments, but 1 was provided}}
430   SVE_ACLE_FUNC(svptrue,, _b64,)(4);
431 }
432 
test_enum(svbool_t pg,const void * const_void_ptr,uint64_t u64)433 void test_enum(svbool_t pg, const void *const_void_ptr, uint64_t u64)
434 {
435   // Test type checks on svpattern and svprfop enums.
436 
437   // expected-note@* {{no known conversion from 'svpattern' to 'enum svprfop'}}
438   SVE_ACLE_FUNC(svprfb,,,)(pg, const_void_ptr, SV_VL1);
439   // expected-note@* + {{no known conversion from 'svprfop' to 'enum svpattern'}}
440   SVE_ACLE_FUNC(svqdecb_pat,_n_u64,,)(u64, SV_PLDL1KEEP, 1);
441 }
442