1 // RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32i -x c -E -dM %s \
2 // RUN: -o - | FileCheck %s
3 // RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64i -x c -E -dM %s \
4 // RUN: -o - | FileCheck %s
5 
6 // CHECK-NOT: __riscv_div
7 // CHECK-NOT: __riscv_m
8 // CHECK-NOT: __riscv_mul
9 // CHECK-NOT: __riscv_muldiv
10 // CHECK-NOT: __riscv_a 2000000{{$}}
11 // CHECK-NOT: __riscv_atomic
12 // CHECK-NOT: __riscv_f 2000000{{$}}
13 // CHECK-NOT: __riscv_d
14 // CHECK-NOT: __riscv_flen
15 // CHECK-NOT: __riscv_fdiv
16 // CHECK-NOT: __riscv_fsqrt
17 // CHECK-NOT: __riscv_c 2000000{{$}}
18 // CHECK-NOT: __riscv_compressed
19 // CHECK-NOT: __riscv_b
20 // CHECK-NOT: __riscv_bitmanip
21 // CHECK-NOT: __riscv_zba
22 // CHECK-NOT: __riscv_zbb
23 // CHECK-NOT: __riscv_zbc
24 // CHECK-NOT: __riscv_zbe
25 // CHECK-NOT: __riscv_zbf
26 // CHECK-NOT: __riscv_zbm
27 // CHECK-NOT: __riscv_zbp
28 // CHECK-NOT: __riscv_zbr
29 // CHECK-NOT: __riscv_zbs
30 // CHECK-NOT: __riscv_zbt
31 // CHECK-NOT: __riscv_zfh
32 // CHECK-NOT: __riscv_v
33 // CHECK-NOT: __riscv_vector
34 // CHECK-NOT: __riscv_zbkc
35 // CHECK-NOT: __riscv_zbkx
36 // CHECK-NOT: __riscv_zbkb
37 // CHECK-NOT: __riscv_zkne
38 // CHECK-NOT: __riscv_zknd
39 // CHECK-NOT: __riscv_zknh
40 // CHECK-NOT: __riscv_zksh
41 // CHECK-NOT: __riscv_zksed
42 // CHECK-NOT: __riscv_zkr
43 // CHECK-NOT: __riscv_zkt
44 // CHECK-NOT: __riscv_zk
45 // CHECK-NOT: __riscv_zicbom
46 // CHECK-NOT: __riscv_zicboz
47 
48 // RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32im -x c -E -dM %s \
49 // RUN: -o - | FileCheck --check-prefix=CHECK-M-EXT %s
50 // RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64im -x c -E -dM %s \
51 // RUN: -o - | FileCheck --check-prefix=CHECK-M-EXT %s
52 // CHECK-M-EXT: __riscv_div 1
53 // CHECK-M-EXT: __riscv_m 2000000{{$}}
54 // CHECK-M-EXT: __riscv_mul 1
55 // CHECK-M-EXT: __riscv_muldiv 1
56 
57 // RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32ia -x c -E -dM %s \
58 // RUN: -o - | FileCheck --check-prefix=CHECK-A-EXT %s
59 // RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64ia -x c -E -dM %s \
60 // RUN: -o - | FileCheck --check-prefix=CHECK-A-EXT %s
61 // CHECK-A-EXT: __riscv_a 2000000{{$}}
62 // CHECK-A-EXT: __riscv_atomic 1
63 
64 // RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32if -x c -E -dM %s \
65 // RUN: -o - | FileCheck --check-prefix=CHECK-F-EXT %s
66 // RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64if -x c -E -dM %s \
67 // RUN: -o - | FileCheck --check-prefix=CHECK-F-EXT %s
68 // CHECK-F-EXT: __riscv_f 2000000{{$}}
69 // CHECK-F-EXT: __riscv_fdiv 1
70 // CHECK-F-EXT: __riscv_flen 32
71 // CHECK-F-EXT: __riscv_fsqrt 1
72 
73 // RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32ifd -x c -E -dM %s \
74 // RUN: -o - | FileCheck --check-prefix=CHECK-D-EXT %s
75 // RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64ifd -x c -E -dM %s \
76 // RUN: -o - | FileCheck --check-prefix=CHECK-D-EXT %s
77 // CHECK-D-EXT: __riscv_d 2000000{{$}}
78 // CHECK-D-EXT: __riscv_fdiv 1
79 // CHECK-D-EXT: __riscv_flen 64
80 // CHECK-D-EXT: __riscv_fsqrt 1
81 
82 // RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32ifd -mabi=ilp32 -x c -E -dM %s \
83 // RUN: -o - | FileCheck --check-prefix=CHECK-SOFT %s
84 // RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64ifd -mabi=lp64 -x c -E -dM %s \
85 // RUN: -o - | FileCheck --check-prefix=CHECK-SOFT %s
86 // CHECK-SOFT: __riscv_float_abi_soft 1
87 // CHECK-SOFT-NOT: __riscv_float_abi_single
88 // CHECK-SOFT-NOT: __riscv_float_abi_double
89 
90 // RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32ifd -mabi=ilp32f -x c -E -dM %s \
91 // RUN: -o - | FileCheck --check-prefix=CHECK-SINGLE %s
92 // RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64ifd -mabi=lp64f -x c -E -dM %s \
93 // RUN: -o - | FileCheck --check-prefix=CHECK-SINGLE %s
94 // CHECK-SINGLE: __riscv_float_abi_single 1
95 // CHECK-SINGLE-NOT: __riscv_float_abi_soft
96 // CHECK-SINGLE-NOT: __riscv_float_abi_double
97 
98 // RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32ifd -x c -E -dM %s \
99 // RUN: -o - | FileCheck --check-prefix=CHECK-DOUBLE %s
100 // RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64ifd -x c -E -dM %s \
101 // RUN: -o - | FileCheck --check-prefix=CHECK-DOUBLE %s
102 // CHECK-DOUBLE: __riscv_float_abi_double 1
103 // CHECK-DOUBLE-NOT: __riscv_float_abi_soft
104 // CHECK-DOUBLE-NOT: __riscv_float_abi_single
105 
106 // RUN: %clang -target riscv32-unknown-linux-gnu -march=rv32ic -x c -E -dM %s \
107 // RUN: -o - | FileCheck --check-prefix=CHECK-C-EXT %s
108 // RUN: %clang -target riscv64-unknown-linux-gnu -march=rv64ic -x c -E -dM %s \
109 // RUN: -o - | FileCheck --check-prefix=CHECK-C-EXT %s
110 // CHECK-C-EXT: __riscv_c 2000000{{$}}
111 // CHECK-C-EXT: __riscv_compressed 1
112 
113 // RUN: %clang -target riscv32-unknown-linux-gnu \
114 // RUN: -march=rv32izba1p0 -x c -E -dM %s \
115 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBA-EXT %s
116 // RUN: %clang -target riscv32-unknown-linux-gnu \
117 // RUN: -march=rv32izba -x c -E -dM %s \
118 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBA-EXT %s
119 // RUN: %clang -target riscv64-unknown-linux-gnu \
120 // RUN: -march=rv64izba1p0 -x c -E -dM %s \
121 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBA-EXT %s
122 // RUN: %clang -target riscv64-unknown-linux-gnu \
123 // RUN: -march=rv64izba -x c -E -dM %s \
124 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBA-EXT %s
125 // CHECK-ZBA-NOT: __riscv_b
126 // CHECK-ZBA-EXT: __riscv_zba 1000000{{$}}
127 
128 // RUN: %clang -target riscv32-unknown-linux-gnu \
129 // RUN: -march=rv32izbb1p0 -x c -E -dM %s \
130 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBB-EXT %s
131 // RUN: %clang -target riscv32-unknown-linux-gnu \
132 // RUN: -march=rv32izbb -x c -E -dM %s \
133 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBB-EXT %s
134 // RUN: %clang -target riscv64-unknown-linux-gnu \
135 // RUN: -march=rv64izbb1p0 -x c -E -dM %s \
136 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBB-EXT %s
137 // RUN: %clang -target riscv64-unknown-linux-gnu \
138 // RUN: -march=rv64izbb -x c -E -dM %s \
139 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBB-EXT %s
140 // CHECK-ZBB-NOT: __riscv_b
141 // CHECK-ZBB-EXT: __riscv_zbb 1000000{{$}}
142 
143 // RUN: %clang -target riscv32-unknown-linux-gnu \
144 // RUN: -march=rv32izbc1p0 -x c -E -dM %s \
145 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBC-EXT %s
146 // RUN: %clang -target riscv32-unknown-linux-gnu \
147 // RUN: -march=rv32izbc -x c -E -dM %s \
148 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBC-EXT %s
149 // RUN: %clang -target riscv64-unknown-linux-gnu \
150 // RUN: -march=rv64izbc1p0 -x c -E -dM %s \
151 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBC-EXT %s
152 // RUN: %clang -target riscv64-unknown-linux-gnu \
153 // RUN: -march=rv64izbc -x c -E -dM %s \
154 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBC-EXT %s
155 // CHECK-ZBC-NOT: __riscv_b
156 // CHECK-ZBC-EXT: __riscv_zbc 1000000{{$}}
157 
158 // RUN: %clang -target riscv32-unknown-linux-gnu -menable-experimental-extensions \
159 // RUN: -march=rv32izbe0p93 -x c -E -dM %s \
160 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBE-EXT %s
161 // RUN: %clang -target riscv64-unknown-linux-gnu -menable-experimental-extensions \
162 // RUN: -march=rv64izbe0p93 -x c -E -dM %s \
163 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBE-EXT %s
164 // CHECK-ZBE-NOT: __riscv_b
165 // CHECK-ZBE-EXT: __riscv_zbe 93000{{$}}
166 
167 // RUN: %clang -target riscv32-unknown-linux-gnu -menable-experimental-extensions \
168 // RUN: -march=rv32izbf0p93 -x c -E -dM %s \
169 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBF-EXT %s
170 // RUN: %clang -target riscv64-unknown-linux-gnu -menable-experimental-extensions \
171 // RUN: -march=rv64izbf0p93 -x c -E -dM %s \
172 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBF-EXT %s
173 // CHECK-ZBF-NOT: __riscv_b
174 // CHECK-ZBF-EXT: __riscv_zbf 93000{{$}}
175 
176 // RUN: %clang -target riscv32-unknown-linux-gnu -menable-experimental-extensions \
177 // RUN: -march=rv32izbm0p93 -x c -E -dM %s \
178 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBM-EXT %s
179 // RUN: %clang -target riscv64-unknown-linux-gnu -menable-experimental-extensions \
180 // RUN: -march=rv64izbm0p93 -x c -E -dM %s \
181 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBM-EXT %s
182 // CHECK-ZBM-NOT: __riscv_b
183 // CHECK-ZBM-EXT: __riscv_zbm 93000{{$}}
184 
185 // RUN: %clang -target riscv32-unknown-linux-gnu -menable-experimental-extensions \
186 // RUN: -march=rv32izbp0p93 -x c -E -dM %s \
187 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBP-EXT %s
188 // RUN: %clang -target riscv64-unknown-linux-gnu -menable-experimental-extensions \
189 // RUN: -march=rv64izbp0p93 -x c -E -dM %s \
190 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBP-EXT %s
191 // CHECK-ZBP-NOT: __riscv_b
192 // CHECK-ZBP-EXT: __riscv_zbp 93000{{$}}
193 
194 // RUN: %clang -target riscv32-unknown-linux-gnu -menable-experimental-extensions \
195 // RUN: -march=rv32izbr0p93 -x c -E -dM %s \
196 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBR-EXT %s
197 // RUN: %clang -target riscv64-unknown-linux-gnu -menable-experimental-extensions \
198 // RUN: -march=rv64izbr0p93 -x c -E -dM %s \
199 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBR-EXT %s
200 // CHECK-ZBR-NOT: __riscv_b
201 // CHECK-ZBR-EXT: __riscv_zbr 93000{{$}}
202 
203 // RUN: %clang -target riscv32-unknown-linux-gnu \
204 // RUN: -march=rv32izbs1p0 -x c -E -dM %s \
205 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBS-EXT %s
206 // RUN: %clang -target riscv32-unknown-linux-gnu \
207 // RUN: -march=rv32izbs -x c -E -dM %s \
208 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBS-EXT %s
209 // RUN: %clang -target riscv64-unknown-linux-gnu \
210 // RUN: -march=rv64izbs1p0 -x c -E -dM %s \
211 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBS-EXT %s
212 // RUN: %clang -target riscv64-unknown-linux-gnu \
213 // RUN: -march=rv64izbs -x c -E -dM %s \
214 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBS-EXT %s
215 // CHECK-ZBS-NOT: __riscv_b
216 // CHECK-ZBS-EXT: __riscv_zbs 1000000{{$}}
217 
218 // RUN: %clang -target riscv32-unknown-linux-gnu -menable-experimental-extensions \
219 // RUN: -march=rv32izbt0p93 -x c -E -dM %s \
220 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBT-EXT %s
221 // RUN: %clang -target riscv64-unknown-linux-gnu -menable-experimental-extensions \
222 // RUN: -march=rv64izbt0p93 -x c -E -dM %s \
223 // RUN: -o - | FileCheck --check-prefix=CHECK-ZBT-EXT %s
224 // CHECK-ZBT-NOT: __riscv_b
225 // CHECK-ZBT-EXT: __riscv_zbt 93000{{$}}
226 
227 // RUN: %clang -target riscv32-unknown-linux-gnu \
228 // RUN: -march=rv32iv1p0 -x c -E -dM %s \
229 // RUN: -o - | FileCheck --check-prefix=CHECK-V-EXT %s
230 // RUN: %clang -target riscv64-unknown-linux-gnu \
231 // RUN: -march=rv64iv1p0 -x c -E -dM %s \
232 // RUN: -o - | FileCheck --check-prefix=CHECK-V-EXT %s
233 // CHECK-V-EXT: __riscv_v 1000000{{$}}
234 // CHECK-V-EXT: __riscv_vector 1
235 
236 // RUN: %clang -target riscv32-unknown-linux-gnu \
237 // RUN: -march=rv32izfhmin1p0 -x c -E -dM %s \
238 // RUN: -o - | FileCheck --check-prefix=CHECK-ZFHMIN-EXT %s
239 // RUN: %clang -target riscv64-unknown-linux-gnu \
240 // RUN: -march=rv64izfhmin1p0 -x c -E -dM %s \
241 // RUN: -o - | FileCheck --check-prefix=CHECK-ZFHMIN-EXT %s
242 // CHECK-ZFHMIN-EXT: __riscv_f 2000000{{$}}
243 // CHECK-ZFHMIN-EXT: __riscv_zfhmin 1000000{{$}}
244 
245 // RUN: %clang -target riscv32-unknown-linux-gnu \
246 // RUN: -march=rv32izfh1p0 -x c -E -dM %s \
247 // RUN: -o - | FileCheck --check-prefix=CHECK-ZFH-EXT %s
248 // RUN: %clang -target riscv64-unknown-linux-gnu \
249 // RUN: -march=rv64izfh1p0 -x c -E -dM %s \
250 // RUN: -o - | FileCheck --check-prefix=CHECK-ZFH-EXT %s
251 // CHECK-ZFH-EXT: __riscv_f 2000000{{$}}
252 // CHECK-ZFH-EXT: __riscv_zfh 1000000{{$}}
253 
254 // RUN: %clang -target riscv32-unknown-linux-gnu \
255 // RUN: -march=rv64iv1p0 -x c -E -dM %s -o - \
256 // RUN: | FileCheck --check-prefix=CHECK-V-MINVLEN %s
257 // CHECK-V-MINVLEN: __riscv_v_elen 64
258 // CHECK-V-MINVLEN: __riscv_v_elen_fp 64
259 // CHECK-V-MINVLEN: __riscv_v_min_vlen 128
260 
261 // RUN: %clang -target riscv32-unknown-linux-gnu \
262 // RUN: -march=rv64iv1p0_zvl256b1p0 -x c -E -dM %s -o - \
263 // RUN: | FileCheck --check-prefix=CHECK-ZVL256b %s
264 // CHECK-ZVL256b: __riscv_v_min_vlen 256
265 
266 // RUN: %clang -target riscv32-unknown-linux-gnu \
267 // RUN: -march=rv64iv1p0_zvl512b1p0 -x c -E -dM %s -o - \
268 // RUN: | FileCheck --check-prefix=CHECK-ZVL512b %s
269 // CHECK-ZVL512b: __riscv_v_min_vlen 512
270 
271 // RUN: %clang -target riscv32-unknown-linux-gnu \
272 // RUN: -march=rv64iv1p0_zvl1024b1p0 -x c -E -dM %s -o - \
273 // RUN: | FileCheck --check-prefix=CHECK-ZVL1024b %s
274 // CHECK-ZVL1024b: __riscv_v_min_vlen 1024
275 
276 // RUN: %clang -target riscv32-unknown-linux-gnu \
277 // RUN: -march=rv64iv1p0_zvl2048b1p0 -x c -E -dM %s -o - \
278 // RUN: | FileCheck --check-prefix=CHECK-ZVL2048b %s
279 // CHECK-ZVL2048b: __riscv_v_min_vlen 2048
280 
281 // RUN: %clang -target riscv32-unknown-linux-gnu \
282 // RUN: -march=rv64iv1p0_zvl4096b1p0 -x c -E -dM %s -o - \
283 // RUN: | FileCheck --check-prefix=CHECK-ZVL4096b %s
284 // CHECK-ZVL4096b: __riscv_v_min_vlen 4096
285 
286 // RUN: %clang -target riscv32-unknown-linux-gnu \
287 // RUN: -march=rv64iv1p0_zvl8192b1p0 -x c -E -dM %s -o - \
288 // RUN: | FileCheck --check-prefix=CHECK-ZVL8192b %s
289 // CHECK-ZVL8192b: __riscv_v_min_vlen 8192
290 
291 // RUN: %clang -target riscv32-unknown-linux-gnu \
292 // RUN: -march=rv64iv1p0_zvl16384b1p0 -x c -E -dM %s -o - \
293 // RUN: | FileCheck --check-prefix=CHECK-ZVL16384b %s
294 // CHECK-ZVL16384b: __riscv_v_min_vlen 16384
295 
296 // RUN: %clang -target riscv32-unknown-linux-gnu \
297 // RUN: -march=rv64iv1p0_zvl32768b1p0 -x c -E -dM %s -o - \
298 // RUN: | FileCheck --check-prefix=CHECK-ZVL32768b %s
299 // CHECK-ZVL32768b: __riscv_v_min_vlen 32768
300 
301 // RUN: %clang -target riscv32-unknown-linux-gnu \
302 // RUN: -march=rv64iv1p0_zvl65536b1p0 -x c -E -dM %s -o - \
303 // RUN: | FileCheck --check-prefix=CHECK-ZVL65536b %s
304 // CHECK-ZVL65536b: __riscv_v_min_vlen 65536
305 
306 // RUN: %clang -target riscv64-unknown-linux-gnu \
307 // RUN: -march=rv64ifdzve64d1p0 -x c -E -dM %s -o - \
308 // RUN: | FileCheck --check-prefix=CHECK-ZVE64D-EXT %s
309 // CHECK-ZVE64D-EXT: __riscv_v_elen 64
310 // CHECK-ZVE64D-EXT: __riscv_v_elen_fp 64
311 // CHECK-ZVE64D-EXT: __riscv_v_min_vlen 64
312 // CHECK-ZVE64D-EXT: __riscv_vector 1
313 // CHECK-ZVE64D-EXT: __riscv_zve32f 1000000{{$}}
314 // CHECK-ZVE64D-EXT: __riscv_zve32x 1000000{{$}}
315 // CHECK-ZVE64D-EXT: __riscv_zve64d 1000000{{$}}
316 // CHECK-ZVE64D-EXT: __riscv_zve64f 1000000{{$}}
317 // CHECK-ZVE64D-EXT: __riscv_zve64x 1000000{{$}}
318 
319 // RUN: %clang -target riscv64-unknown-linux-gnu \
320 // RUN: -march=rv64ifzve64f1p0 -x c -E -dM %s -o - \
321 // RUN: | FileCheck --check-prefix=CHECK-ZVE64F-EXT %s
322 // CHECK-ZVE64F-EXT: __riscv_v_elen 64
323 // CHECK-ZVE64F-EXT: __riscv_v_elen_fp 32
324 // CHECK-ZVE64F-EXT: __riscv_v_min_vlen 64
325 // CHECK-ZVE64F-EXT: __riscv_vector 1
326 // CHECK-ZVE64F-EXT: __riscv_zve32f 1000000{{$}}
327 // CHECK-ZVE64F-EXT: __riscv_zve32x 1000000{{$}}
328 // CHECK-ZVE64F-EXT: __riscv_zve64f 1000000{{$}}
329 // CHECK-ZVE64F-EXT: __riscv_zve64x 1000000{{$}}
330 
331 // RUN: %clang -target riscv64-unknown-linux-gnu \
332 // RUN: -march=rv64izve64x1p0 -x c -E -dM %s -o - \
333 // RUN: | FileCheck --check-prefix=CHECK-ZVE64X-EXT %s
334 // CHECK-ZVE64X-EXT: __riscv_v_elen 64
335 // CHECK-ZVE64X-EXT: __riscv_v_elen_fp 0
336 // CHECK-ZVE64X-EXT: __riscv_v_min_vlen 64
337 // CHECK-ZVE64X-EXT: __riscv_vector 1
338 // CHECK-ZVE64X-EXT: __riscv_zve32x 1000000{{$}}
339 // CHECK-ZVE64X-EXT: __riscv_zve64x 1000000{{$}}
340 
341 // RUN: %clang -target riscv64-unknown-linux-gnu \
342 // RUN: -march=rv64ifzve32f1p0 -x c -E -dM %s -o - \
343 // RUN: | FileCheck --check-prefix=CHECK-ZVE32F-EXT %s
344 // CHECK-ZVE32F-EXT: __riscv_v_elen 32
345 // CHECK-ZVE32F-EXT: __riscv_v_elen_fp 32
346 // CHECK-ZVE32F-EXT: __riscv_v_min_vlen 32
347 // CHECK-ZVE32F-EXT: __riscv_vector 1
348 // CHECK-ZVE32F-EXT: __riscv_zve32f 1000000{{$}}
349 // CHECK-ZVE32F-EXT: __riscv_zve32x 1000000{{$}}
350 
351 // RUN: %clang -target riscv64-unknown-linux-gnu \
352 // RUN: -march=rv64izve32x1p0 -x c -E -dM %s -o - \
353 // RUN: | FileCheck --check-prefix=CHECK-ZVE32X-EXT %s
354 // CHECK-ZVE32X-EXT: __riscv_v_elen 32
355 // CHECK-ZVE32X-EXT: __riscv_v_elen_fp 0
356 // CHECK-ZVE32X-EXT: __riscv_v_min_vlen 32
357 // CHECK-ZVE32X-EXT: __riscv_vector 1
358 // CHECK-ZVE32X-EXT: __riscv_zve32x 1000000{{$}}
359 
360 // RUN: %clang -target riscv64-unknown-linux-gnu \
361 // RUN: -march=rv64izbkc1p0 -x c -E -dM %s -o - \
362 // RUN: | FileCheck --check-prefix=CHECK-ZBKC-EXT %s
363 // CHECK-ZBKC-EXT: __riscv_zbkc
364 
365 // RUN: %clang -target riscv64-unknown-linux-gnu \
366 // RUN: -march=rv64izbkx1p0 -x c -E -dM %s -o - \
367 // RUN: | FileCheck --check-prefix=CHECK-ZBKX-EXT %s
368 // CHECK-ZBKX-EXT: __riscv_zbkx
369 
370 // RUN: %clang -target riscv64-unknown-linux-gnu \
371 // RUN: -march=rv64izbkb1p0 -x c -E -dM %s -o - \
372 // RUN: | FileCheck --check-prefix=CHECK-ZBKB-EXT %s
373 // CHECK-ZBKB-EXT: __riscv_zbkb
374 
375 // RUN: %clang -target riscv64-unknown-linux-gnu \
376 // RUN: -march=rv64izknd1p0 -x c -E -dM %s -o - \
377 // RUN: | FileCheck --check-prefix=CHECK-ZKND-EXT %s
378 // CHECK-ZKND-EXT: __riscv_zknd
379 
380 // RUN: %clang -target riscv64-unknown-linux-gnu \
381 // RUN: -march=rv64izkne1p0 -x c -E -dM %s -o - \
382 // RUN: | FileCheck --check-prefix=CHECK-ZKNE-EXT %s
383 // CHECK-ZKNE-EXT: __riscv_zkne
384 
385 // RUN: %clang -target riscv64-unknown-linux-gnu \
386 // RUN: -march=rv64izknh1p0 -x c -E -dM %s -o - \
387 // RUN: | FileCheck --check-prefix=CHECK-ZKNH-EXT %s
388 // CHECK-ZKNH-EXT: __riscv_zknh
389 
390 // RUN: %clang -target riscv64-unknown-linux-gnu \
391 // RUN: -march=rv64izksh1p0 -x c -E -dM %s -o - \
392 // RUN: | FileCheck --check-prefix=CHECK-ZKSH-EXT %s
393 // CHECK-ZKSH-EXT: __riscv_zksh
394 
395 // RUN: %clang -target riscv64-unknown-linux-gnu \
396 // RUN: -march=rv64izksed1p0 -x c -E -dM %s -o - \
397 // RUN: | FileCheck --check-prefix=CHECK-ZKSED-EXT %s
398 // CHECK-ZKSED-EXT: __riscv_zksed
399 
400 // RUN: %clang -target riscv64-unknown-linux-gnu \
401 // RUN: -march=rv64izkr1p0 -x c -E -dM %s -o - \
402 // RUN: | FileCheck --check-prefix=CHECK-ZKR-EXT %s
403 // CHECK-ZKR-EXT: __riscv_zkr
404 
405 // RUN: %clang -target riscv64-unknown-linux-gnu \
406 // RUN: -march=rv64izkt1p0 -x c -E -dM %s -o - \
407 // RUN: | FileCheck --check-prefix=CHECK-ZKT-EXT %s
408 // CHECK-ZKT-EXT: __riscv_zkt
409 
410 // RUN: %clang -target riscv64-unknown-linux-gnu \
411 // RUN: -march=rv64izk1p0 -x c -E -dM %s -o - \
412 // RUN: | FileCheck --check-prefix=CHECK-ZK-EXT %s
413 // CHECK-ZK-EXT: __riscv_zk
414 
415 // RUN: %clang -target riscv32-unknown-linux-gnu \
416 // RUN: -march=rv32i_zkn_zkt_zkr -x c -E -dM %s -o - \
417 // RUN: | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZK %s
418 // RUN: %clang -target riscv64-unknown-linux-gnu \
419 // RUN: -march=rv64i_zkn_zkt_zkr -x c -E -dM %s -o - \
420 // RUN: | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZK %s
421 // CHECK-COMBINE-INTO-ZK: __riscv_zk 1
422 
423 // RUN: %clang -target riscv32-unknown-linux-gnu \
424 // RUN: -march=rv32i_zbkb_zbkc_zbkx_zkne_zknd_zknh -x c -E -dM %s -o - \
425 // RUN: | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZKN %s
426 // RUN: %clang -target riscv64-unknown-linux-gnu \
427 // RUN: -march=rv64i_zbkb_zbkc_zbkx_zkne_zknd_zknh -x c -E -dM %s -o - \
428 // RUN: | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZKN %s
429 // CHECK-COMBINE-INTO-ZKN: __riscv_zkn 1
430 
431 // RUN: %clang -target riscv32-unknown-linux-gnu \
432 // RUN: -march=rv32i_zbkb_zbkc_zbkx_zksed_zksh -x c -E -dM %s -o - \
433 // RUN: | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZKS %s
434 // RUN: %clang -target riscv64-unknown-linux-gnu \
435 // RUN: -march=rv64i_zbkb_zbkc_zbkx_zksed_zksh -x c -E -dM %s -o - \
436 // RUN: | FileCheck --check-prefix=CHECK-COMBINE-INTO-ZKS %s
437 // CHECK-COMBINE-INTO-ZKS: __riscv_zks 1
438 
439 // RUN: %clang -target riscv32 -march=rv32izicbom -x c -E -dM %s \
440 // RUN: -o - | FileCheck --check-prefix=CHECK-ZICBOM-EXT %s
441 // RUN: %clang -target riscv64 -march=rv64izicbom -x c -E -dM %s \
442 // RUN: -o - | FileCheck --check-prefix=CHECK-ZICBOM-EXT %s
443 // CHECK-ZICBOM-EXT: __riscv_zicbom 1000000{{$}}
444 
445 // RUN: %clang -target riscv32 -march=rv32izicboz -x c -E -dM %s \
446 // RUN: -o - | FileCheck --check-prefix=CHECK-ZICBOZ-EXT %s
447 // RUN: %clang -target riscv64 -march=rv64izicboz -x c -E -dM %s \
448 // RUN: -o - | FileCheck --check-prefix=CHECK-ZICBOZ-EXT %s
449 // CHECK-ZICBOZ-EXT: __riscv_zicboz 1000000{{$}}
450 
451 // RUN: %clang -target riscv32 -march=rv32izicbop -x c -E -dM %s \
452 // RUN: -o - | FileCheck --check-prefix=CHECK-ZICBOP-EXT %s
453 // RUN: %clang -target riscv64 -march=rv64izicbop -x c -E -dM %s \
454 // RUN: -o - | FileCheck --check-prefix=CHECK-ZICBOP-EXT %s
455 // CHECK-ZICBOP-EXT: __riscv_zicbop 1000000{{$}}
456