xref: /llvm-project/clang/test/Preprocessor/riscv-target-features.c (revision 2fae5bdea7c2016d4086aa7ecf3c5d0592ce95c8)
1 // RUN: %clang --target=riscv32-unknown-linux-gnu -march=rv32i -E -dM %s \
2 // RUN:   -o - | FileCheck %s
3 // RUN: %clang --target=riscv64-unknown-linux-gnu -march=rv64i -E -dM %s \
4 // RUN:   -o - | FileCheck %s
5 
6 // CHECK-NOT: __riscv_32e {{.*$}}
7 // CHECK-NOT: __riscv_64e {{.*$}}
8 // CHECK-NOT: __riscv_a {{.*$}}
9 // CHECK-NOT: __riscv_atomic
10 // CHECK-NOT: __riscv_b {{.*$}}
11 // CHECK-NOT: __riscv_c {{.*$}}
12 // CHECK-NOT: __riscv_compressed {{.*$}}
13 // CHECK-NOT: __riscv_d {{.*$}}
14 // CHECK-NOT: __riscv_f {{.*$}}
15 // CHECK-NOT: __riscv_flen {{.*$}}
16 // CHECK-NOT: __riscv_fdiv {{.*$}}
17 // CHECK-NOT: __riscv_fsqrt {{.*$}}
18 // CHECK-NOT: __riscv_h {{.*$}}
19 // CHECK-NOT: __riscv_div {{.*$}}
20 // CHECK-NOT: __riscv_m {{.*$}}
21 // CHECK-NOT: __riscv_mul {{.*$}}
22 // CHECK-NOT: __riscv_muldiv {{.*$}}
23 // CHECK-NOT: __riscv_sha {{.*$}}
24 // CHECK-NOT: __riscv_shcounterenw {{.*$}}
25 // CHECK-NOT: __riscv_shgatpa {{.*$}}
26 // CHECK-NOT: __riscv_shtvala {{.*$}}
27 // CHECK-NOT: __riscv_shvsatpa {{.*$}}
28 // CHECK-NOT: __riscv_shvstvala {{.*$}}
29 // CHECK-NOT: __riscv_shvstvecd {{.*$}}
30 // CHECK-NOT: __riscv_smaia {{.*$}}
31 // CHECK-NOT: __riscv_smcdeleg {{.*$}}
32 // CHECK-NOT: __riscv_smcsrind {{.*$}}
33 // CHECK-NOT: __riscv_smdbltrp {{.*$}}
34 // CHECK-NOT: __riscv_smepmp {{.*$}}
35 // CHECK-NOT: __riscv_smrnmi {{.*$}}
36 // CHECK-NOT: __riscv_smstateen {{.*$}}
37 // CHECK-NOT: __riscv_ssaia {{.*$}}
38 // CHECK-NOT: __riscv_ssccfg {{.*$}}
39 // CHECK-NOT: __riscv_ssccptr {{.*$}}
40 // CHECK-NOT: __riscv_sscofpmf {{.*$}}
41 // CHECK-NOT: __riscv_sscounterenw {{.*$}}
42 // CHECK-NOT: __riscv_sscsrind {{.*$}}
43 // CHECK-NOT: __riscv_ssdbltrp {{.*$}}
44 // CHECK-NOT: __riscv_ssqosid{{.*$}}
45 // CHECK-NOT: __riscv_ssstateen {{.*$}}
46 // CHECK-NOT: __riscv_ssstrict {{.*$}}
47 // CHECK-NOT: __riscv_sstc {{.*$}}
48 // CHECK-NOT: __riscv_sstvala {{.*$}}
49 // CHECK-NOT: __riscv_sstvecd {{.*$}}
50 // CHECK-NOT: __riscv_ssu64xl {{.*$}}
51 // CHECK-NOT: __riscv_svade {{.*$}}
52 // CHECK-NOT: __riscv_svadu {{.*$}}
53 // CHECK-NOT: __riscv_svbare {{.*$}}
54 // CHECK-NOT: __riscv_svinval {{.*$}}
55 // CHECK-NOT: __riscv_svnapot {{.*$}}
56 // CHECK-NOT: __riscv_svpbmt {{.*$}}
57 // CHECK-NOT: __riscv_svvptc {{.*$}}
58 // CHECK-NOT: __riscv_v {{.*$}}
59 // CHECK-NOT: __riscv_v_elen {{.*$}}
60 // CHECK-NOT: __riscv_v_elen_fp {{.*$}}
61 // CHECK-NOT: __riscv_v_intrinsic {{.*$}}
62 // CHECK-NOT: __riscv_v_min_vlen {{.*$}}
63 // CHECK-NOT: __riscv_vector {{.*$}}
64 // CHECK-NOT: __riscv_xcvalu {{.*$}}
65 // CHECK-NOT: __riscv_xcvbi {{.*$}}
66 // CHECK-NOT: __riscv_xcvbitmanip {{.*$}}
67 // CHECK-NOT: __riscv_xcvelw {{.*$}}
68 // CHECK-NOT: __riscv_xcvmac {{.*$}}
69 // CHECK-NOT: __riscv_xcvmem {{.*$}}
70 // CHECK-NOT: __riscv_xcvsimd {{.*$}}
71 // CHECK-NOT: __riscv_xsfcease {{.*$}}
72 // CHECK-NOT: __riscv_xsfvcp {{.*$}}
73 // CHECK-NOT: __riscv_xsfvfnrclipxfqf {{.*$}}
74 // CHECK-NOT: __riscv_xsfvfwmaccqqq {{.*$}}
75 // CHECK-NOT: __riscv_xsfqmaccdod {{.*$}}
76 // CHECK-NOT: __riscv_xsfvqmaccqoq {{.*$}}
77 // CHECK-NOT: __riscv_xsifivecdiscarddlone {{.*$}}
78 // CHECK-NOT: __riscv_xsifivecflushdlone {{.*$}}
79 // CHECK-NOT: __riscv_xtheadba {{.*$}}
80 // CHECK-NOT: __riscv_xtheadbb {{.*$}}
81 // CHECK-NOT: __riscv_xtheadbs {{.*$}}
82 // CHECK-NOT: __riscv_xtheadcmo {{.*$}}
83 // CHECK-NOT: __riscv_xtheadcondmov {{.*$}}
84 // CHECK-NOT: __riscv_xtheadfmemidx {{.*$}}
85 // CHECK-NOT: __riscv_xtheadmac {{.*$}}
86 // CHECK-NOT: __riscv_xtheadmemidx {{.*$}}
87 // CHECK-NOT: __riscv_xtheadmempair {{.*$}}
88 // CHECK-NOT: __riscv_xtheadsync {{.*$}}
89 // CHECK-NOT: __riscv_xtheadvdot {{.*$}}
90 // CHECK-NOT: __riscv_xventanacondops {{.*$}}
91 // CHECK-NOT: __riscv_za128rs {{.*$}}
92 // CHECK-NOT: __riscv_za64rs {{.*$}}
93 // CHECK-NOT: __riscv_zaamo {{.*$}}
94 // CHECK-NOT: __riscv_zabha {{.*$}}
95 // CHECK-NOT: __riscv_zacas {{.*$}}
96 // CHECK-NOT: __riscv_zalrsc {{.*$}}
97 // CHECK-NOT: __riscv_zama16b {{.*$}}
98 // CHECK-NOT: __riscv_zawrs {{.*$}}
99 // CHECK-NOT: __riscv_zba {{.*$}}
100 // CHECK-NOT: __riscv_zbb {{.*$}}
101 // CHECK-NOT: __riscv_zbc {{.*$}}
102 // CHECK-NOT: __riscv_zbkb {{.*$}}
103 // CHECK-NOT: __riscv_zbkc {{.*$}}
104 // CHECK-NOT: __riscv_zbkx {{.*$}}
105 // CHECK-NOT: __riscv_zbs {{.*$}}
106 // CHECK-NOT: __riscv_zca {{.*$}}
107 // CHECK-NOT: __riscv_zcb {{.*$}}
108 // CHECK-NOT: __riscv_zcd {{.*$}}
109 // CHECK-NOT: __riscv_zce {{.*$}}
110 // CHECK-NOT: __riscv_zcf {{.*$}}
111 // CHECK-NOT: __riscv_zcmop {{.*$}}
112 // CHECK-NOT: __riscv_zcmp {{.*$}}
113 // CHECK-NOT: __riscv_zcmt {{.*$}}
114 // CHECK-NOT: __riscv_zdinx {{.*$}}
115 // CHECK-NOT: __riscv_zfa {{.*$}}
116 // CHECK-NOT: __riscv_zfh {{.*$}}
117 // CHECK-NOT: __riscv_zfhmin {{.*$}}
118 // CHECK-NOT: __riscv_zfinx {{.*$}}
119 // CHECK-NOT: __riscv_zhinx {{.*$}}
120 // CHECK-NOT: __riscv_zhinxmin {{.*$}}
121 // CHECK-NOT: __riscv_zic64b {{.*$}}
122 // CHECK-NOT: __riscv_zicbom {{.*$}}
123 // CHECK-NOT: __riscv_zicbop {{.*$}}
124 // CHECK-NOT: __riscv_zicboz {{.*$}}
125 // CHECK-NOT: __riscv_ziccamoa {{.*$}}
126 // CHECK-NOT: __riscv_ziccif {{.*$}}
127 // CHECK-NOT: __riscv_zicclsm {{.*$}}
128 // CHECK-NOT: __riscv_ziccrse {{.*$}}
129 // CHECK-NOT: __riscv_zicntr {{.*$}}
130 // CHECK-NOT: __riscv_zicond {{.*$}}
131 // CHECK-NOT: __riscv_zicsr {{.*$}}
132 // CHECK-NOT: __riscv_zifencei {{.*$}}
133 // CHECK-NOT: __riscv_zihintntl {{.*$}}
134 // CHECK-NOT: __riscv_zihintpause {{.*$}}
135 // CHECK-NOT: __riscv_zihpm {{.*$}}
136 // CHECK-NOT: __riscv_zimop {{.*$}}
137 // CHECK-NOT: __riscv_zk {{.*$}}
138 // CHECK-NOT: __riscv_zkn {{.*$}}
139 // CHECK-NOT: __riscv_zknd {{.*$}}
140 // CHECK-NOT: __riscv_zkne {{.*$}}
141 // CHECK-NOT: __riscv_zknh {{.*$}}
142 // CHECK-NOT: __riscv_zkr {{.*$}}
143 // CHECK-NOT: __riscv_zks {{.*$}}
144 // CHECK-NOT: __riscv_zksed {{.*$}}
145 // CHECK-NOT: __riscv_zksh {{.*$}}
146 // CHECK-NOT: __riscv_zkt {{.*$}}
147 // CHECK-NOT: __riscv_zmmul {{.*$}}
148 // CHECK-NOT: __riscv_zvbb {{.*$}}
149 // CHECK-NOT: __riscv_zvbc {{.*$}}
150 // CHECK-NOT: __riscv_zve32f {{.*$}}
151 // CHECK-NOT: __riscv_zve32x {{.*$}}
152 // CHECK-NOT: __riscv_zve64d {{.*$}}
153 // CHECK-NOT: __riscv_zve64f {{.*$}}
154 // CHECK-NOT: __riscv_zve64x {{.*$}}
155 // CHECK-NOT: __riscv_zvfh {{.*$}}
156 // CHECK-NOT: __riscv_zvkb {{.*$}}
157 // CHECK-NOT: __riscv_zvkg {{.*$}}
158 // CHECK-NOT: __riscv_zvkn {{.*$}}
159 // CHECK-NOT: __riscv_zvknc {{.*$}}
160 // CHECK-NOT: __riscv_zvkned {{.*$}}
161 // CHECK-NOT: __riscv_zvkng {{.*$}}
162 // CHECK-NOT: __riscv_zvknha {{.*$}}
163 // CHECK-NOT: __riscv_zvknhb {{.*$}}
164 // CHECK-NOT: __riscv_zvks {{.*$}}
165 // CHECK-NOT: __riscv_zvksc {{.*$}}
166 // CHECK-NOT: __riscv_zvksed {{.*$}}
167 // CHECK-NOT: __riscv_zvksg {{.*$}}
168 // CHECK-NOT: __riscv_zvksh {{.*$}}
169 // CHECK-NOT: __riscv_zvkt {{.*$}}
170 // CHECK-NOT: __riscv_zvl32b {{.*$}}
171 // CHECK-NOT: __riscv_zvl64b {{.*$}}
172 // CHECK-NOT: __riscv_zvl128b {{.*$}}
173 // CHECK-NOT: __riscv_zvl256b {{.*$}}
174 // CHECK-NOT: __riscv_zvl512b {{.*$}}
175 // CHECK-NOT: __riscv_zvl1024b {{.*$}}
176 // CHECK-NOT: __riscv_zvl2048b {{.*$}}
177 // CHECK-NOT: __riscv_zvl4096b {{.*$}}
178 // CHECK-NOT: __riscv_zvl8192b {{.*$}}
179 // CHECK-NOT: __riscv_zvl16384b {{.*$}}
180 // CHECK-NOT: __riscv_zvl32768b {{.*$}}
181 // CHECK-NOT: __riscv_zvl65536b {{.*$}}
182 
183 // Experimental extensions
184 
185 // CHECK-NOT: __riscv_sdext{{.*$}}
186 // CHECK-NOT: __riscv_sdtrig{{.*$}}
187 // CHECK-NOT: __riscv_smctr{{.*$}}
188 // CHECK-NOT: __riscv_smmpm{{.*$}}
189 // CHECK-NOT: __riscv_smnpm{{.*$}}
190 // CHECK-NOT: __riscv_ssctr{{.*$}}
191 // CHECK-NOT: __riscv_ssnpm{{.*$}}
192 // CHECK-NOT: __riscv_sspm{{.*$}}
193 // CHECK-NOT: __riscv_supm{{.*$}}
194 // CHECK-NOT: __riscv_zalasr {{.*$}}
195 // CHECK-NOT: __riscv_zfbfmin {{.*$}}
196 // CHECK-NOT: __riscv_zicfilp {{.*$}}
197 // CHECK-NOT: __riscv_zicfiss {{.*$}}
198 // CHECK-NOT: __riscv_ztso {{.*$}}
199 // CHECK-NOT: __riscv_zvbc32e {{.*$}}
200 // CHECK-NOT: __riscv_zvfbfmin {{.*$}}
201 // CHECK-NOT: __riscv_zvfbfwma {{.*$}}
202 // CHECK-NOT: __riscv_zvkgs {{.*$}}
203 
204 // RUN: %clang --target=riscv32-unknown-linux-gnu \
205 // RUN:   -march=rv32ia -E -dM %s \
206 // RUN:   -o - | FileCheck --check-prefix=CHECK-A-EXT %s
207 // RUN: %clang --target=riscv64-unknown-linux-gnu \
208 // RUN:   -march=rv64ia -E -dM %s \
209 // RUN:   -o - | FileCheck --check-prefix=CHECK-A-EXT %s
210 // CHECK-A-EXT: __riscv_a 2001000{{$}}
211 // CHECK-A-EXT: __riscv_atomic 1
212 
213 // RUN: %clang --target=riscv32-unknown-linux-gnu \
214 // RUN:   -march=rv32ib -x c -E -dM %s \
215 // RUN:   -o - | FileCheck --check-prefix=CHECK-B-EXT %s
216 // RUN: %clang --target=riscv64-unknown-linux-gnu \
217 // RUN:   -march=rv64ib -x c -E -dM %s \
218 // RUN:   -o - | FileCheck --check-prefix=CHECK-B-EXT %s
219 // CHECK-B-EXT: __riscv_b 1000000{{$}}
220 // CHECK-B-EXT: __riscv_zba 1000000{{$}}
221 // CHECK-B-EXT: __riscv_zbb 1000000{{$}}
222 // CHECK-B-EXT: __riscv_zbs 1000000{{$}}
223 
224 // RUN: %clang --target=riscv32-unknown-linux-gnu \
225 // RUN:   -march=rv32ic -E -dM %s \
226 // RUN:   -o - | FileCheck --check-prefix=CHECK-C-EXT %s
227 // RUN: %clang --target=riscv64-unknown-linux-gnu \
228 // RUN:   -march=rv64ic -E -dM %s \
229 // RUN:   -o - | FileCheck --check-prefix=CHECK-C-EXT %s
230 // CHECK-C-EXT: __riscv_c 2000000{{$}}
231 // CHECK-C-EXT: __riscv_compressed 1
232 
233 // RUN: %clang --target=riscv32-unknown-linux-gnu \
234 // RUN:   -march=rv32ifd -E -dM %s \
235 // RUN:   -o - | FileCheck --check-prefix=CHECK-D-EXT %s
236 // RUN: %clang --target=riscv64-unknown-linux-gnu \
237 // RUN:   -march=rv64ifd -E -dM %s \
238 // RUN:   -o - | FileCheck --check-prefix=CHECK-D-EXT %s
239 // CHECK-D-EXT: __riscv_d 2002000{{$}}
240 // CHECK-D-EXT: __riscv_fdiv 1
241 // CHECK-D-EXT: __riscv_flen 64
242 // CHECK-D-EXT: __riscv_fsqrt 1
243 
244 // RUN: %clang --target=riscv32-unknown-linux-gnu \
245 // RUN:   -march=rv32e -E -dM %s \
246 // RUN:   -o - | FileCheck --check-prefixes=CHECK-E-EXT,CHECK-RV32E %s
247 // RUN: %clang --target=riscv64-unknown-linux-gnu \
248 // RUN:   -march=rv64e -E -dM %s \
249 // RUN:   -o - | FileCheck --check-prefixes=CHECK-E-EXT,CHECK-RV64E %s
250 // CHECK-RV32E: __riscv_32e 1
251 // CHECK-RV64E: __riscv_64e 1
252 // CHECK-E-EXT: __riscv_abi_rve 1
253 // CHECK-E-EXT: __riscv_e 2000000{{$}}
254 
255 // RUN: %clang --target=riscv32-unknown-linux-gnu \
256 // RUN:   -march=rv32if -E -dM %s \
257 // RUN:   -o - | FileCheck --check-prefix=CHECK-F-EXT %s
258 // RUN: %clang --target=riscv64-unknown-linux-gnu \
259 // RUN:   -march=rv64if -E -dM %s \
260 // RUN:   -o - | FileCheck --check-prefix=CHECK-F-EXT %s
261 // CHECK-F-EXT: __riscv_f 2002000{{$}}
262 // CHECK-F-EXT: __riscv_fdiv 1
263 // CHECK-F-EXT: __riscv_flen 32
264 // CHECK-F-EXT: __riscv_fsqrt 1
265 
266 // RUN: %clang --target=riscv32-unknown-linux-gnu \
267 // RUN:   -march=rv32ifd -mabi=ilp32 -E -dM %s \
268 // RUN:   -o - | FileCheck --check-prefix=CHECK-SOFT %s
269 // RUN: %clang --target=riscv64-unknown-linux-gnu \
270 // RUN:   -march=rv64ifd -mabi=lp64 -E -dM %s \
271 // RUN:   -o - | FileCheck --check-prefix=CHECK-SOFT %s
272 // CHECK-SOFT: __riscv_float_abi_soft 1
273 // CHECK-SOFT-NOT: __riscv_float_abi_single
274 // CHECK-SOFT-NOT: __riscv_float_abi_double
275 
276 // RUN: %clang --target=riscv32-unknown-linux-gnu \
277 // RUN:   -march=rv32ifd -mabi=ilp32f -E -dM %s \
278 // RUN:   -o - | FileCheck --check-prefix=CHECK-SINGLE %s
279 // RUN: %clang --target=riscv64-unknown-linux-gnu \
280 // RUN:   -march=rv64ifd -mabi=lp64f -E -dM %s \
281 // RUN:   -o - | FileCheck --check-prefix=CHECK-SINGLE %s
282 // CHECK-SINGLE: __riscv_float_abi_single 1
283 // CHECK-SINGLE-NOT: __riscv_float_abi_soft
284 // CHECK-SINGLE-NOT: __riscv_float_abi_double
285 
286 // RUN: %clang --target=riscv32-unknown-linux-gnu \
287 // RUN:   -march=rv32ifd -E -dM %s \
288 // RUN:   -o - | FileCheck --check-prefix=CHECK-DOUBLE %s
289 // RUN: %clang --target=riscv64-unknown-linux-gnu \
290 // RUN:   -march=rv64ifd -E -dM %s \
291 // RUN:   -o - | FileCheck --check-prefix=CHECK-DOUBLE %s
292 // CHECK-DOUBLE: __riscv_float_abi_double 1
293 // CHECK-DOUBLE-NOT: __riscv_float_abi_soft
294 // CHECK-DOUBLE-NOT: __riscv_float_abi_single
295 
296 // RUN: %clang --target=riscv32-unknown-linux-gnu \
297 // RUN:   -march=rv32i -mabi=ilp32e -E -dM %s \
298 // RUN:   -o - | FileCheck --check-prefix=CHECK-ILP32E %s
299 // RUN: %clang --target=riscv64-unknown-linux-gnu \
300 // RUN:   -march=rv64i -mabi=lp64e -E -dM %s \
301 // RUN:   -o - | FileCheck --check-prefix=CHECK-LP64E %s
302 // CHECK-ILP32E: __riscv_abi_rve 1
303 // CHECK-LP64E: __riscv_abi_rve 1
304 
305 // RUN: %clang --target=riscv32-unknown-linux-gnu \
306 // RUN:   -march=rv32ih -E -dM %s \
307 // RUN:   -o - | FileCheck --check-prefix=CHECK-H-EXT %s
308 // RUN: %clang --target=riscv64-unknown-linux-gnu \
309 // RUN:   -march=rv64ih -E -dM %s \
310 // RUN:   -o - | FileCheck --check-prefix=CHECK-H-EXT %s
311 // CHECK-H-EXT: __riscv_h 1000000{{$}}
312 
313 // RUN: %clang --target=riscv32-unknown-linux-gnu \
314 // RUN:   -march=rv32i -E -dM %s \
315 // RUN:   -o - | FileCheck %s
316 // RUN: %clang --target=riscv64-unknown-linux-gnu \
317 // RUN:   -march=rv64i -E -dM %s \
318 // RUN:   -o - | FileCheck %s
319 // CHECK: __riscv_i 2001000{{$}}
320 
321 // RUN: %clang --target=riscv32-unknown-linux-gnu \
322 // RUN:   -march=rv32im -E -dM %s \
323 // RUN:   -o - | FileCheck --check-prefix=CHECK-M-EXT %s
324 // RUN: %clang --target=riscv64-unknown-linux-gnu \
325 // RUN:   -march=rv64im -E -dM %s \
326 // RUN:   -o - | FileCheck --check-prefix=CHECK-M-EXT %s
327 // CHECK-M-EXT: __riscv_div 1
328 // CHECK-M-EXT: __riscv_m 2000000{{$}}
329 // CHECK-M-EXT: __riscv_mul 1
330 // CHECK-M-EXT: __riscv_muldiv 1
331 
332 // RUN: %clang --target=riscv32-unknown-linux-gnu \
333 // RUN:   -march=rv32isha -E -dM %s \
334 // RUN:   -o - | FileCheck --check-prefix=CHECK-SHCOUNTERENW-EXT %s
335 // RUN: %clang --target=riscv64-unknown-linux-gnu \
336 // RUN:   -march=rv64isha -E -dM %s \
337 // RUN:   -o - | FileCheck --check-prefix=CHECK-SHCOUNTERENW-EXT %s
338 // CHECK-SHA-EXT: __riscv_sha 1000000{{$}}
339 
340 // RUN: %clang --target=riscv32-unknown-linux-gnu \
341 // RUN:   -march=rv32ishcounterenw -E -dM %s \
342 // RUN:   -o - | FileCheck --check-prefix=CHECK-SHCOUNTERENW-EXT %s
343 // RUN: %clang --target=riscv64-unknown-linux-gnu \
344 // RUN:   -march=rv64ishcounterenw -E -dM %s \
345 // RUN:   -o - | FileCheck --check-prefix=CHECK-SHCOUNTERENW-EXT %s
346 // CHECK-SHCOUNTERENW-EXT: __riscv_shcounterenw 1000000{{$}}
347 
348 // RUN: %clang --target=riscv32-unknown-linux-gnu \
349 // RUN:   -march=rv32ishgatpa -E -dM %s \
350 // RUN:   -o - | FileCheck --check-prefix=CHECK-SHGATPA-EXT %s
351 // RUN: %clang --target=riscv64-unknown-linux-gnu \
352 // RUN:   -march=rv64ishgatpa -E -dM %s \
353 // RUN:   -o - | FileCheck --check-prefix=CHECK-SHGATPA-EXT %s
354 // CHECK-SHGATPA-EXT: __riscv_shgatpa 1000000{{$}}
355 
356 // RUN: %clang --target=riscv32-unknown-linux-gnu \
357 // RUN:   -march=rv32ishtvala -E -dM %s \
358 // RUN:   -o - | FileCheck --check-prefix=CHECK-SHTVALA-EXT %s
359 // RUN: %clang --target=riscv64-unknown-linux-gnu \
360 // RUN:   -march=rv64ishtvala -E -dM %s \
361 // RUN:   -o - | FileCheck --check-prefix=CHECK-SHTVALA-EXT %s
362 // CHECK-SHTVALA-EXT: __riscv_shtvala 1000000{{$}}
363 
364 // RUN: %clang --target=riscv32-unknown-linux-gnu \
365 // RUN:   -march=rv32ishvsatpa -E -dM %s \
366 // RUN:   -o - | FileCheck --check-prefix=CHECK-SHVSATPA-EXT %s
367 // RUN: %clang --target=riscv64-unknown-linux-gnu \
368 // RUN:   -march=rv64ishvsatpa -E -dM %s \
369 // RUN:   -o - | FileCheck --check-prefix=CHECK-SHVSATPA-EXT %s
370 // CHECK-SHVSATPA-EXT: __riscv_shvsatpa 1000000{{$}}
371 
372 // RUN: %clang --target=riscv32-unknown-linux-gnu \
373 // RUN:   -march=rv32ishvstvala -E -dM %s \
374 // RUN:   -o - | FileCheck --check-prefix=CHECK-SHVSTVALA-EXT %s
375 // RUN: %clang --target=riscv64-unknown-linux-gnu \
376 // RUN:   -march=rv64ishvstvala -E -dM %s \
377 // RUN:   -o - | FileCheck --check-prefix=CHECK-SHVSTVALA-EXT %s
378 // CHECK-SHVSTVALA-EXT: __riscv_shvstvala 1000000{{$}}
379 
380 // RUN: %clang --target=riscv32-unknown-linux-gnu \
381 // RUN:   -march=rv32ishvstvecd -E -dM %s \
382 // RUN:   -o - | FileCheck --check-prefix=CHECK-SHVSTVECD-EXT %s
383 // RUN: %clang --target=riscv64-unknown-linux-gnu \
384 // RUN:   -march=rv64ishvstvecd -E -dM %s \
385 // RUN:   -o - | FileCheck --check-prefix=CHECK-SHVSTVECD-EXT %s
386 // CHECK-SHVSTVECD-EXT: __riscv_shvstvecd 1000000{{$}}
387 
388 // RUN: %clang --target=riscv32-unknown-linux-gnu \
389 // RUN:   -march=rv32issccfg -E -dM %s \
390 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSCCFG-EXT %s
391 // RUN: %clang --target=riscv64-unknown-linux-gnu \
392 // RUN:   -march=rv64issccfg -E -dM %s \
393 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSCCFG-EXT %s
394 // CHECK-SSCCFG-EXT: __riscv_ssccfg 1000000{{$}}
395 
396 // RUN: %clang --target=riscv32-unknown-linux-gnu \
397 // RUN:   -march=rv32issccptr -E -dM %s \
398 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSCCPTR-EXT %s
399 // RUN: %clang --target=riscv64-unknown-linux-gnu \
400 // RUN:   -march=rv64issccptr -E -dM %s \
401 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSCCPTR-EXT %s
402 // CHECK-SSCCPTR-EXT: __riscv_ssccptr 1000000{{$}}
403 
404 // RUN: %clang --target=riscv32-unknown-linux-gnu \
405 // RUN:   -march=rv32isscofpmf -E -dM %s \
406 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSCOFPMF-EXT %s
407 // RUN: %clang --target=riscv64-unknown-linux-gnu \
408 // RUN:   -march=rv64isscofpmf -E -dM %s \
409 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSCOFPMF-EXT %s
410 // CHECK-SSCOFPMF-EXT: __riscv_sscofpmf 1000000{{$}}
411 
412 // RUN: %clang --target=riscv32-unknown-linux-gnu \
413 // RUN:   -march=rv32isscounterenw -E -dM %s \
414 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSCOUNTERENW-EXT %s
415 // RUN: %clang --target=riscv64-unknown-linux-gnu \
416 // RUN:   -march=rv64isscounterenw -E -dM %s \
417 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSCOUNTERENW-EXT %s
418 // CHECK-SSCOUNTERENW-EXT: __riscv_sscounterenw 1000000{{$}}
419 
420 // RUN: %clang --target=riscv32-unknown-linux-gnu \
421 // RUN:   -march=rv32ismstateen -E -dM %s \
422 // RUN:   -o - | FileCheck --check-prefix=CHECK-SMSTATEEN-EXT %s
423 // RUN: %clang --target=riscv64-unknown-linux-gnu \
424 // RUN:   -march=rv64ismstateen -E -dM %s \
425 // RUN:   -o - | FileCheck --check-prefix=CHECK-SMSTATEEN-EXT %s
426 // CHECK-SMSTATEEN-EXT: __riscv_smstateen 1000000{{$}}
427 
428 // RUN: %clang --target=riscv32-unknown-linux-gnu \
429 // RUN:   -march=rv32issstateen -E -dM %s \
430 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSSTATEEN-EXT %s
431 // RUN: %clang --target=riscv64-unknown-linux-gnu \
432 // RUN:   -march=rv64issstateen -E -dM %s \
433 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSSTATEEN-EXT %s
434 // CHECK-SSSTATEEN-EXT: __riscv_ssstateen 1000000{{$}}
435 
436 // RUN: %clang --target=riscv32-unknown-linux-gnu \
437 // RUN:   -march=rv32issstrict -E -dM %s \
438 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSSTRICT-EXT %s
439 // RUN: %clang --target=riscv64-unknown-linux-gnu \
440 // RUN:   -march=rv64issstrict -E -dM %s \
441 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSSTRICT-EXT %s
442 // CHECK-SSSTRICT-EXT: __riscv_ssstrict 1000000{{$}}
443 
444 // RUN: %clang --target=riscv32-unknown-linux-gnu \
445 // RUN:   -march=rv32isstc -E -dM %s \
446 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSTC-EXT %s
447 // RUN: %clang --target=riscv64-unknown-linux-gnu \
448 // RUN:   -march=rv64isstc -E -dM %s \
449 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSTC-EXT %s
450 // CHECK-SSTC-EXT: __riscv_sstc 1000000{{$}}
451 
452 // RUN: %clang --target=riscv32-unknown-linux-gnu \
453 // RUN:   -march=rv32isstvala -E -dM %s \
454 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSTVALA-EXT %s
455 // RUN: %clang --target=riscv64-unknown-linux-gnu \
456 // RUN:   -march=rv64isstvala -E -dM %s \
457 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSTVALA-EXT %s
458 // CHECK-SSTVALA-EXT: __riscv_sstvala 1000000{{$}}
459 
460 // RUN: %clang --target=riscv32-unknown-linux-gnu \
461 // RUN:   -march=rv32isstvecd -E -dM %s \
462 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSTVECD-EXT %s
463 // RUN: %clang --target=riscv64-unknown-linux-gnu \
464 // RUN:   -march=rv64isstvecd -E -dM %s \
465 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSTVECD-EXT %s
466 // CHECK-SSTVECD-EXT: __riscv_sstvecd 1000000{{$}}
467 
468 // RUN: %clang --target=riscv32-unknown-linux-gnu \
469 // RUN:   -march=rv32issu64xl -E -dM %s \
470 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSU64XL-EXT %s
471 // RUN: %clang --target=riscv64-unknown-linux-gnu \
472 // RUN:   -march=rv64issu64xl -E -dM %s \
473 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSU64XL-EXT %s
474 // CHECK-SSU64XL-EXT: __riscv_ssu64xl 1000000{{$}}
475 
476 // RUN: %clang --target=riscv32-unknown-linux-gnu \
477 // RUN:   -march=rv32isvade -E -dM %s \
478 // RUN:   -o - | FileCheck --check-prefix=CHECK-SVADE-EXT %s
479 // RUN: %clang --target=riscv64-unknown-linux-gnu \
480 // RUN:   -march=rv64isvade -E -dM %s \
481 // RUN:   -o - | FileCheck --check-prefix=CHECK-SVADE-EXT %s
482 // CHECK-SVADE-EXT: __riscv_svade 1000000{{$}}
483 
484 // RUN: %clang --target=riscv32-unknown-linux-gnu \
485 // RUN:   -march=rv32isvadu -E -dM %s \
486 // RUN:   -o - | FileCheck --check-prefix=CHECK-SVADU-EXT %s
487 // RUN: %clang --target=riscv64-unknown-linux-gnu \
488 // RUN:   -march=rv64isvadu -E -dM %s \
489 // RUN:   -o - | FileCheck --check-prefix=CHECK-SVADU-EXT %s
490 // CHECK-SVADU-EXT: __riscv_svadu 1000000{{$}}
491 
492 // RUN: %clang --target=riscv32-unknown-linux-gnu \
493 // RUN:   -march=rv32isvbare -E -dM %s \
494 // RUN:   -o - | FileCheck --check-prefix=CHECK-SVBARE-EXT %s
495 // RUN: %clang --target=riscv64-unknown-linux-gnu \
496 // RUN:   -march=rv64isvbare -E -dM %s \
497 // RUN:   -o - | FileCheck --check-prefix=CHECK-SVBARE-EXT %s
498 // CHECK-SVBARE-EXT: __riscv_svbare 1000000{{$}}
499 
500 // RUN: %clang --target=riscv32-unknown-linux-gnu \
501 // RUN:   -march=rv32isvinval -E -dM %s \
502 // RUN:   -o - | FileCheck --check-prefix=CHECK-SVINVAL-EXT %s
503 // RUN: %clang --target=riscv64-unknown-linux-gnu \
504 // RUN:   -march=rv64isvinval -E -dM %s \
505 // RUN:   -o - | FileCheck --check-prefix=CHECK-SVINVAL-EXT %s
506 // CHECK-SVINVAL-EXT: __riscv_svinval 1000000{{$}}
507 
508 // RUN: %clang --target=riscv32-unknown-linux-gnu \
509 // RUN:   -march=rv32isvnapot -E -dM %s \
510 // RUN:   -o - | FileCheck --check-prefix=CHECK-SVNAPOT-EXT %s
511 // RUN: %clang --target=riscv64-unknown-linux-gnu \
512 // RUN:   -march=rv64isvnapot -E -dM %s \
513 // RUN:   -o - | FileCheck --check-prefix=CHECK-SVNAPOT-EXT %s
514 // CHECK-SVNAPOT-EXT: __riscv_svnapot 1000000{{$}}
515 
516 // RUN: %clang --target=riscv32-unknown-linux-gnu \
517 // RUN:   -march=rv32isvpbmt -E -dM %s \
518 // RUN:   -o - | FileCheck --check-prefix=CHECK-SVPBMT-EXT %s
519 // RUN: %clang --target=riscv64-unknown-linux-gnu \
520 // RUN:   -march=rv64isvpbmt -E -dM %s \
521 // RUN:   -o - | FileCheck --check-prefix=CHECK-SVPBMT-EXT %s
522 // CHECK-SVPBMT-EXT: __riscv_svpbmt 1000000{{$}}
523 
524 // RUN: %clang --target=riscv32-unknown-linux-gnu \
525 // RUN:   -march=rv32isvvptc -E -dM %s \
526 // RUN:   -o - | FileCheck --check-prefix=CHECK-SVVPTC-EXT %s
527 // RUN: %clang --target=riscv64-unknown-linux-gnu \
528 // RUN:   -march=rv64isvvptc -E -dM %s \
529 // RUN:   -o - | FileCheck --check-prefix=CHECK-SVVPTC-EXT %s
530 // CHECK-SVVPTC-EXT: __riscv_svvptc 1000000{{$}}
531 
532 // RUN: %clang --target=riscv32-unknown-linux-gnu \
533 // RUN:   -march=rv32iv1p0 -E -dM %s \
534 // RUN:   -o - | FileCheck --check-prefix=CHECK-V-EXT %s
535 // RUN: %clang --target=riscv64-unknown-linux-gnu \
536 // RUN:   -march=rv64iv1p0 -E -dM %s \
537 // RUN:   -o - | FileCheck --check-prefix=CHECK-V-EXT %s
538 // CHECK-V-EXT: __riscv_v 1000000{{$}}
539 // CHECK-V-EXT: __riscv_v_elen 64
540 // CHECK-V-EXT: __riscv_v_elen_fp 64
541 // CHECK-V-EXT: __riscv_v_intrinsic 1000000{{$}}
542 // CHECK-V-EXT: __riscv_v_min_vlen 128
543 // CHECK-V-EXT: __riscv_vector 1
544 
545 // RUN: %clang --target=riscv32-unknown-linux-gnu \
546 // RUN:   -march=rv32ixcvalu -E -dM %s \
547 // RUN:   -o - | FileCheck --check-prefix=CHECK-XCVALU-EXT %s
548 // RUN: %clang --target=riscv64-unknown-linux-gnu \
549 // RUN:   -march=rv64ixcvalu -E -dM %s \
550 // RUN:   -o - | FileCheck --check-prefix=CHECK-XCVALU-EXT %s
551 // CHECK-XCVALU-EXT: __riscv_xcvalu 1000000{{$}}
552 
553 // RUN: %clang --target=riscv32-unknown-linux-gnu \
554 // RUN:   -march=rv32ixcvbi -E -dM %s \
555 // RUN:   -o - | FileCheck --check-prefix=CHECK-XCVBI-EXT %s
556 // RUN: %clang --target=riscv64-unknown-linux-gnu \
557 // RUN:   -march=rv64ixcvbi -E -dM %s \
558 // RUN:   -o - | FileCheck --check-prefix=CHECK-XCVBI-EXT %s
559 // CHECK-XCVBI-EXT: __riscv_xcvbi 1000000{{$}}
560 
561 // RUN: %clang --target=riscv32-unknown-linux-gnu \
562 // RUN:   -march=rv32ixcvbitmanip -E -dM %s \
563 // RUN:   -o - | FileCheck --check-prefix=CHECK-XCVBITMANIP-EXT %s
564 // RUN: %clang --target=riscv64-unknown-linux-gnu \
565 // RUN:   -march=rv64ixcvbitmanip -E -dM %s \
566 // RUN:   -o - | FileCheck --check-prefix=CHECK-XCVBITMANIP-EXT %s
567 // CHECK-XCVBITMANIP-EXT: __riscv_xcvbitmanip 1000000{{$}}
568 
569 // RUN: %clang --target=riscv32-unknown-linux-gnu \
570 // RUN:   -march=rv32ixcvmac -E -dM %s \
571 // RUN:   -o - | FileCheck --check-prefix=CHECK-XCVMAC-EXT %s
572 // RUN: %clang --target=riscv64-unknown-linux-gnu \
573 // RUN:   -march=rv64ixcvmac -E -dM %s \
574 // RUN:   -o - | FileCheck --check-prefix=CHECK-XCVMAC-EXT %s
575 // CHECK-XCVMAC-EXT: __riscv_xcvmac 1000000{{$}}
576 
577 // RUN: %clang --target=riscv32-unknown-linux-gnu \
578 // RUN:   -march=rv32ixcvsimd -E -dM %s \
579 // RUN:   -o - | FileCheck --check-prefix=CHECK-XCVSIMD-EXT %s
580 // RUN: %clang --target=riscv64-unknown-linux-gnu \
581 // RUN:   -march=rv64ixcvsimd -E -dM %s \
582 // RUN:   -o - | FileCheck --check-prefix=CHECK-XCVSIMD-EXT %s
583 // CHECK-XCVSIMD-EXT: __riscv_xcvsimd 1000000{{$}}
584 
585 // RUN: %clang --target=riscv32-unknown-linux-gnu \
586 // RUN:   -march=rv32ixsfcease -E -dM %s \
587 // RUN:   -o - | FileCheck --check-prefix=CHECK-XSFCEASE-EXT %s
588 // RUN: %clang --target=riscv64-unknown-linux-gnu \
589 // RUN:   -march=rv64ixsfcease -E -dM %s \
590 // RUN:   -o - | FileCheck --check-prefix=CHECK-XSFCEASE-EXT %s
591 // CHECK-XSFCEASE-EXT: __riscv_xsfcease 1000000{{$}}
592 
593 // RUN: %clang --target=riscv32-unknown-linux-gnu \
594 // RUN:   -march=rv32ixsfvcp -E -dM %s \
595 // RUN:   -o - | FileCheck --check-prefix=CHECK-XSFVCP-EXT %s
596 // RUN: %clang --target=riscv64-unknown-linux-gnu \
597 // RUN:   -march=rv64ixsfvcp -E -dM %s \
598 // RUN:   -o - | FileCheck --check-prefix=CHECK-XSFVCP-EXT %s
599 // CHECK-XSFVCP-EXT: __riscv_xsfvcp 1000000{{$}}
600 
601 // RUN: %clang --target=riscv32-unknown-linux-gnu \
602 // RUN:   -march=rv32ixsfvfnrclipxfqf -E -dM %s \
603 // RUN:   -o - | FileCheck --check-prefix=CHECK-XSFVFNRCLIPXFQF-EXT %s
604 // RUN: %clang --target=riscv64-unknown-linux-gnu \
605 // RUN:   -march=rv64ixsfvfnrclipxfqf -E -dM %s \
606 // RUN:   -o - | FileCheck --check-prefix=CHECK-XSFVFNRCLIPXFQF-EXT %s
607 // CHECK-XSFVFNRCLIPXFQF-EXT: __riscv_xsfvfnrclipxfqf 1000000{{$}}
608 
609 // RUN: %clang --target=riscv32-unknown-linux-gnu \
610 // RUN:   -march=rv32ixsfvfwmaccqqq -E -dM %s \
611 // RUN:   -o - | FileCheck --check-prefix=CHECK-XSFVFWMACCQQQ-EXT %s
612 // RUN: %clang --target=riscv64-unknown-linux-gnu \
613 // RUN:   -march=rv64ixsfvfwmaccqqq -E -dM %s \
614 // RUN:   -o - | FileCheck --check-prefix=CHECK-XSFVFWMACCQQQ-EXT %s
615 // CHECK-XSFVFWMACCQQQ-EXT: __riscv_xsfvfwmaccqqq 1000000{{$}}
616 
617 // RUN: %clang --target=riscv32-unknown-linux-gnu \
618 // RUN:   -march=rv32ixsfvqmaccdod -E -dM %s \
619 // RUN:   -o - | FileCheck --check-prefix=CHECK-XSFVQMACCDOD-EXT %s
620 // RUN: %clang --target=riscv64-unknown-linux-gnu \
621 // RUN:   -march=rv64ixsfvqmaccdod -E -dM %s \
622 // RUN:   -o - | FileCheck --check-prefix=CHECK-XSFVQMACCDOD-EXT %s
623 // CHECK-XSFVQMACCDOD-EXT: __riscv_xsfvqmaccdod 1000000{{$}}
624 
625 // RUN: %clang --target=riscv32-unknown-linux-gnu \
626 // RUN:   -march=rv32ixsfvqmaccqoq -E -dM %s \
627 // RUN:   -o - | FileCheck --check-prefix=CHECK-XSFVQMACCQOQ-EXT %s
628 // RUN: %clang --target=riscv64-unknown-linux-gnu \
629 // RUN:   -march=rv64ixsfvqmaccqoq -E -dM %s \
630 // RUN:   -o - | FileCheck --check-prefix=CHECK-XSFVQMACCQOQ-EXT %s
631 // CHECK-XSFVQMACCQOQ-EXT: __riscv_xsfvqmaccqoq 1000000{{$}}
632 
633 // RUN: %clang --target=riscv32-unknown-linux-gnu \
634 // RUN:   -march=rv32ixsifivecdiscarddlone -E -dM %s \
635 // RUN:   -o - | FileCheck --check-prefix=CHECK-XSIFIVECDISCARDDLONE-EXT %s
636 // RUN: %clang --target=riscv64-unknown-linux-gnu \
637 // RUN:   -march=rv64ixsifivecdiscarddlone -E -dM %s \
638 // RUN:   -o - | FileCheck --check-prefix=CHECK-XSIFIVECDISCARDDLONE-EXT %s
639 // CHECK-XSIFIVECDISCARDDLONE-EXT: __riscv_xsifivecdiscarddlone 1000000{{$}}
640 
641 // RUN: %clang --target=riscv32-unknown-linux-gnu \
642 // RUN:   -march=rv32ixsifivecflushdlone -E -dM %s \
643 // RUN:   -o - | FileCheck --check-prefix=CHECK-XSIFIVECFLUSHDLONE-EXT %s
644 // RUN: %clang --target=riscv64-unknown-linux-gnu \
645 // RUN:   -march=rv64ixsifivecflushdlone -E -dM %s \
646 // RUN:   -o - | FileCheck --check-prefix=CHECK-XSIFIVECFLUSHDLONE-EXT %s
647 // CHECK-XSIFIVECFLUSHDLONE-EXT: __riscv_xsifivecflushdlone 1000000{{$}}
648 
649 // RUN: %clang --target=riscv32-unknown-linux-gnu \
650 // RUN:   -march=rv32ixtheadba -E -dM %s \
651 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADBA-EXT %s
652 // RUN: %clang --target=riscv64-unknown-linux-gnu \
653 // RUN:   -march=rv64ixtheadba -E -dM %s \
654 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADBA-EXT %s
655 // CHECK-XTHEADBA-EXT: __riscv_xtheadba 1000000{{$}}
656 
657 // RUN: %clang --target=riscv32-unknown-linux-gnu \
658 // RUN:   -march=rv32ixtheadbb -E -dM %s \
659 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADBB-EXT %s
660 // RUN: %clang --target=riscv64-unknown-linux-gnu \
661 // RUN:   -march=rv64ixtheadbb -E -dM %s \
662 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADBB-EXT %s
663 // CHECK-XTHEADBB-EXT: __riscv_xtheadbb 1000000{{$}}
664 
665 // RUN: %clang --target=riscv32-unknown-linux-gnu \
666 // RUN:   -march=rv32ixtheadbs -E -dM %s \
667 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADBS-EXT %s
668 // RUN: %clang --target=riscv64-unknown-linux-gnu \
669 // RUN:   -march=rv64ixtheadbs -E -dM %s \
670 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADBS-EXT %s
671 // CHECK-XTHEADBS-EXT: __riscv_xtheadbs 1000000{{$}}
672 
673 // RUN: %clang --target=riscv32-unknown-linux-gnu \
674 // RUN:   -march=rv32ixtheadcmo -E -dM %s \
675 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADCMO-EXT %s
676 // RUN: %clang --target=riscv64-unknown-linux-gnu \
677 // RUN:   -march=rv64ixtheadcmo -E -dM %s \
678 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADCMO-EXT %s
679 // CHECK-XTHEADCMO-EXT: __riscv_xtheadcmo 1000000{{$}}
680 
681 // RUN: %clang --target=riscv32-unknown-linux-gnu \
682 // RUN:   -march=rv32ixtheadcondmov -E -dM %s \
683 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADCONDMOV-EXT %s
684 // RUN: %clang --target=riscv64-unknown-linux-gnu \
685 // RUN:   -march=rv64ixtheadcondmov -E -dM %s \
686 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADCONDMOV-EXT %s
687 // CHECK-XTHEADCONDMOV-EXT: __riscv_xtheadcondmov 1000000{{$}}
688 
689 // RUN: %clang --target=riscv32-unknown-linux-gnu \
690 // RUN:   -march=rv32ixtheadfmemidx -E -dM %s \
691 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADFMEMIDX-EXT %s
692 // RUN: %clang --target=riscv64-unknown-linux-gnu \
693 // RUN:   -march=rv64ixtheadfmemidx -E -dM %s \
694 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADFMEMIDX-EXT %s
695 // CHECK-XTHEADFMEMIDX-EXT: __riscv_xtheadfmemidx 1000000{{$}}
696 
697 // RUN: %clang --target=riscv32-unknown-linux-gnu \
698 // RUN:   -march=rv32ixtheadmac -E -dM %s \
699 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADMAC-EXT %s
700 // RUN: %clang --target=riscv64-unknown-linux-gnu \
701 // RUN:   -march=rv64ixtheadmac -E -dM %s \
702 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADMAC-EXT %s
703 // CHECK-XTHEADMAC-EXT: __riscv_xtheadmac 1000000{{$}}
704 
705 // RUN: %clang --target=riscv32-unknown-linux-gnu \
706 // RUN:   -march=rv32ixtheadmemidx -E -dM %s \
707 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADMEMIDX-EXT %s
708 // RUN: %clang --target=riscv64-unknown-linux-gnu \
709 // RUN:   -march=rv64ixtheadmemidx -E -dM %s \
710 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADMEMIDX-EXT %s
711 // CHECK-XTHEADMEMIDX-EXT: __riscv_xtheadmemidx 1000000{{$}}
712 
713 // RUN: %clang --target=riscv32-unknown-linux-gnu \
714 // RUN:   -march=rv32ixtheadmempair -E -dM %s \
715 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADMEMPAIR-EXT %s
716 // RUN: %clang --target=riscv64-unknown-linux-gnu \
717 // RUN:   -march=rv64ixtheadmempair -E -dM %s \
718 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADMEMPAIR-EXT %s
719 // CHECK-XTHEADMEMPAIR-EXT: __riscv_xtheadmempair 1000000{{$}}
720 
721 // RUN: %clang --target=riscv32-unknown-linux-gnu \
722 // RUN:   -march=rv32ixtheadsync -E -dM %s \
723 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADSYNC-EXT %s
724 // RUN: %clang --target=riscv64-unknown-linux-gnu \
725 // RUN:   -march=rv64ixtheadsync -E -dM %s \
726 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADSYNC-EXT %s
727 // CHECK-XTHEADSYNC-EXT: __riscv_xtheadsync 1000000{{$}}
728 
729 // RUN: %clang --target=riscv32-unknown-linux-gnu \
730 // RUN:   -march=rv32ixtheadvdot -E -dM %s \
731 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADVDOT-EXT %s
732 // RUN: %clang --target=riscv64-unknown-linux-gnu \
733 // RUN:   -march=rv64ixtheadvdot -E -dM %s \
734 // RUN:   -o - | FileCheck --check-prefix=CHECK-XTHEADVDOT-EXT %s
735 // CHECK-XTHEADVDOT-EXT: __riscv_xtheadvdot 1000000{{$}}
736 
737 // RUN: %clang --target=riscv32-unknown-linux-gnu \
738 // RUN:   -march=rv32ixventanacondops -E -dM %s \
739 // RUN:   -o - | FileCheck --check-prefix=CHECK-XVENTANACONDOPS-EXT %s
740 // RUN: %clang --target=riscv64-unknown-linux-gnu \
741 // RUN:   -march=rv64ixventanacondops -E -dM %s \
742 // RUN:   -o - | FileCheck --check-prefix=CHECK-XVENTANACONDOPS-EXT %s
743 // CHECK-XVENTANACONDOPS-EXT: __riscv_xventanacondops 1000000{{$}}
744 
745 // RUN: %clang --target=riscv32-unknown-linux-gnu \
746 // RUN:   -march=rv32iza128rs -E -dM %s \
747 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZA128RS-EXT %s
748 // RUN: %clang --target=riscv64-unknown-linux-gnu \
749 // RUN:   -march=rv64iza128rs -E -dM %s \
750 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZA128RS-EXT %s
751 // CHECK-ZA128RS-EXT: __riscv_za128rs 1000000{{$}}
752 
753 // RUN: %clang --target=riscv32-unknown-linux-gnu \
754 // RUN:   -march=rv32iza64rs -E -dM %s \
755 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZA64RS-EXT %s
756 // RUN: %clang --target=riscv64-unknown-linux-gnu \
757 // RUN:   -march=rv64iza64rs -E -dM %s \
758 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZA64RS-EXT %s
759 // CHECK-ZA64RS-EXT: __riscv_za64rs 1000000{{$}}
760 
761 // RUN: %clang --target=riscv32 \
762 // RUN:   -march=rv32i_zaamo1p0 -E -dM %s \
763 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZAAMO-EXT %s
764 // RUN: %clang --target=riscv64 \
765 // RUN:   -march=rv64i_zaamo1p0 -E -dM %s \
766 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZAAMO-EXT %s
767 // CHECK-ZAAMO-EXT: __riscv_zaamo 1000000{{$}}
768 
769 // RUN: %clang --target=riscv32 \
770 // RUN:   -march=rv32ia_zabha1p0 -E -dM %s \
771 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZABHA-EXT %s
772 // RUN: %clang --target=riscv64 \
773 // RUN:   -march=rv64ia_zabha1p0 -E -dM %s \
774 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZABHA-EXT %s
775 // CHECK-ZABHA-EXT: __riscv_zabha 1000000{{$}}
776 
777 // RUN: %clang --target=riscv32 \
778 // RUN:   -march=rv32ia_zacas1p0 -E -dM %s \
779 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZACAS-EXT %s
780 // RUN: %clang --target=riscv64 \
781 // RUN:   -march=rv64ia_zacas1p0 -E -dM %s \
782 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZACAS-EXT %s
783 // CHECK-ZACAS-EXT: __riscv_zacas 1000000{{$}}
784 
785 // RUN: %clang --target=riscv32 \
786 // RUN:   -march=rv32i_zalrsc1p0 -E -dM %s \
787 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZALRSC-EXT %s
788 // RUN: %clang --target=riscv64 \
789 // RUN:   -march=rv64i_zalrsc1p0 -E -dM %s \
790 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZALRSC-EXT %s
791 // CHECK-ZALRSC-EXT: __riscv_zalrsc 1000000{{$}}
792 
793 // RUN: %clang --target=riscv32 -march=rv32izama16b -x c -E -dM %s \
794 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZAMA16B-EXT %s
795 // RUN: %clang --target=riscv64 -march=rv64izama16b  -x c -E -dM %s \
796 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZAMA16B-EXT %s
797 // CHECK-ZAMA16B-EXT: __riscv_zama16b  1000000{{$}}
798 
799 // RUN: %clang --target=riscv32-unknown-linux-gnu \
800 // RUN:   -march=rv32izawrs -E -dM %s \
801 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZAWRS-EXT %s
802 // RUN: %clang --target=riscv64-unknown-linux-gnu \
803 // RUN:   -march=rv64izawrs -E -dM %s \
804 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZAWRS-EXT %s
805 // CHECK-ZAWRS-EXT: __riscv_zawrs 1000000{{$}}
806 
807 // RUN: %clang --target=riscv32-unknown-linux-gnu \
808 // RUN:   -march=rv32izba1p0 -E -dM %s \
809 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBA-EXT %s
810 // RUN: %clang --target=riscv32-unknown-linux-gnu \
811 // RUN:   -march=rv32izba -E -dM %s \
812 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBA-EXT %s
813 // RUN: %clang --target=riscv64-unknown-linux-gnu \
814 // RUN:   -march=rv64izba1p0 -E -dM %s \
815 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBA-EXT %s
816 // RUN: %clang --target=riscv64-unknown-linux-gnu \
817 // RUN:   -march=rv64izba -E -dM %s \
818 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBA-EXT %s
819 // CHECK-ZBA-EXT: __riscv_zba 1000000{{$}}
820 
821 // RUN: %clang --target=riscv32-unknown-linux-gnu \
822 // RUN:   -march=rv32izbb1p0 -E -dM %s \
823 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBB-EXT %s
824 // RUN: %clang --target=riscv32-unknown-linux-gnu \
825 // RUN:   -march=rv32izbb -E -dM %s \
826 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBB-EXT %s
827 // RUN: %clang --target=riscv64-unknown-linux-gnu \
828 // RUN:   -march=rv64izbb1p0 -E -dM %s \
829 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBB-EXT %s
830 // RUN: %clang --target=riscv64-unknown-linux-gnu \
831 // RUN:   -march=rv64izbb -E -dM %s \
832 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBB-EXT %s
833 // CHECK-ZBB-EXT: __riscv_zbb 1000000{{$}}
834 
835 // RUN: %clang --target=riscv32-unknown-linux-gnu \
836 // RUN:   -march=rv32izbc1p0 -E -dM %s \
837 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBC-EXT %s
838 // RUN: %clang --target=riscv32-unknown-linux-gnu \
839 // RUN:   -march=rv32izbc -E -dM %s \
840 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBC-EXT %s
841 // RUN: %clang --target=riscv64-unknown-linux-gnu \
842 // RUN:   -march=rv64izbc1p0 -E -dM %s \
843 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBC-EXT %s
844 // RUN: %clang --target=riscv64-unknown-linux-gnu \
845 // RUN:   -march=rv64izbc -E -dM %s \
846 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBC-EXT %s
847 // CHECK-ZBC-EXT: __riscv_zbc 1000000{{$}}
848 
849 // RUN: %clang --target=riscv32-unknown-linux-gnu \
850 // RUN:   -march=rv32izbkb1p0 -E -dM %s \
851 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBKB-EXT %s
852 // RUN: %clang --target=riscv64-unknown-linux-gnu \
853 // RUN:   -march=rv64izbkb1p0 -E -dM %s \
854 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBKB-EXT %s
855 // CHECK-ZBKB-EXT: __riscv_zbkb
856 
857 // RUN: %clang --target=riscv32-unknown-linux-gnu \
858 // RUN:   -march=rv32izbkc1p0 -E -dM %s \
859 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBKC-EXT %s
860 // RUN: %clang --target=riscv64-unknown-linux-gnu \
861 // RUN:   -march=rv64izbkc1p0 -E -dM %s \
862 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBKC-EXT %s
863 // CHECK-ZBKC-EXT: __riscv_zbkc
864 
865 // RUN: %clang --target=riscv32-unknown-linux-gnu \
866 // RUN:   -march=rv32izbkx1p0 -E -dM %s \
867 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBKX-EXT %s
868 // RUN: %clang --target=riscv64-unknown-linux-gnu \
869 // RUN:   -march=rv64izbkx1p0 -E -dM %s \
870 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBKX-EXT %s
871 // CHECK-ZBKX-EXT: __riscv_zbkx
872 
873 // RUN: %clang --target=riscv32-unknown-linux-gnu \
874 // RUN:   -march=rv32izbs1p0 -E -dM %s \
875 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBS-EXT %s
876 // RUN: %clang --target=riscv32-unknown-linux-gnu \
877 // RUN:   -march=rv32izbs -E -dM %s \
878 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBS-EXT %s
879 // RUN: %clang --target=riscv64-unknown-linux-gnu \
880 // RUN:   -march=rv64izbs1p0 -E -dM %s \
881 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBS-EXT %s
882 // RUN: %clang --target=riscv64-unknown-linux-gnu \
883 // RUN:   -march=rv64izbs -E -dM %s \
884 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZBS-EXT %s
885 // CHECK-ZBS-EXT: __riscv_zbs 1000000{{$}}
886 
887 // RUN: %clang --target=riscv32-unknown-linux-gnu \
888 // RUN:   -march=rv32izca1p0 -E -dM %s \
889 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZCA-EXT %s
890 // RUN: %clang --target=riscv64-unknown-linux-gnu \
891 // RUN:   -march=rv64izca1p0 -E -dM %s \
892 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZCA-EXT %s
893 // CHECK-ZCA-EXT: __riscv_zca 1000000{{$}}
894 
895 // RUN: %clang --target=riscv32-unknown-linux-gnu \
896 // RUN:   -march=rv32izcb1p0 -E -dM %s \
897 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZCB-EXT %s
898 // RUN: %clang --target=riscv64-unknown-linux-gnu \
899 // RUN:   -march=rv64izcb1p0 -E -dM %s \
900 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZCB-EXT %s
901 // CHECK-ZCB-EXT: __riscv_zca 1000000{{$}}
902 // CHECK-ZCB-EXT: __riscv_zcb 1000000{{$}}
903 
904 // RUN: %clang --target=riscv32-unknown-linux-gnu \
905 // RUN:   -march=rv32izcd1p0 -E -dM %s \
906 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZCD-EXT %s
907 // RUN: %clang --target=riscv64-unknown-linux-gnu \
908 // RUN:   -march=rv64izcd1p0 -E -dM %s \
909 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZCD-EXT %s
910 // CHECK-ZCD-EXT: __riscv_zcd 1000000{{$}}
911 
912 // RUN: %clang --target=riscv32-unknown-linux-gnu \
913 // RUN:   -march=rv32izce1p0 -E -dM %s \
914 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZCE-EXT %s
915 // RUN: %clang --target=riscv64-unknown-linux-gnu \
916 // RUN:   -march=rv64izce1p0 -E -dM %s \
917 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZCE-EXT %s
918 // CHECK-ZCE-EXT: __riscv_zce 1000000{{$}}
919 
920 // RUN: %clang --target=riscv32-unknown-linux-gnu \
921 // RUN:   -march=rv32izcf1p0 -E -dM %s \
922 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZCF-EXT %s
923 // CHECK-ZCF-EXT: __riscv_zcf 1000000{{$}}
924 
925 // RUN: %clang --target=riscv32-unknown-linux-gnu \
926 // RUN:   -march=rv32i_zcmop1p0 -E -dM %s \
927 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZCMOP-EXT %s
928 // RUN: %clang --target=riscv64-unknown-linux-gnu \
929 // RUN:   -march=rv64i_zcmop1p0 -E -dM %s \
930 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZCMOP-EXT %s
931 // CHECK-ZCMOP-EXT: __riscv_zcmop  1000000{{$}}
932 
933 // RUN: %clang --target=riscv32-unknown-linux-gnu \
934 // RUN:   -march=rv32izcmp1p0 -E -dM %s \
935 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZCMP-EXT %s
936 // RUN: %clang --target=riscv64-unknown-linux-gnu \
937 // RUN:   -march=rv64izcmp1p0 -E -dM %s \
938 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZCMP-EXT %s
939 // CHECK-ZCMP-EXT: __riscv_zca 1000000{{$}}
940 // CHECK-ZCMP-EXT: __riscv_zcmp 1000000{{$}}
941 
942 // RUN: %clang --target=riscv32-unknown-linux-gnu \
943 // RUN:   -march=rv32izcmt1p0 -E -dM %s \
944 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZCMT-EXT %s
945 // RUN: %clang --target=riscv64-unknown-linux-gnu \
946 // RUN:   -march=rv64izcmt1p0 -E -dM %s \
947 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZCMT-EXT %s
948 // CHECK-ZCMT-EXT: __riscv_zca 1000000{{$}}
949 // CHECK-ZCMT-EXT: __riscv_zcmt 1000000{{$}}
950 
951 // RUN: %clang --target=riscv32-unknown-linux-gnu \
952 // RUN:   -march=rv32izdinx1p0 -E -dM %s \
953 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZDINX-EXT %s
954 // RUN: %clang --target=riscv64-unknown-linux-gnu \
955 // RUN:   -march=rv64izdinx1p0 -E -dM %s \
956 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZDINX-EXT %s
957 // CHECK-ZDINX-EXT: __riscv_zdinx 1000000{{$}}
958 // CHECK-ZDINX-EXT: __riscv_zfinx 1000000{{$}}
959 
960 // RUN: %clang --target=riscv32-unknown-linux-gnu \
961 // RUN:   -march=rv32izfh1p0 -E -dM %s \
962 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZFH-EXT %s
963 // RUN: %clang --target=riscv64-unknown-linux-gnu \
964 // RUN:   -march=rv64izfh1p0 -E -dM %s \
965 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZFH-EXT %s
966 // CHECK-ZFH-EXT: __riscv_f 2002000{{$}}
967 // CHECK-ZFH-EXT: __riscv_zfh 1000000{{$}}
968 
969 // RUN: %clang --target=riscv32-unknown-linux-gnu \
970 // RUN:   -march=rv32izfhmin1p0 -E -dM %s \
971 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZFHMIN-EXT %s
972 // RUN: %clang --target=riscv64-unknown-linux-gnu \
973 // RUN:   -march=rv64izfhmin1p0 -E -dM %s \
974 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZFHMIN-EXT %s
975 // CHECK-ZFHMIN-EXT: __riscv_f 2002000{{$}}
976 // CHECK-ZFHMIN-EXT: __riscv_zfhmin 1000000{{$}}
977 
978 // RUN: %clang --target=riscv32-unknown-linux-gnu \
979 // RUN:   -march=rv32izfinx1p0 -E -dM %s \
980 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZFINX-EXT %s
981 // RUN: %clang --target=riscv64-unknown-linux-gnu \
982 // RUN:   -march=rv64izfinx1p0 -E -dM %s \
983 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZFINX-EXT %s
984 // CHECK-ZFINX-EXT: __riscv_zfinx 1000000{{$}}
985 
986 // RUN: %clang --target=riscv32-unknown-linux-gnu \
987 // RUN:   -march=rv32izhinx1p0 -E -dM %s \
988 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZHINX-EXT %s
989 // RUN: %clang --target=riscv64-unknown-linux-gnu \
990 // RUN:   -march=rv64izhinx1p0 -E -dM %s \
991 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZHINX-EXT %s
992 // CHECK-ZHINX-EXT: __riscv_zhinx 1000000{{$}}
993 
994 // RUN: %clang --target=riscv32-unknown-linux-gnu \
995 // RUN:   -march=rv32izhinxmin1p0 -E -dM %s \
996 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZHINXMIN-EXT %s
997 // RUN: %clang --target=riscv64-unknown-linux-gnu -march=rv64izhinxmin1p0 -E -dM %s \
998 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZHINXMIN-EXT %s
999 // CHECK-ZHINXMIN-EXT: __riscv_zhinxmin 1000000{{$}}
1000 
1001 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1002 // RUN:   -march=rv32izic64b -E -dM %s \
1003 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZIC64B-EXT %s
1004 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1005 // RUN:   -march=rv64izic64b -E -dM %s \
1006 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZIC64B-EXT %s
1007 // CHECK-ZIC64B-EXT: __riscv_zic64b 1000000{{$}}
1008 
1009 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1010 // RUN:   -march=rv32izicbom -E -dM %s \
1011 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICBOM-EXT %s
1012 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1013 // RUN:   -march=rv64izicbom -E -dM %s \
1014 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICBOM-EXT %s
1015 // CHECK-ZICBOM-EXT: __riscv_zicbom 1000000{{$}}
1016 
1017 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1018 // RUN:   -march=rv32izicbop -E -dM %s \
1019 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICBOP-EXT %s
1020 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1021 // RUN:   -march=rv64izicbop -E -dM %s \
1022 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICBOP-EXT %s
1023 // CHECK-ZICBOP-EXT: __riscv_zicbop 1000000{{$}}
1024 
1025 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1026 // RUN:   -march=rv32izicboz -E -dM %s \
1027 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICBOZ-EXT %s
1028 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1029 // RUN:   -march=rv64izicboz -E -dM %s \
1030 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICBOZ-EXT %s
1031 // CHECK-ZICBOZ-EXT: __riscv_zicboz 1000000{{$}}
1032 
1033 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1034 // RUN:   -march=rv32iziccamoa -E -dM %s \
1035 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICCAMOA-EXT %s
1036 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1037 // RUN:   -march=rv64iziccamoa -E -dM %s \
1038 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICCAMOA-EXT %s
1039 // CHECK-ZICCAMOA-EXT: __riscv_ziccamoa 1000000{{$}}
1040 
1041 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1042 // RUN:   -march=rv32iziccif -E -dM %s \
1043 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICCIF-EXT %s
1044 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1045 // RUN:   -march=rv64iziccif -E -dM %s \
1046 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICCIF-EXT %s
1047 // CHECK-ZICCIF-EXT: __riscv_ziccif 1000000{{$}}
1048 
1049 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1050 // RUN:   -march=rv32izicclsm -E -dM %s \
1051 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICCLSM-EXT %s
1052 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1053 // RUN:   -march=rv64izicclsm -E -dM %s \
1054 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICCLSM-EXT %s
1055 // CHECK-ZICCLSM-EXT: __riscv_zicclsm 1000000{{$}}
1056 
1057 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1058 // RUN:   -march=rv32iziccrse -E -dM %s \
1059 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICCRSE-EXT %s
1060 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1061 // RUN:   -march=rv64iziccrse -E -dM %s \
1062 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICCRSE-EXT %s
1063 // CHECK-ZICCRSE-EXT: __riscv_ziccrse 1000000{{$}}
1064 
1065 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1066 // RUN:   -march=rv32izicntr -E -dM %s \
1067 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICNTR-EXT %s
1068 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1069 // RUN:   -march=rv64izicntr -E -dM %s \
1070 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICNTR-EXT %s
1071 // CHECK-ZICNTR-EXT: __riscv_zicntr 2000000{{$}}
1072 
1073 // RUN: %clang --target=riscv32 \
1074 // RUN:   -march=rv32i_zicond -E -dM %s \
1075 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICOND-EXT %s
1076 // RUN: %clang --target=riscv64 \
1077 // RUN:   -march=rv64i_zicond -E -dM %s \
1078 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICOND-EXT %s
1079 // CHECK-ZICOND-EXT: __riscv_zicond  1000000{{$}}
1080 
1081 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1082 // RUN:   -march=rv32izicsr2p0 -E -dM %s \
1083 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICSR-EXT %s
1084 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1085 // RUN:   -march=rv64izicsr2p0 -E -dM %s \
1086 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICSR-EXT %s
1087 // CHECK-ZICSR-EXT: __riscv_zicsr 2000000{{$}}
1088 
1089 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1090 // RUN:   -march=rv32izifencei2p0 -E -dM %s \
1091 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZIFENCEI-EXT %s
1092 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1093 // RUN:   -march=rv64izifencei2p0 -E -dM %s \
1094 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZIFENCEI-EXT %s
1095 // CHECK-ZIFENCEI-EXT: __riscv_zifencei 2000000{{$}}
1096 
1097 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1098 // RUN:   -march=rv32izihintntl1p0 -E -dM %s \
1099 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZIHINTNTL-EXT %s
1100 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1101 // RUN:   -march=rv64izihintntl1p0 -E -dM %s \
1102 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZIHINTNTL-EXT %s
1103 // CHECK-ZIHINTNTL-EXT: __riscv_zihintntl 1000000{{$}}
1104 
1105 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1106 // RUN:   -march=rv32izihintpause2p0 -E -dM %s \
1107 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZIHINTPAUSE-EXT %s
1108 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1109 // RUN:   -march=rv64izihintpause2p0 -E -dM %s \
1110 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZIHINTPAUSE-EXT %s
1111 // CHECK-ZIHINTPAUSE-EXT: __riscv_zihintpause 2000000{{$}}
1112 
1113 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1114 // RUN:   -march=rv32izihpm -E -dM %s \
1115 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZIHPM-EXT %s
1116 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1117 // RUN:   -march=rv64izihpm -E -dM %s \
1118 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZIHPM-EXT %s
1119 // CHECK-ZIHPM-EXT: __riscv_zihpm 2000000{{$}}
1120 
1121 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1122 // RUN:   -march=rv32i_zimop1p0 -E -dM %s \
1123 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZIMOP-EXT %s
1124 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1125 // RUN:   -march=rv64i_zimop1p0 -E -dM %s \
1126 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZIMOP-EXT %s
1127 // CHECK-ZIMOP-EXT: __riscv_zimop  1000000{{$}}
1128 
1129 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1130 // RUN:   -march=rv32izk1p0 -E -dM %s \
1131 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZK-EXT %s
1132 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1133 // RUN:   -march=rv64izk1p0 -E -dM %s \
1134 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZK-EXT %s
1135 // CHECK-ZK-EXT: __riscv_zk
1136 
1137 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1138 // RUN:   -march=rv32i_zkn_zkt_zkr -E -dM %s \
1139 // RUN:   -o - | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZK %s
1140 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1141 // RUN:   -march=rv64i_zkn_zkt_zkr -E -dM %s \
1142 // RUN:   -o - | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZK %s
1143 // CHECK-COMBINE-INTO-ZK: __riscv_zk 1
1144 
1145 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1146 // RUN:   -march=rv32izkn1p0 -E -dM %s \
1147 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZKN-EXT %s
1148 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1149 // RUN:   -march=rv64izkn1p0 -E -dM %s \
1150 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZKN-EXT %s
1151 // CHECK-ZKN-EXT: __riscv_zkn
1152 
1153 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1154 // RUN:   -march=rv32i_zbkb_zbkc_zbkx_zkne_zknd_zknh -E -dM %s \
1155 // RUN:   -o - | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZKN %s
1156 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1157 // RUN:   -march=rv64i_zbkb_zbkc_zbkx_zkne_zknd_zknh -E -dM %s \
1158 // RUN:   -o - | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZKN %s
1159 // CHECK-COMBINE-INTO-ZKN: __riscv_zkn 1
1160 
1161 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1162 // RUN:   -march=rv32izknd1p0 -E -dM %s \
1163 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZKND-EXT %s
1164 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1165 // RUN:   -march=rv64izknd1p0 -E -dM %s \
1166 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZKND-EXT %s
1167 // CHECK-ZKND-EXT: __riscv_zknd
1168 
1169 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1170 // RUN:   -march=rv32izkne1p0 -E -dM %s \
1171 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZKNE-EXT %s
1172 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1173 // RUN:   -march=rv64izkne1p0 -E -dM %s \
1174 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZKNE-EXT %s
1175 // CHECK-ZKNE-EXT: __riscv_zkne
1176 
1177 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1178 // RUN:   -march=rv32izknh1p0 -E -dM %s \
1179 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZKNH-EXT %s
1180 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1181 // RUN:   -march=rv64izknh1p0 -E -dM %s \
1182 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZKNH-EXT %s
1183 // CHECK-ZKNH-EXT: __riscv_zknh
1184 
1185 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1186 // RUN:   -march=rv32izkr1p0 -E -dM %s \
1187 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZKR-EXT %s
1188 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1189 // RUN:   -march=rv64izkr1p0 -E -dM %s \
1190 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZKR-EXT %s
1191 // CHECK-ZKR-EXT: __riscv_zkr
1192 
1193 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1194 // RUN:   -march=rv32i_zbkb_zbkc_zbkx_zksed_zksh -E -dM %s \
1195 // RUN:   -o - | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZKS %s
1196 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1197 // RUN:   -march=rv64i_zbkb_zbkc_zbkx_zksed_zksh -E -dM %s \
1198 // RUN:   -o - | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZKS %s
1199 // CHECK-COMBINE-INTO-ZKS: __riscv_zks 1
1200 
1201 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1202 // RUN:   -march=rv32izks1p0 -E -dM %s \
1203 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZKS-EXT %s
1204 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1205 // RUN:   -march=rv64izks1p0 -E -dM %s \
1206 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZKS-EXT %s
1207 // CHECK-ZKS-EXT: __riscv_zks
1208 
1209 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1210 // RUN:   -march=rv32izksed1p0 -E -dM %s \
1211 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZKSED-EXT %s
1212 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1213 // RUN:   -march=rv64izksed1p0 -E -dM %s \
1214 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZKSED-EXT %s
1215 // CHECK-ZKSED-EXT: __riscv_zksed
1216 
1217 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1218 // RUN:   -march=rv32izksh1p0 -E -dM %s \
1219 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZKSH-EXT %s
1220 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1221 // RUN:   -march=rv64izksh1p0 -E -dM %s \
1222 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZKSH-EXT %s
1223 // CHECK-ZKSH-EXT: __riscv_zksh
1224 
1225 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1226 // RUN:   -march=rv32izkt1p0 -E -dM %s \
1227 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZKT-EXT %s
1228 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1229 // RUN:   -march=rv64izkt1p0 -E -dM %s \
1230 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZKT-EXT %s
1231 // CHECK-ZKT-EXT: __riscv_zkt
1232 
1233 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1234 // RUN:   -march=rv32izmmul1p0 -E -dM %s \
1235 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZMMUL-EXT %s
1236 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1237 // RUN:   -march=rv64izmmul1p0 -E -dM %s \
1238 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZMMUL-EXT %s
1239 // CHECK-ZMMUL-EXT: __riscv_zmmul
1240 
1241 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1242 // RUN:   -march=rv32ifzve32f1p0 -E -dM %s \
1243 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVE32F-EXT %s
1244 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1245 // RUN:   -march=rv64ifzve32f1p0 -E -dM %s \
1246 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVE32F-EXT %s
1247 // CHECK-ZVE32F-EXT: __riscv_v_elen 32
1248 // CHECK-ZVE32F-EXT: __riscv_v_elen_fp 32
1249 // CHECK-ZVE32F-EXT: __riscv_v_intrinsic 1000000{{$}}
1250 // CHECK-ZVE32F-EXT: __riscv_v_min_vlen 32
1251 // CHECK-ZVE32F-EXT: __riscv_vector 1
1252 // CHECK-ZVE32F-EXT: __riscv_zve32f 1000000{{$}}
1253 // CHECK-ZVE32F-EXT: __riscv_zve32x 1000000{{$}}
1254 
1255 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1256 // RUN:   -march=rv32izve32x1p0 -E -dM %s \
1257 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVE32X-EXT %s
1258 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1259 // RUN:   -march=rv64izve32x1p0 -E -dM %s \
1260 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVE32X-EXT %s
1261 // CHECK-ZVE32X-EXT: __riscv_v_elen 32
1262 // CHECK-ZVE32X-EXT: __riscv_v_elen_fp 0
1263 // CHECK-ZVE32X-EXT: __riscv_v_intrinsic 1000000{{$}}
1264 // CHECK-ZVE32X-EXT: __riscv_v_min_vlen 32
1265 // CHECK-ZVE32X-EXT: __riscv_vector 1
1266 // CHECK-ZVE32X-EXT: __riscv_zve32x 1000000{{$}}
1267 
1268 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1269 // RUN:   -march=rv32ifdzve64d1p0 -E -dM %s \
1270 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVE64D-EXT %s
1271 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1272 // RUN:   -march=rv64ifdzve64d1p0 -E -dM %s \
1273 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVE64D-EXT %s
1274 // CHECK-ZVE64D-EXT: __riscv_v_elen 64
1275 // CHECK-ZVE64D-EXT: __riscv_v_elen_fp 64
1276 // CHECK-ZVE64D-EXT: __riscv_v_intrinsic 1000000{{$}}
1277 // CHECK-ZVE64D-EXT: __riscv_v_min_vlen 64
1278 // CHECK-ZVE64D-EXT: __riscv_vector 1
1279 // CHECK-ZVE64D-EXT: __riscv_zve32f 1000000{{$}}
1280 // CHECK-ZVE64D-EXT: __riscv_zve32x 1000000{{$}}
1281 // CHECK-ZVE64D-EXT: __riscv_zve64d 1000000{{$}}
1282 // CHECK-ZVE64D-EXT: __riscv_zve64f 1000000{{$}}
1283 // CHECK-ZVE64D-EXT: __riscv_zve64x 1000000{{$}}
1284 
1285 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1286 // RUN:   -march=rv32ifzve64f1p0 -E -dM %s \
1287 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVE64F-EXT %s
1288 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1289 // RUN:   -march=rv64ifzve64f1p0 -E -dM %s \
1290 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVE64F-EXT %s
1291 // CHECK-ZVE64F-EXT: __riscv_v_elen 64
1292 // CHECK-ZVE64F-EXT: __riscv_v_elen_fp 32
1293 // CHECK-ZVE64F-EXT: __riscv_v_intrinsic 1000000{{$}}
1294 // CHECK-ZVE64F-EXT: __riscv_v_min_vlen 64
1295 // CHECK-ZVE64F-EXT: __riscv_vector 1
1296 // CHECK-ZVE64F-EXT: __riscv_zve32f 1000000{{$}}
1297 // CHECK-ZVE64F-EXT: __riscv_zve32x 1000000{{$}}
1298 // CHECK-ZVE64F-EXT: __riscv_zve64f 1000000{{$}}
1299 // CHECK-ZVE64F-EXT: __riscv_zve64x 1000000{{$}}
1300 
1301 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1302 // RUN:   -march=rv32izve64x1p0 -E -dM %s \
1303 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVE64X-EXT %s
1304 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1305 // RUN:   -march=rv64izve64x1p0 -E -dM %s \
1306 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVE64X-EXT %s
1307 // CHECK-ZVE64X-EXT: __riscv_v_elen 64
1308 // CHECK-ZVE64X-EXT: __riscv_v_elen_fp 0
1309 // CHECK-ZVE64X-EXT: __riscv_v_intrinsic 1000000{{$}}
1310 // CHECK-ZVE64X-EXT: __riscv_v_min_vlen 64
1311 // CHECK-ZVE64X-EXT: __riscv_vector 1
1312 // CHECK-ZVE64X-EXT: __riscv_zve32x 1000000{{$}}
1313 // CHECK-ZVE64X-EXT: __riscv_zve64x 1000000{{$}}
1314 
1315 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1316 // RUN:   -march=rv32izvfh1p0 -E -dM %s \
1317 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVFH-EXT %s
1318 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1319 // RUN:   -march=rv64izvfh1p0 -E -dM %s \
1320 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVFH-EXT %s
1321 // CHECK-ZVFH-EXT: __riscv_zvfh
1322 
1323 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1324 // RUN:   -march=rv32izve32x1p0_zvl32b1p0 -E -dM %s \
1325 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL32b %s
1326 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1327 // RUN:   -march=rv64izve32x1p0_zvl32b1p0 -E -dM %s \
1328 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL32b %s
1329 // CHECK-ZVL32b: __riscv_v_min_vlen 32
1330 
1331 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1332 // RUN:   -march=rv32izve32x1p0_zvl64b1p0 -E -dM %s \
1333 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL64b %s
1334 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1335 // RUN:   -march=rv64izve32x1p0_zvl64b1p0 -E -dM %s \
1336 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL64b %s
1337 // CHECK-ZVL64b: __riscv_v_min_vlen 64
1338 
1339 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1340 // RUN:   -march=rv32iv1p0_zvl128b1p0 -E -dM %s \
1341 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL128b %s
1342 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1343 // RUN:   -march=rv64iv1p0_zvl128b1p0 -E -dM %s \
1344 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL128b %s
1345 // CHECK-ZVL128b: __riscv_v_min_vlen 128
1346 
1347 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1348 // RUN:   -march=rv32iv1p0_zvl256b1p0 -E -dM %s \
1349 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL256b %s
1350 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1351 // RUN:   -march=rv64iv1p0_zvl256b1p0 -E -dM %s \
1352 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL256b %s
1353 // CHECK-ZVL256b: __riscv_v_min_vlen 256
1354 
1355 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1356 // RUN:   -march=rv32iv1p0_zvl512b1p0 -E -dM %s \
1357 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL512b %s
1358 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1359 // RUN:   -march=rv64iv1p0_zvl512b1p0 -E -dM %s \
1360 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL512b %s
1361 // CHECK-ZVL512b: __riscv_v_min_vlen 512
1362 
1363 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1364 // RUN:   -march=rv32iv1p0_zvl1024b1p0 -E -dM %s \
1365 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL1024b %s
1366 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1367 // RUN:   -march=rv64iv1p0_zvl1024b1p0 -E -dM %s \
1368 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL1024b %s
1369 // CHECK-ZVL1024b: __riscv_v_min_vlen 1024
1370 
1371 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1372 // RUN:   -march=rv32iv1p0_zvl2048b1p0 -E -dM %s \
1373 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL2048b %s
1374 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1375 // RUN:   -march=rv64iv1p0_zvl2048b1p0 -E -dM %s \
1376 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL2048b %s
1377 // CHECK-ZVL2048b: __riscv_v_min_vlen 2048
1378 
1379 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1380 // RUN:   -march=rv32iv1p0_zvl4096b1p0 -E -dM %s \
1381 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL4096b %s
1382 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1383 // RUN:   -march=rv64iv1p0_zvl4096b1p0 -E -dM %s \
1384 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL4096b %s
1385 // CHECK-ZVL4096b: __riscv_v_min_vlen 4096
1386 
1387 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1388 // RUN:   -march=rv32iv1p0_zvl8192b1p0 -E -dM %s \
1389 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL8192b %s
1390 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1391 // RUN:   -march=rv64iv1p0_zvl8192b1p0 -E -dM %s \
1392 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL8192b %s
1393 // CHECK-ZVL8192b: __riscv_v_min_vlen 8192
1394 
1395 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1396 // RUN:   -march=rv32iv1p0_zvl16384b1p0 -E -dM %s \
1397 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL16384b %s
1398 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1399 // RUN:   -march=rv64iv1p0_zvl16384b1p0 -E -dM %s \
1400 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL16384b %s
1401 // CHECK-ZVL16384b: __riscv_v_min_vlen 16384
1402 
1403 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1404 // RUN:   -march=rv32iv1p0_zvl32768b1p0 -E -dM %s \
1405 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL32768b %s
1406 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1407 // RUN:   -march=rv64iv1p0_zvl32768b1p0 -E -dM %s \
1408 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL32768b %s
1409 // CHECK-ZVL32768b: __riscv_v_min_vlen 32768
1410 
1411 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1412 // RUN:   -march=rv32iv1p0_zvl65536b1p0 -E -dM %s \
1413 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL65536b %s
1414 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1415 // RUN:   -march=rv64iv1p0_zvl65536b1p0 -E -dM %s \
1416 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVL65536b %s
1417 // CHECK-ZVL65536b: __riscv_v_min_vlen 65536
1418 
1419 // RUN: %clang --target=riscv32 \
1420 // RUN:   -march=rv32ismaia1p0 -E -dM %s \
1421 // RUN:   -o - | FileCheck --check-prefix=CHECK-SMAIA-EXT %s
1422 // RUN: %clang --target=riscv64 \
1423 // RUN:   -march=rv64ismaia1p0 -E -dM %s \
1424 // RUN:   -o - | FileCheck --check-prefix=CHECK-SMAIA-EXT %s
1425 // CHECK-SMAIA-EXT: __riscv_smaia  1000000{{$}}
1426 
1427 // RUN: %clang --target=riscv32 \
1428 // RUN:   -march=rv32issaia1p0 -E -dM %s \
1429 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSAIA-EXT %s
1430 // RUN: %clang --target=riscv64 \
1431 // RUN:   -march=rv64issaia1p0 -E -dM %s \
1432 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSAIA-EXT %s
1433 // CHECK-SSAIA-EXT: __riscv_ssaia  1000000{{$}}
1434 
1435 // RUN: %clang --target=riscv32 \
1436 // RUN:   -march=rv32ismcsrind1p0 -E -dM %s \
1437 // RUN:   -o - | FileCheck --check-prefix=CHECK-SMCSRIND-EXT %s
1438 // RUN: %clang --target=riscv64 \
1439 // RUN:   -march=rv64ismcsrind1p0 -E -dM %s \
1440 // RUN:   -o - | FileCheck --check-prefix=CHECK-SMCSRIND-EXT %s
1441 // CHECK-SMCSRIND-EXT: __riscv_smcsrind  1000000{{$}}
1442 
1443 // RUN: %clang --target=riscv32 \
1444 // RUN:   -march=rv32isscsrind1p0 -E -dM %s \
1445 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSCSRIND-EXT %s
1446 // RUN: %clang --target=riscv64 \
1447 // RUN:   -march=rv64isscsrind1p0 -E -dM %s \
1448 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSCSRIND-EXT %s
1449 // CHECK-SSCSRIND-EXT: __riscv_sscsrind  1000000{{$}}
1450 
1451 // RUN: %clang --target=riscv32 \
1452 // RUN:   -march=rv32ismdbltrp1p0 -E -dM %s \
1453 // RUN:   -o - | FileCheck --check-prefix=CHECK-SMDBLTRP-EXT %s
1454 // RUN: %clang --target=riscv64 \
1455 // RUN:   -march=rv64ismdbltrp1p0 -E -dM %s \
1456 // RUN:   -o - | FileCheck --check-prefix=CHECK-SMDBLTRP-EXT %s
1457 // CHECK-SMDBLTRP-EXT: __riscv_smdbltrp  1000000{{$}}
1458 
1459 // RUN: %clang --target=riscv32 \
1460 // RUN:   -march=rv32issdbltrp1p0 -E -dM %s \
1461 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSDBLTRP-EXT %s
1462 // RUN: %clang --target=riscv64 \
1463 // RUN:   -march=rv64issdbltrp1p0 -E -dM %s \
1464 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSDBLTRP-EXT %s
1465 // CHECK-SSDBLTRP-EXT: __riscv_ssdbltrp  1000000{{$}}
1466 
1467 // RUN: %clang --target=riscv32 \
1468 // RUN:   -march=rv32i_ssqosid1p0 -E -dM %s \
1469 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSQOSID-EXT %s
1470 // RUN: %clang --target=riscv64 \
1471 // RUN:   -march=rv64i_ssqosid1p0 -E -dM %s \
1472 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSQOSID-EXT %s
1473 // CHECK-SSQOSID-EXT: __riscv_ssqosid 1000000{{$}}
1474 
1475 // RUN: %clang --target=riscv32 \
1476 // RUN:   -march=rv32ismcdeleg1p0 -E -dM %s \
1477 // RUN:   -o - | FileCheck --check-prefix=CHECK-SMCDELEG-EXT %s
1478 // RUN: %clang --target=riscv64 \
1479 // RUN:   -march=rv64ismcdeleg1p0 -E -dM %s \
1480 // RUN:   -o - | FileCheck --check-prefix=CHECK-SMCDELEG-EXT %s
1481 // CHECK-SMCDELEG-EXT: __riscv_smcdeleg  1000000{{$}}
1482 
1483 // RUN: %clang --target=riscv32 \
1484 // RUN:   -march=rv32ismepmp1p0 -E -dM %s \
1485 // RUN:   -o - | FileCheck --check-prefix=CHECK-SMEPMP-EXT %s
1486 // RUN: %clang --target=riscv64 \
1487 // RUN:   -march=rv64ismepmp1p0 -E -dM %s \
1488 // RUN:   -o - | FileCheck --check-prefix=CHECK-SMEPMP-EXT %s
1489 // CHECK-SMEPMP-EXT: __riscv_smepmp  1000000{{$}}
1490 
1491 // RUN: %clang --target=riscv32 \
1492 // RUN:   -march=rv32ismrnmi1p0 -E -dM %s \
1493 // RUN:   -o - | FileCheck --check-prefix=CHECK-SMRNMI-EXT %s
1494 // RUN: %clang --target=riscv64 \
1495 // RUN:   -march=rv64ismrnmi1p0 -E -dM %s \
1496 // RUN:   -o - | FileCheck --check-prefix=CHECK-SMRNMI-EXT %s
1497 // CHECK-SMRNMI-EXT: __riscv_smrnmi  1000000{{$}}
1498 
1499 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1500 // RUN:   -march=rv32izfa -E -dM %s \
1501 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZFA-EXT %s
1502 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1503 // RUN:   -march=rv64izfa -E -dM %s \
1504 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZFA-EXT %s
1505 // CHECK-ZFA-EXT: __riscv_zfa 1000000{{$}}
1506 
1507 // RUN: %clang --target=riscv32 \
1508 // RUN:   -march=rv32i_zve64x_zvbb1p0 -E -dM %s \
1509 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVBB-EXT %s
1510 // RUN: %clang --target=riscv64 \
1511 // RUN:   -march=rv64i_zve64x_zvbb1p0 -E -dM %s \
1512 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVBB-EXT %s
1513 // CHECK-ZVBB-EXT: __riscv_zvbb  1000000{{$}}
1514 
1515 // RUN: %clang --target=riscv32 \
1516 // RUN:   -march=rv32i_zve64x_zvbc1p0 -E -dM %s \
1517 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVBC-EXT %s
1518 // RUN: %clang --target=riscv64 \
1519 // RUN:   -march=rv64i_zve64x_zvbc1p0 -E -dM %s \
1520 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVBC-EXT %s
1521 // CHECK-ZVBC-EXT: __riscv_zvbc  1000000{{$}}
1522 
1523 // RUN: %clang --target=riscv32 \
1524 // RUN:   -march=rv32i_zve64x_zvkb1p0 -E -dM %s \
1525 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKB-EXT %s
1526 // RUN: %clang --target=riscv64 \
1527 // RUN:   -march=rv64i_zve64x_zvkb1p0 -E -dM %s \
1528 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKB-EXT %s
1529 // CHECK-ZVKB-EXT: __riscv_zvkb  1000000{{$}}
1530 
1531 // RUN: %clang --target=riscv32 \
1532 // RUN:   -march=rv32i_zve32x_zvkg1p0 -E -dM %s \
1533 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKG-EXT %s
1534 // RUN: %clang --target=riscv64 \
1535 // RUN:   -march=rv64i_zve32x_zvkg1p0 -E -dM %s \
1536 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKG-EXT %s
1537 // CHECK-ZVKG-EXT: __riscv_zvkg  1000000{{$}}
1538 
1539 // RUN: %clang --target=riscv32 \
1540 // RUN:   -march=rv32i_zve64x_zvkn1p0 -E -dM %s \
1541 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKN-EXT %s
1542 // RUN: %clang --target=riscv64 \
1543 // RUN:   -march=rv64i_zve64x_zvkn1p0 -E -dM %s \
1544 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKN-EXT %s
1545 // CHECK-ZVKN-EXT: __riscv_zvkn 1000000{{$}}
1546 
1547 // RUN: %clang --target=riscv32 \
1548 // RUN:   -march=rv32iv_zvkb1p0_zvkned1p0_zvknhb1p0_zvkt1p0 -E -dM %s \
1549 // RUN:   -o - | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZVKN %s
1550 // RUN: %clang --target=riscv64 \
1551 // RUN:   -march=rv64iv_zvkb1p0_zvkned1p0_zvknhb1p0_zvkt1p0 -E -dM %s \
1552 // RUN:   -o - | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZVKN %s
1553 // CHECK-COMBINE-INTO-ZVKN: __riscv_zvkn 1000000{{$}}
1554 
1555 // RUN: %clang --target=riscv32 \
1556 // RUN:   -march=rv32i_zve64x_zvknc1p0 -E -dM %s \
1557 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKNC-EXT %s
1558 // RUN: %clang --target=riscv64 \
1559 // RUN:   -march=rv64i_zve64x_zvknc1p0 -E -dM %s \
1560 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKNC-EXT %s
1561 // CHECK-ZVKNC-EXT: __riscv_zvknc 1000000{{$}}
1562 
1563 // RUN: %clang --target=riscv32 \
1564 // RUN:   -march=rv32iv_zvkb1p0_zvbc1p0_zvkned1p0_zvknhb1p0_zvkt1p0 -E -dM %s \
1565 // RUN:   -o - | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZVKNC %s
1566 // RUN: %clang --target=riscv64 \
1567 // RUN:   -march=rv64iv_zvkb1p0_zvbc1p0_zvkned1p0_zvknhb1p0_zvkt1p0 -E -dM %s \
1568 // RUN:   -o - | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZVKNC %s
1569 // CHECK-COMBINE-INTO-ZVKNC: __riscv_zvkn 1000000{{$}}
1570 // CHECK-COMBINE-INTO-ZVKNC: __riscv_zvknc 1000000{{$}}
1571 
1572 // RUN: %clang --target=riscv32 \
1573 // RUN:   -march=rv32i_zve32x_zvkned1p0 -E -dM %s \
1574 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKNED-EXT %s
1575 // RUN: %clang --target=riscv64 \
1576 // RUN:   -march=rv64i_zve32x_zvkned1p0 -E -dM %s \
1577 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKNED-EXT %s
1578 // CHECK-ZVKNED-EXT: __riscv_zvkned 1000000{{$}}
1579 
1580 // RUN: %clang --target=riscv32 \
1581 // RUN:   -march=rv32i_zve64x_zvkng1p0 -E -dM %s \
1582 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKNG-EXT %s
1583 // RUN: %clang --target=riscv64 \
1584 // RUN:   -march=rv64i_zve64x_zvkng1p0 -E -dM %s \
1585 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKNG-EXT %s
1586 // CHECK-ZVKNG-EXT: __riscv_zvkng 1000000{{$}}
1587 
1588 // RUN: %clang --target=riscv32 \
1589 // RUN:   -march=rv32iv_zvkb1p0_zvkg1p0_zvkned1p0_zvknhb1p0_zvkt1p0 -E -dM %s \
1590 // RUN:   -o - | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZVKNG %s
1591 // RUN: %clang --target=riscv64 \
1592 // RUN:   -march=rv64iv_zvkb1p0_zvkg1p0_zvkned1p0_zvknhb1p0_zvkt1p0 -E -dM %s \
1593 // RUN:   -o - | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZVKNG %s
1594 // CHECK-COMBINE-INTO-ZVKNG: __riscv_zvkn 1000000{{$}}
1595 // CHECK-COMBINE-INTO-ZVKNG: __riscv_zvkng 1000000{{$}}
1596 
1597 // RUN: %clang --target=riscv32 \
1598 // RUN:   -march=rv32i_zve32x_zvknha1p0 -E -dM %s \
1599 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKNHA-EXT %s
1600 // RUN: %clang --target=riscv64 \
1601 // RUN:   -march=rv64i_zve32x_zvknha1p0 -E -dM %s \
1602 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKNHA-EXT %s
1603 // CHECK-ZVKNHA-EXT: __riscv_zvknha 1000000{{$}}
1604 
1605 // RUN: %clang --target=riscv32 \
1606 // RUN:   -march=rv32i_zve64x_zvknhb1p0 -E -dM %s \
1607 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKNHB-EXT %s
1608 // RUN: %clang --target=riscv64 \
1609 // RUN:   -march=rv64i_zve64x_zvknhb1p0 -E -dM %s \
1610 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKNHB-EXT %s
1611 // CHECK-ZVKNHB-EXT: __riscv_zvknhb  1000000{{$}}
1612 
1613 // RUN: %clang --target=riscv32 \
1614 // RUN:   -march=rv32i_zve64x_zvks1p0 -E -dM %s \
1615 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKS-EXT %s
1616 // RUN: %clang --target=riscv64 \
1617 // RUN:   -march=rv64i_zve64x_zvks1p0 -E -dM %s \
1618 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKS-EXT %s
1619 // CHECK-ZVKS-EXT: __riscv_zvks 1000000{{$}}
1620 
1621 // RUN: %clang --target=riscv32 \
1622 // RUN:   -march=rv32iv_zvkb1p0_zvksed1p0_zvksh1p0_zvkt1p0 -E -dM %s \
1623 // RUN:   -o - | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZVKS %s
1624 // RUN: %clang --target=riscv64 \
1625 // RUN:   -march=rv64iv_zvkb1p0_zvksed1p0_zvksh1p0_zvkt1p0 -E -dM %s \
1626 // RUN:   -o - | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZVKS %s
1627 // CHECK-COMBINE-INTO-ZVKS: __riscv_zvks 1000000{{$}}
1628 
1629 // RUN: %clang --target=riscv32 \
1630 // RUN:   -march=rv32i_zve64x_zvksc1p0 -E -dM %s \
1631 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKSC-EXT %s
1632 // RUN: %clang --target=riscv64 \
1633 // RUN:   -march=rv64i_zve64x_zvksc1p0 -E -dM %s \
1634 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKSC-EXT %s
1635 // CHECK-ZVKSC-EXT: __riscv_zvksc 1000000{{$}}
1636 
1637 // RUN: %clang --target=riscv32 \
1638 // RUN:   -march=rv32iv_zvkb1p0_zvbc1p0_zvksed1p0_zvksh1p0_zvkt1p0 -E -dM %s \
1639 // RUN:   -o - | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZVKSC %s
1640 // RUN: %clang --target=riscv64 \
1641 // RUN:   -march=rv64iv_zvkb1p0_zvbc1p0_zvksed1p0_zvksh1p0_zvkt1p0 -E -dM %s \
1642 // RUN:   -o - | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZVKSC %s
1643 // CHECK-COMBINE-INTO-ZVKSC: __riscv_zvks 1000000{{$}}
1644 // CHECK-COMBINE-INTO-ZVKSC: __riscv_zvksc 1000000{{$}}
1645 
1646 // RUN: %clang --target=riscv32 \
1647 // RUN:   -march=rv32i_zve32x_zvksed1p0 -E -dM %s \
1648 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKSED-EXT %s
1649 // RUN: %clang --target=riscv64 \
1650 // RUN:   -march=rv64i_zve32x_zvksed1p0 -E -dM %s \
1651 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKSED-EXT %s
1652 // CHECK-ZVKSED-EXT: __riscv_zvksed  1000000{{$}}
1653 
1654 // RUN: %clang --target=riscv32 \
1655 // RUN:   -march=rv32i_zve64x_zvksg1p0 -E -dM %s \
1656 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKSG-EXT %s
1657 // RUN: %clang --target=riscv64 \
1658 // RUN:   -march=rv64i_zve64x_zvksg1p0 -E -dM %s \
1659 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKSG-EXT %s
1660 // CHECK-ZVKSG-EXT: __riscv_zvksg 1000000{{$}}
1661 
1662 // RUN: %clang --target=riscv32 \
1663 // RUN:   -march=rv32iv_zvkb1p0_zvkg1p0_zvksed1p0_zvksh1p0_zvkt1p0 -E -dM %s \
1664 // RUN:   -o - | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZVKSG %s
1665 // RUN: %clang --target=riscv64 \
1666 // RUN:   -march=rv64iv_zvkb1p0_zvkg1p0_zvksed1p0_zvksh1p0_zvkt1p0 -E -dM %s \
1667 // RUN:   -o - | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZVKSG %s
1668 // CHECK-COMBINE-INTO-ZVKSG: __riscv_zvks 1000000{{$}}
1669 // CHECK-COMBINE-INTO-ZVKSG: __riscv_zvksg 1000000{{$}}
1670 
1671 // RUN: %clang --target=riscv32 \
1672 // RUN:   -march=rv32i_zve32x_zvksh1p0 -E -dM %s \
1673 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKSH-EXT %s
1674 // RUN: %clang --target=riscv64 \
1675 // RUN:   -march=rv64i_zve32x_zvksh1p0 -E -dM %s \
1676 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKSH-EXT %s
1677 // CHECK-ZVKSH-EXT: __riscv_zvksh  1000000{{$}}
1678 
1679 // RUN: %clang --target=riscv32 \
1680 // RUN:   -march=rv32i_zve32x_zvkt1p0 -E -dM %s \
1681 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKT-EXT %s
1682 // RUN: %clang --target=riscv64 \
1683 // RUN:   -march=rv64i_zve32x_zvkt1p0 -E -dM %s \
1684 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKT-EXT %s
1685 // CHECK-ZVKT-EXT: __riscv_zvkt 1000000{{$}}
1686 
1687 // Experimental extensions
1688 // RUN: %clang --target=riscv32 -menable-experimental-extensions \
1689 // RUN:   -march=rv32i_zalasr0p1 -E -dM %s \
1690 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZALASR-EXT %s
1691 // RUN: %clang --target=riscv64 -menable-experimental-extensions \
1692 // RUN:   -march=rv64i_zalasr0p1 -E -dM %s \
1693 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZALASR-EXT %s
1694 // CHECK-ZALASR-EXT: __riscv_zalasr 1000{{$}}
1695 
1696 // RUN: %clang --target=riscv32 -menable-experimental-extensions \
1697 // RUN:   -march=rv32izfbfmin1p0 -E -dM %s \
1698 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZFBFMIN-EXT %s
1699 // RUN: %clang --target=riscv64 -menable-experimental-extensions \
1700 // RUN:   -march=rv64izfbfmin1p0 -E -dM %s \
1701 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZFBFMIN-EXT %s
1702 // CHECK-ZFBFMIN-EXT: __riscv_zfbfmin 1000000{{$}}
1703 
1704 // RUN: %clang --target=riscv32 -menable-experimental-extensions \
1705 // RUN:   -march=rv32i_zicfilp1p0 -E -dM %s \
1706 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICFILP-EXT %s
1707 // RUN: %clang --target=riscv64 -menable-experimental-extensions \
1708 // RUN:   -march=rv64i_zicfilp1p0 -E -dM %s \
1709 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICFILP-EXT %s
1710 // CHECK-ZICFILP-EXT: __riscv_zicfilp 1000000{{$}}
1711 
1712 // RUN: %clang --target=riscv32-unknown-linux-gnu \
1713 // RUN:   -march=rv32iztso1p0 -E -dM %s \
1714 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZTSO-EXT %s
1715 // RUN: %clang --target=riscv64-unknown-linux-gnu \
1716 // RUN:   -march=rv64iztso1p0 -E -dM %s \
1717 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZTSO-EXT %s
1718 // CHECK-ZTSO-EXT: __riscv_ztso 1000000{{$}}
1719 
1720 // RUN: %clang --target=riscv32 -menable-experimental-extensions \
1721 // RUN:   -march=rv32i_zve32x_zvbc32e0p7 -E -dM %s \
1722 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVBC32E-EXT %s
1723 // RUN: %clang --target=riscv64 -menable-experimental-extensions \
1724 // RUN:   -march=rv64i_zve32x_zvbc32e0p7 -E -dM %s \
1725 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVBC32E-EXT %s
1726 // CHECK-ZVBC32E-EXT: __riscv_zvbc32e 7000{{$}}
1727 
1728 // RUN: %clang --target=riscv32 -menable-experimental-extensions \
1729 // RUN:   -march=rv32ifzvfbfmin1p0 -E -dM %s \
1730 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVFBFMIN-EXT %s
1731 // RUN: %clang --target=riscv64 -menable-experimental-extensions \
1732 // RUN:   -march=rv64ifzvfbfmin1p0 -E -dM %s \
1733 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVFBFMIN-EXT %s
1734 // CHECK-ZVFBFMIN-EXT: __riscv_zvfbfmin 1000000{{$}}
1735 
1736 // RUN: %clang --target=riscv32 -menable-experimental-extensions \
1737 // RUN:   -march=rv32ifzvfbfwma1p0 -E -dM %s \
1738 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVFBFWMA-EXT %s
1739 // RUN: %clang --target=riscv64 -menable-experimental-extensions \
1740 // RUN:   -march=rv64ifzvfbfwma1p0 -E -dM %s \
1741 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVFBFWMA-EXT %s
1742 // CHECK-ZVFBFWMA-EXT: __riscv_zvfbfwma 1000000{{$}}
1743 
1744 // RUN: %clang --target=riscv32 -menable-experimental-extensions \
1745 // RUN:   -march=rv32i_zve32x_zvkgs0p7 -E -dM %s \
1746 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKGS-EXT %s
1747 // RUN: %clang --target=riscv64 -menable-experimental-extensions \
1748 // RUN:   -march=rv64i_zve32x_zvkgs0p7 -E -dM %s \
1749 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZVKGS-EXT %s
1750 // CHECK-ZVKGS-EXT: __riscv_zvkgs 7000{{$}}
1751 
1752 // RUN: %clang -target riscv32 -menable-experimental-extensions \
1753 // RUN:   -march=rv32izicfiss1p0 -E -dM %s \
1754 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICFISS-EXT %s
1755 // RUN: %clang -target riscv64 -menable-experimental-extensions \
1756 // RUN:   -march=rv64izicfiss1p0 -E -dM %s \
1757 // RUN:   -o - | FileCheck --check-prefix=CHECK-ZICFISS-EXT %s
1758 // CHECK-ZICFISS-EXT: __riscv_zicfiss 1000000{{$}}
1759 
1760 // RUN: %clang --target=riscv32 \
1761 // RUN:   -march=rv32i_ssnpm1p0 -E -dM %s \
1762 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSNPM-EXT %s
1763 // RUN: %clang --target=riscv64 \
1764 // RUN:   -march=rv64i_ssnpm1p0 -E -dM %s \
1765 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSNPM-EXT %s
1766 // CHECK-SSNPM-EXT: __riscv_ssnpm 1000000{{$}}
1767 
1768 // RUN: %clang --target=riscv32 -menable-experimental-extensions \
1769 // RUN:   -march=rv32i_smnpm1p0 -E -dM %s \
1770 // RUN:   -o - | FileCheck --check-prefix=CHECK-SMNPM-EXT %s
1771 // RUN: %clang --target=riscv64 -menable-experimental-extensions \
1772 // RUN:   -march=rv64i_smnpm1p0 -E -dM %s \
1773 // RUN:   -o - | FileCheck --check-prefix=CHECK-SMNPM-EXT %s
1774 // CHECK-SMNPM-EXT: __riscv_smnpm 1000000{{$}}
1775 
1776 // RUN: %clang --target=riscv32 \
1777 // RUN:   -march=rv32i_smmpm1p0 -E -dM %s \
1778 // RUN:   -o - | FileCheck --check-prefix=CHECK-SMMPM-EXT %s
1779 // RUN: %clang --target=riscv64 \
1780 // RUN:   -march=rv64i_smmpm1p0 -E -dM %s \
1781 // RUN:   -o - | FileCheck --check-prefix=CHECK-SMMPM-EXT %s
1782 // CHECK-SMMPM-EXT: __riscv_smmpm 1000000{{$}}
1783 
1784 // RUN: %clang --target=riscv32 \
1785 // RUN:   -march=rv32i_sspm1p0 -E -dM %s \
1786 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSPM-EXT %s
1787 // RUN: %clang --target=riscv64 \
1788 // RUN:   -march=rv64i_sspm1p0 -E -dM %s \
1789 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSPM-EXT %s
1790 // CHECK-SSPM-EXT: __riscv_sspm 1000000{{$}}
1791 
1792 // RUN: %clang --target=riscv32 \
1793 // RUN:   -march=rv32i_supm1p0 -E -dM %s \
1794 // RUN:   -o - | FileCheck --check-prefix=CHECK-SUPM-EXT %s
1795 // RUN: %clang --target=riscv64 \
1796 // RUN:   -march=rv64i_supm1p0 -E -dM %s \
1797 // RUN:   -o - | FileCheck --check-prefix=CHECK-SUPM-EXT %s
1798 // CHECK-SUPM-EXT: __riscv_supm 1000000{{$}}
1799 
1800 // RUN: %clang --target=riscv32 -menable-experimental-extensions \
1801 // RUN:   -march=rv32i_sdext1p0 -E -dM %s \
1802 // RUN:   -o - | FileCheck --check-prefix=CHECK-SDEXT-EXT %s
1803 // RUN: %clang --target=riscv64 -menable-experimental-extensions \
1804 // RUN:   -march=rv64i_sdext1p0 -E -dM %s \
1805 // RUN:   -o - | FileCheck --check-prefix=CHECK-SDEXT-EXT %s
1806 // CHECK-SDEXT-EXT: __riscv_sdext 1000000{{$}}
1807 
1808 // RUN: %clang --target=riscv32 -menable-experimental-extensions \
1809 // RUN:   -march=rv32i_sdtrig1p0 -E -dM %s \
1810 // RUN:   -o - | FileCheck --check-prefix=CHECK-SDTRIG-EXT %s
1811 // RUN: %clang --target=riscv64 -menable-experimental-extensions \
1812 // RUN:   -march=rv64i_sdtrig1p0 -E -dM %s \
1813 // RUN:   -o - | FileCheck --check-prefix=CHECK-SDTRIG-EXT %s
1814 // CHECK-SDTRIG-EXT: __riscv_sdtrig 1000000{{$}}
1815 
1816 // RUN: %clang --target=riscv32 -menable-experimental-extensions \
1817 // RUN:   -march=rv32i_smctr1p0 -E -dM %s \
1818 // RUN:   -o - | FileCheck --check-prefix=CHECK-SMCTR-EXT %s
1819 // RUN: %clang --target=riscv64 -menable-experimental-extensions \
1820 // RUN:   -march=rv64i_smctr1p0 -E -dM %s \
1821 // RUN:   -o - | FileCheck --check-prefix=CHECK-SMCTR-EXT %s
1822 // CHECK-SMCTR-EXT: __riscv_smctr 1000000{{$}}
1823 
1824 // RUN: %clang --target=riscv32 -menable-experimental-extensions \
1825 // RUN:   -march=rv32i_ssctr1p0 -E -dM %s \
1826 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSCTR-EXT %s
1827 // RUN: %clang --target=riscv64 -menable-experimental-extensions \
1828 // RUN:   -march=rv64i_ssctr1p0 -E -dM %s \
1829 // RUN:   -o - | FileCheck --check-prefix=CHECK-SSCTR-EXT %s
1830 // CHECK-SSCTR-EXT: __riscv_ssctr 1000000{{$}}
1831 
1832 // RUN: %clang --target=riscv32 -menable-experimental-extensions \
1833 // RUN:   -march=rv32i_svukte0p3 -E -dM %s \
1834 // RUN:   -o - | FileCheck --check-prefix=CHECK-SVUKTE-EXT %s
1835 // RUN: %clang --target=riscv64 -menable-experimental-extensions \
1836 // RUN:   -march=rv64i_svukte0p3 -E -dM %s \
1837 // RUN:   -o - | FileCheck --check-prefix=CHECK-SVUKTE-EXT %s
1838 // CHECK-SVUKTE-EXT: __riscv_svukte 3000{{$}}
1839 
1840 // Misaligned
1841 
1842 // RUN: %clang --target=riscv32-unknown-linux-gnu -march=rv32i -E -dM %s \
1843 // RUN:   -o - | FileCheck %s --check-prefix=CHECK-MISALIGNED-AVOID
1844 // RUN: %clang --target=riscv64-unknown-linux-gnu -march=rv64i -E -dM %s \
1845 // RUN:   -o - | FileCheck %s --check-prefix=CHECK-MISALIGNED-AVOID
1846 // CHECK-MISALIGNED-AVOID: __riscv_misaligned_avoid 1
1847 
1848 // RUN: %clang --target=riscv32-unknown-linux-gnu -march=rv32i -E -dM %s \
1849 // RUN:   -mno-strict-align -o - | FileCheck %s --check-prefix=CHECK-MISALIGNED-FAST
1850 // RUN: %clang --target=riscv64-unknown-linux-gnu -march=rv64i -E -dM %s \
1851 // RUN:   -mno-strict-align -o - | FileCheck %s --check-prefix=CHECK-MISALIGNED-FAST
1852 // RUN: %clang --target=riscv64-unknown-linux-gnu -mcpu=sifive-p450 -E -dM %s \
1853 // RUN:  -o - | FileCheck %s --check-prefix=CHECK-MISALIGNED-FAST
1854 // CHECK-MISALIGNED-FAST: __riscv_misaligned_fast 1
1855