1 // RUN: %clang --target=riscv32 -### -c %s 2>&1 -march=rvi20u32 \
2 // RUN: | FileCheck -check-prefix=RVI20U32 %s
3 // RVI20U32: "-target-feature" "-a"
4 // RVI20U32: "-target-feature" "-c"
5 // RVI20U32: "-target-feature" "-d"
6 // RVI20U32: "-target-feature" "-f"
7 // RVI20U32: "-target-feature" "-m"
9 // RUN: %clang --target=riscv64 -### -c %s 2>&1 -march=rvi20u64 \
10 // RUN: | FileCheck -check-prefix=RVI20U64 %s
11 // RVI20U64: "-target-feature" "-a"
12 // RVI20U64: "-target-feature" "-c"
13 // RVI20U64: "-target-feature" "-d"
14 // RVI20U64: "-target-feature" "-f"
15 // RVI20U64: "-target-feature" "-m"
17 // RUN: %clang --target=riscv64 -### -c %s 2>&1 -march=rva20u64 \
18 // RUN: | FileCheck -check-prefix=RVA20U64 %s
19 // RVA20U64: "-target-feature" "+m"
20 // RVA20U64: "-target-feature" "+a"
21 // RVA20U64: "-target-feature" "+f"
22 // RVA20U64: "-target-feature" "+d"
23 // RVA20U64: "-target-feature" "+c"
24 // RVA20U64: "-target-feature" "+ziccamoa"
25 // RVA20U64: "-target-feature" "+ziccif"
26 // RVA20U64: "-target-feature" "+zicclsm"
27 // RVA20U64: "-target-feature" "+ziccrse"
28 // RVA20U64: "-target-feature" "+zicntr"
29 // RVA20U64: "-target-feature" "+zicsr"
30 // RVA20U64: "-target-feature" "+za128rs"
32 // RUN: %clang --target=riscv64 -### -c %s 2>&1 -march=rva20s64 \
33 // RUN: | FileCheck -check-prefix=RVA20S64 %s
34 // RVA20S64: "-target-feature" "+m"
35 // RVA20S64: "-target-feature" "+a"
36 // RVA20S64: "-target-feature" "+f"
37 // RVA20S64: "-target-feature" "+d"
38 // RVA20S64: "-target-feature" "+c"
39 // RVA20S64: "-target-feature" "+ziccamoa"
40 // RVA20S64: "-target-feature" "+ziccif"
41 // RVA20S64: "-target-feature" "+zicclsm"
42 // RVA20S64: "-target-feature" "+ziccrse"
43 // RVA20S64: "-target-feature" "+zicntr"
44 // RVA20S64: "-target-feature" "+zicsr"
45 // RVA20S64: "-target-feature" "+zifencei"
46 // RVA20S64: "-target-feature" "+za128rs"
47 // RVA20S64: "-target-feature" "+ssccptr"
48 // RVA20S64: "-target-feature" "+sstvala"
49 // RVA20S64: "-target-feature" "+sstvecd"
50 // RVA20S64: "-target-feature" "+svade"
51 // RVA20S64: "-target-feature" "+svbare"
53 // RUN: %clang --target=riscv64 -### -c %s 2>&1 -march=rva22u64 \
54 // RUN: | FileCheck -check-prefix=RVA22U64 %s
55 // RVA22U64: "-target-feature" "+m"
56 // RVA22U64: "-target-feature" "+a"
57 // RVA22U64: "-target-feature" "+f"
58 // RVA22U64: "-target-feature" "+d"
59 // RVA22U64: "-target-feature" "+c"
60 // RVA22U64: "-target-feature" "+b"
61 // RVA22U64: "-target-feature" "+zic64b"
62 // RVA22U64: "-target-feature" "+zicbom"
63 // RVA22U64: "-target-feature" "+zicbop"
64 // RVA22U64: "-target-feature" "+zicboz"
65 // RVA22U64: "-target-feature" "+ziccamoa"
66 // RVA22U64: "-target-feature" "+ziccif"
67 // RVA22U64: "-target-feature" "+zicclsm"
68 // RVA22U64: "-target-feature" "+ziccrse"
69 // RVA22U64: "-target-feature" "+zicntr"
70 // RVA22U64: "-target-feature" "+zicsr"
71 // RVA22U64: "-target-feature" "+zihintpause"
72 // RVA22U64: "-target-feature" "+zihpm"
73 // RVA22U64: "-target-feature" "+za64rs"
74 // RVA22U64: "-target-feature" "+zfhmin"
75 // RVA22U64: "-target-feature" "+zba"
76 // RVA22U64: "-target-feature" "+zbb"
77 // RVA22U64: "-target-feature" "+zbs"
78 // RVA22U64: "-target-feature" "+zkt"
80 // RUN: %clang --target=riscv64 -### -c %s 2>&1 -march=rva22s64 \
81 // RUN: | FileCheck -check-prefix=RVA22S64 %s
82 // RVA22S64: "-target-feature" "+m"
83 // RVA22S64: "-target-feature" "+a"
84 // RVA22S64: "-target-feature" "+f"
85 // RVA22S64: "-target-feature" "+d"
86 // RVA22S64: "-target-feature" "+c"
87 // RVA22S64: "-target-feature" "+b"
88 // RVA22S64: "-target-feature" "+zic64b"
89 // RVA22S64: "-target-feature" "+zicbom"
90 // RVA22S64: "-target-feature" "+zicbop"
91 // RVA22S64: "-target-feature" "+zicboz"
92 // RVA22S64: "-target-feature" "+ziccamoa"
93 // RVA22S64: "-target-feature" "+ziccif"
94 // RVA22S64: "-target-feature" "+zicclsm"
95 // RVA22S64: "-target-feature" "+ziccrse"
96 // RVA22S64: "-target-feature" "+zicntr"
97 // RVA22S64: "-target-feature" "+zicsr"
98 // RVA22S64: "-target-feature" "+zifencei"
99 // RVA22S64: "-target-feature" "+zihintpause"
100 // RVA22S64: "-target-feature" "+zihpm"
101 // RVA22S64: "-target-feature" "+za64rs"
102 // RVA22S64: "-target-feature" "+zfhmin"
103 // RVA22S64: "-target-feature" "+zba"
104 // RVA22S64: "-target-feature" "+zbb"
105 // RVA22S64: "-target-feature" "+zbs"
106 // RVA22S64: "-target-feature" "+zkt"
107 // RVA22S64: "-target-feature" "+ssccptr"
108 // RVA22S64: "-target-feature" "+sscounterenw"
109 // RVA22S64: "-target-feature" "+sstvala"
110 // RVA22S64: "-target-feature" "+sstvecd"
111 // RVA22S64: "-target-feature" "+svade"
112 // RVA22S64: "-target-feature" "+svbare"
113 // RVA22S64: "-target-feature" "+svinval"
114 // RVA22S64: "-target-feature" "+svpbmt"
116 // RUN: %clang --target=riscv64 -### -c %s 2>&1 -march=rva23u64 \
117 // RUN: | FileCheck -check-prefix=RVA23U64 %s
118 // RVA23U64: "-target-feature" "+m"
119 // RVA23U64: "-target-feature" "+a"
120 // RVA23U64: "-target-feature" "+f"
121 // RVA23U64: "-target-feature" "+d"
122 // RVA23U64: "-target-feature" "+c"
123 // RVA23U64: "-target-feature" "+b"
124 // RVA23U64: "-target-feature" "+v"
125 // RVA23U64: "-target-feature" "+zic64b"
126 // RVA23U64: "-target-feature" "+zicbom"
127 // RVA23U64: "-target-feature" "+zicbop"
128 // RVA23U64: "-target-feature" "+zicboz"
129 // RVA23U64: "-target-feature" "+ziccamoa"
130 // RVA23U64: "-target-feature" "+ziccif"
131 // RVA23U64: "-target-feature" "+zicclsm"
132 // RVA23U64: "-target-feature" "+ziccrse"
133 // RVA23U64: "-target-feature" "+zicntr"
134 // RVA23U64: "-target-feature" "+zicond"
135 // RVA23U64: "-target-feature" "+zicsr"
136 // RVA23U64: "-target-feature" "+zihintntl"
137 // RVA23U64: "-target-feature" "+zihintpause"
138 // RVA23U64: "-target-feature" "+zihpm"
139 // RVA23U64: "-target-feature" "+zimop"
140 // RVA23U64: "-target-feature" "+za64rs"
141 // RVA23U64: "-target-feature" "+zawrs"
142 // RVA23U64: "-target-feature" "+zfa"
143 // RVA23U64: "-target-feature" "+zfhmin"
144 // RVA23U64: "-target-feature" "+zcb"
145 // RVA23U64: "-target-feature" "+zcmop"
146 // RVA23U64: "-target-feature" "+zba"
147 // RVA23U64: "-target-feature" "+zbb"
148 // RVA23U64: "-target-feature" "+zbs"
149 // RVA23U64: "-target-feature" "+zkt"
150 // RVA23U64: "-target-feature" "+zvbb"
151 // RVA23U64: "-target-feature" "+zvfhmin"
152 // RVA23U64: "-target-feature" "+zvkt"
153 // RVA23U64: "-target-feature" "+supm"
155 // RUN: %clang --target=riscv64 -### -c %s 2>&1 -march=rva23s64 \
156 // RUN: | FileCheck -check-prefix=RVA23S64 %s
157 // RVA23S64: "-target-feature" "+m"
158 // RVA23S64: "-target-feature" "+a"
159 // RVA23S64: "-target-feature" "+f"
160 // RVA23S64: "-target-feature" "+d"
161 // RVA23S64: "-target-feature" "+c"
162 // RVA23S64: "-target-feature" "+b"
163 // RVA23S64: "-target-feature" "+v"
164 // RVA23S64: "-target-feature" "+h"
165 // RVA23S64: "-target-feature" "+zic64b"
166 // RVA23S64: "-target-feature" "+zicbom"
167 // RVA23S64: "-target-feature" "+zicbop"
168 // RVA23S64: "-target-feature" "+zicboz"
169 // RVA23S64: "-target-feature" "+ziccamoa"
170 // RVA23S64: "-target-feature" "+ziccif"
171 // RVA23S64: "-target-feature" "+zicclsm"
172 // RVA23S64: "-target-feature" "+ziccrse"
173 // RVA23S64: "-target-feature" "+zicntr"
174 // RVA23S64: "-target-feature" "+zicond"
175 // RVA23S64: "-target-feature" "+zicsr"
176 // RVA23S64: "-target-feature" "+zifencei"
177 // RVA23S64: "-target-feature" "+zihintntl"
178 // RVA23S64: "-target-feature" "+zihintpause"
179 // RVA23S64: "-target-feature" "+zihpm"
180 // RVA23S64: "-target-feature" "+zimop"
181 // RVA23S64: "-target-feature" "+za64rs"
182 // RVA23S64: "-target-feature" "+zawrs"
183 // RVA23S64: "-target-feature" "+zfa"
184 // RVA23S64: "-target-feature" "+zfhmin"
185 // RVA23S64: "-target-feature" "+zcb"
186 // RVA23S64: "-target-feature" "+zcmop"
187 // RVA23S64: "-target-feature" "+zba"
188 // RVA23S64: "-target-feature" "+zbb"
189 // RVA23S64: "-target-feature" "+zbs"
190 // RVA23S64: "-target-feature" "+zkt"
191 // RVA23S64: "-target-feature" "+zvbb"
192 // RVA23S64: "-target-feature" "+zvfhmin"
193 // RVA23S64: "-target-feature" "+zvkt"
194 // RVA23S64: "-target-feature" "+sha"
195 // RVA23S64: "-target-feature" "+shcounterenw"
196 // RVA23S64: "-target-feature" "+shgatpa"
197 // RVA23S64: "-target-feature" "+shtvala"
198 // RVA23S64: "-target-feature" "+shvsatpa"
199 // RVA23S64: "-target-feature" "+shvstvala"
200 // RVA23S64: "-target-feature" "+shvstvecd"
201 // RVA23S64: "-target-feature" "+ssccptr"
202 // RVA23S64: "-target-feature" "+sscofpmf"
203 // RVA23S64: "-target-feature" "+sscounterenw"
204 // RVA23S64: "-target-feature" "+ssnpm"
205 // RVA23S64: "-target-feature" "+ssstateen"
206 // RVA23S64: "-target-feature" "+sstc"
207 // RVA23S64: "-target-feature" "+sstvala"
208 // RVA23S64: "-target-feature" "+sstvecd"
209 // RVA23S64: "-target-feature" "+ssu64xl"
210 // RVA23S64: "-target-feature" "+supm"
211 // RVA23S64: "-target-feature" "+svade"
212 // RVA23S64: "-target-feature" "+svbare"
213 // RVA23S64: "-target-feature" "+svinval"
214 // RVA23S64: "-target-feature" "+svnapot"
215 // RVA23S64: "-target-feature" "+svpbmt"
217 // RUN: %clang --target=riscv64 -### -c %s 2>&1 -march=rvb23u64 \
218 // RUN: | FileCheck -check-prefix=RVB23U64 %s
219 // RVB23U64: "-target-feature" "+m"
220 // RVB23U64: "-target-feature" "+a"
221 // RVB23U64: "-target-feature" "+f"
222 // RVB23U64: "-target-feature" "+d"
223 // RVB23U64: "-target-feature" "+c"
224 // RVB23U64: "-target-feature" "+b"
225 // RVB23U64: "-target-feature" "+zic64b"
226 // RVB23U64: "-target-feature" "+zicbom"
227 // RVB23U64: "-target-feature" "+zicbop"
228 // RVB23U64: "-target-feature" "+zicboz"
229 // RVB23U64: "-target-feature" "+ziccamoa"
230 // RVB23U64: "-target-feature" "+ziccif"
231 // RVB23U64: "-target-feature" "+zicclsm"
232 // RVB23U64: "-target-feature" "+ziccrse"
233 // RVB23U64: "-target-feature" "+zicntr"
234 // RVB23U64: "-target-feature" "+zicond"
235 // RVB23U64: "-target-feature" "+zicsr"
236 // RVB23U64: "-target-feature" "+zihintntl"
237 // RVB23U64: "-target-feature" "+zihintpause"
238 // RVB23U64: "-target-feature" "+zihpm"
239 // RVB23U64: "-target-feature" "+zimop"
240 // RVB23U64: "-target-feature" "+za64rs"
241 // RVB23U64: "-target-feature" "+zawrs"
242 // RVB23U64: "-target-feature" "+zfa"
243 // RVB23U64: "-target-feature" "+zcb"
244 // RVB23U64: "-target-feature" "+zcmop"
245 // RVB23U64: "-target-feature" "+zba"
246 // RVB23U64: "-target-feature" "+zbb"
247 // RVB23U64: "-target-feature" "+zbs"
248 // RVB23U64: "-target-feature" "+zkt"
250 // RUN: %clang --target=riscv64 -### -c %s 2>&1 -march=rvb23s64 \
251 // RUN: | FileCheck -check-prefix=RVB23S64 %s
252 // RVB23S64: "-target-feature" "+m"
253 // RVB23S64: "-target-feature" "+a"
254 // RVB23S64: "-target-feature" "+f"
255 // RVB23S64: "-target-feature" "+d"
256 // RVB23S64: "-target-feature" "+c"
257 // RVB23S64: "-target-feature" "+b"
258 // RVB23S64: "-target-feature" "+zic64b"
259 // RVB23S64: "-target-feature" "+zicbom"
260 // RVB23S64: "-target-feature" "+zicbop"
261 // RVB23S64: "-target-feature" "+zicboz"
262 // RVB23S64: "-target-feature" "+ziccamoa"
263 // RVB23S64: "-target-feature" "+ziccif"
264 // RVB23S64: "-target-feature" "+zicclsm"
265 // RVB23S64: "-target-feature" "+ziccrse"
266 // RVB23S64: "-target-feature" "+zicntr"
267 // RVB23S64: "-target-feature" "+zicond"
268 // RVB23S64: "-target-feature" "+zicsr"
269 // RVB23S64: "-target-feature" "+zifencei"
270 // RVB23S64: "-target-feature" "+zihintntl"
271 // RVB23S64: "-target-feature" "+zihintpause"
272 // RVB23S64: "-target-feature" "+zihpm"
273 // RVB23S64: "-target-feature" "+zimop"
274 // RVB23S64: "-target-feature" "+za64rs"
275 // RVB23S64: "-target-feature" "+zawrs"
276 // RVB23S64: "-target-feature" "+zfa"
277 // RVB23S64: "-target-feature" "+zcb"
278 // RVB23S64: "-target-feature" "+zcmop"
279 // RVB23S64: "-target-feature" "+zba"
280 // RVB23S64: "-target-feature" "+zbb"
281 // RVB23S64: "-target-feature" "+zbs"
282 // RVB23S64: "-target-feature" "+zkt"
283 // RVB23S64: "-target-feature" "+ssccptr"
284 // RVB23S64: "-target-feature" "+sscofpmf"
285 // RVB23S64: "-target-feature" "+sscounterenw"
286 // RVB23S64: "-target-feature" "+sstc"
287 // RVB23S64: "-target-feature" "+sstvala"
288 // RVB23S64: "-target-feature" "+sstvecd"
289 // RVB23S64: "-target-feature" "+ssu64xl"
290 // RVB23S64: "-target-feature" "+svade"
291 // RVB23S64: "-target-feature" "+svbare"
292 // RVB23S64: "-target-feature" "+svinval"
293 // RVB23S64: "-target-feature" "+svnapot"
294 // RVB23S64: "-target-feature" "+svpbmt"
296 // RUN: %clang --target=riscv32 -### -c %s 2>&1 -march=rvm23u32 -menable-experimental-extensions \
297 // RUN: | FileCheck -check-prefix=RVM23U32 %s
298 // RVM23U32: "-target-feature" "+m"
299 // RVM23U32: "-target-feature" "+b"
300 // RVM23U32: "-target-feature" "+zicbop"
301 // RVM23U32: "-target-feature" "+zicond"
302 // RVM23U32: "-target-feature" "+zicsr"
303 // RVM23U32: "-target-feature" "+zihintntl"
304 // RVM23U32: "-target-feature" "+zihintpause"
305 // RVM23U32: "-target-feature" "+zimop"
306 // RVM23U32: "-target-feature" "+zce"
307 // RVM23U32: "-target-feature" "+zcmop"
308 // RVM23U32: "-target-feature" "+zba"
309 // RVM23U32: "-target-feature" "+zbb"
310 // RVM23U32: "-target-feature" "+zbs"
312 // RUN: %clang --target=riscv64 -### -c %s 2>&1 -march=rva22u64_zfa \
313 // RUN: | FileCheck -check-prefix=PROFILE-WITH-ADDITIONAL %s
314 // PROFILE-WITH-ADDITIONAL: "-target-feature" "+m"
315 // PROFILE-WITH-ADDITIONAL: "-target-feature" "+a"
316 // PROFILE-WITH-ADDITIONAL: "-target-feature" "+f"
317 // PROFILE-WITH-ADDITIONAL: "-target-feature" "+d"
318 // PROFILE-WITH-ADDITIONAL: "-target-feature" "+c"
319 // PROFILE-WITH-ADDITIONAL: "-target-feature" "+b"
320 // PROFILE-WITH-ADDITIONAL: "-target-feature" "+zicbom"
321 // PROFILE-WITH-ADDITIONAL: "-target-feature" "+zicbop"
322 // PROFILE-WITH-ADDITIONAL: "-target-feature" "+zicboz"
323 // PROFILE-WITH-ADDITIONAL: "-target-feature" "+zihintpause"
324 // PROFILE-WITH-ADDITIONAL: "-target-feature" "+zfa"
325 // PROFILE-WITH-ADDITIONAL: "-target-feature" "+zfhmin"
326 // PROFILE-WITH-ADDITIONAL: "-target-feature" "+zba"
327 // PROFILE-WITH-ADDITIONAL: "-target-feature" "+zbb"
328 // PROFILE-WITH-ADDITIONAL: "-target-feature" "+zbs"
329 // PROFILE-WITH-ADDITIONAL: "-target-feature" "+zkt"
331 // RUN: not %clang --target=riscv64 -### -c %s 2>&1 -march=rva19u64_zfa | FileCheck -check-prefix=INVALID-PROFILE %s
332 // INVALID-PROFILE: error: invalid arch name 'rva19u64_zfa', string must begin with rv32{i,e,g}, rv64{i,e,g}, or a supported profile name
334 // RUN: not %clang --target=riscv64 -### -c %s 2>&1 -march=rva22u64zfa | FileCheck -check-prefix=INVALID-ADDITIONAL %s
335 // INVALID-ADDITIONAL: error: invalid arch name 'rva22u64zfa', additional extensions must be after separator '_'
337 // RUN: not %clang --target=riscv32 -### -c %s 2>&1 -march=rvm23u32 | FileCheck -check-prefix=EXPERIMENTAL-NOFLAG %s
338 // EXPERIMENTAL-NOFLAG: error: invalid arch name 'rvm23u32'
339 // EXPERIMENTAL-NOFLAG: requires '-menable-experimental-extensions' for profile 'rvm23u32'