master
  1const std = @import("std");
  2const Cases = @import("src/Cases.zig");
  3
  4const targets = [_]std.Target.Query{
  5    .{ .cpu_arch = .aarch64, .os_tag = .driverkit, .abi = .none },
  6    .{ .cpu_arch = .aarch64, .os_tag = .freebsd, .abi = .none },
  7    .{ .cpu_arch = .aarch64, .os_tag = .freestanding, .abi = .none },
  8    .{ .cpu_arch = .aarch64, .os_tag = .fuchsia, .abi = .none },
  9    .{ .cpu_arch = .aarch64, .os_tag = .haiku, .abi = .none },
 10    .{ .cpu_arch = .aarch64, .os_tag = .hermit, .abi = .none },
 11    .{ .cpu_arch = .aarch64, .os_tag = .hurd, .abi = .gnu },
 12    .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .none },
 13    .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .simulator },
 14    .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .android },
 15    .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnu },
 16    .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .musl },
 17    .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .none },
 18    .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .ohos },
 19    .{ .cpu_arch = .aarch64, .os_tag = .maccatalyst, .abi = .none },
 20    .{ .cpu_arch = .aarch64, .os_tag = .macos, .abi = .none },
 21    .{ .cpu_arch = .aarch64, .os_tag = .netbsd, .abi = .none },
 22    .{ .cpu_arch = .aarch64, .os_tag = .openbsd, .abi = .none },
 23    .{ .cpu_arch = .aarch64, .os_tag = .rtems, .abi = .none },
 24    .{ .cpu_arch = .aarch64, .os_tag = .serenity, .abi = .none },
 25    .{ .cpu_arch = .aarch64, .os_tag = .tvos, .abi = .none },
 26    .{ .cpu_arch = .aarch64, .os_tag = .tvos, .abi = .simulator },
 27    .{ .cpu_arch = .aarch64, .os_tag = .uefi, .abi = .none },
 28    .{ .cpu_arch = .aarch64, .os_tag = .visionos, .abi = .none },
 29    .{ .cpu_arch = .aarch64, .os_tag = .visionos, .abi = .simulator },
 30    .{ .cpu_arch = .aarch64, .os_tag = .watchos, .abi = .ilp32 },
 31    .{ .cpu_arch = .aarch64, .os_tag = .watchos, .abi = .none },
 32    .{ .cpu_arch = .aarch64, .os_tag = .watchos, .abi = .simulator },
 33    .{ .cpu_arch = .aarch64, .os_tag = .windows, .abi = .gnu },
 34    .{ .cpu_arch = .aarch64, .os_tag = .windows, .abi = .itanium },
 35    .{ .cpu_arch = .aarch64, .os_tag = .windows, .abi = .msvc },
 36
 37    .{ .cpu_arch = .aarch64_be, .os_tag = .freestanding, .abi = .none },
 38    .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .gnu },
 39    .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .musl },
 40    .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .none },
 41    .{ .cpu_arch = .aarch64_be, .os_tag = .netbsd, .abi = .none },
 42
 43    .{ .cpu_arch = .amdgcn, .os_tag = .amdhsa, .abi = .none },
 44    // .{ .cpu_arch = .amdgcn, .os_tag = .amdpal, .abi = .none },
 45    // .{ .cpu_arch = .amdgcn, .os_tag = .mesa3d, .abi = .none },
 46
 47    .{ .cpu_arch = .arc, .os_tag = .freestanding, .abi = .none },
 48    .{ .cpu_arch = .arc, .os_tag = .linux, .abi = .gnu },
 49    .{ .cpu_arch = .arc, .os_tag = .linux, .abi = .none },
 50
 51    .{ .cpu_arch = .arm, .os_tag = .@"3ds", .abi = .eabihf },
 52    .{ .cpu_arch = .arm, .os_tag = .freebsd, .abi = .eabihf },
 53    .{ .cpu_arch = .arm, .os_tag = .freestanding, .abi = .eabi },
 54    .{ .cpu_arch = .arm, .os_tag = .freestanding, .abi = .eabihf },
 55    .{ .cpu_arch = .arm, .os_tag = .haiku, .abi = .eabi },
 56    .{ .cpu_arch = .arm, .os_tag = .haiku, .abi = .eabihf },
 57    .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .androideabi },
 58    .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .eabi },
 59    .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .eabihf },
 60    .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .gnueabi },
 61    .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .gnueabihf },
 62    .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .musleabi },
 63    .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .musleabihf },
 64    .{ .cpu_arch = .arm, .os_tag = .linux, .abi = .ohoseabi },
 65    .{ .cpu_arch = .arm, .os_tag = .netbsd, .abi = .eabi },
 66    .{ .cpu_arch = .arm, .os_tag = .netbsd, .abi = .eabihf },
 67    .{ .cpu_arch = .arm, .os_tag = .openbsd, .abi = .eabi },
 68    .{ .cpu_arch = .arm, .os_tag = .openbsd, .abi = .eabihf },
 69    .{ .cpu_arch = .arm, .os_tag = .rtems, .abi = .eabi },
 70    .{ .cpu_arch = .arm, .os_tag = .rtems, .abi = .eabihf },
 71    // .{ .cpu_arch = .arm, .os_tag = .uefi, .abi = .eabi },
 72    // .{ .cpu_arch = .arm, .os_tag = .uefi, .abi = .eabihf },
 73    .{ .cpu_arch = .arm, .os_tag = .vita, .abi = .eabihf },
 74
 75    .{ .cpu_arch = .armeb, .os_tag = .freestanding, .abi = .eabi },
 76    .{ .cpu_arch = .armeb, .os_tag = .freestanding, .abi = .eabihf },
 77    .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .eabi },
 78    .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .eabihf },
 79    .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .gnueabi },
 80    .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .gnueabihf },
 81    .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .musleabi },
 82    .{ .cpu_arch = .armeb, .os_tag = .linux, .abi = .musleabihf },
 83    .{ .cpu_arch = .armeb, .os_tag = .netbsd, .abi = .eabi },
 84    .{ .cpu_arch = .armeb, .os_tag = .netbsd, .abi = .eabihf },
 85    .{ .cpu_arch = .armeb, .os_tag = .rtems, .abi = .eabi },
 86    .{ .cpu_arch = .armeb, .os_tag = .rtems, .abi = .eabihf },
 87
 88    .{ .cpu_arch = .avr, .os_tag = .freestanding, .abi = .none },
 89    .{ .cpu_arch = .avr, .os_tag = .rtems, .abi = .none },
 90
 91    .{ .cpu_arch = .bpfeb, .os_tag = .freestanding, .abi = .none },
 92
 93    .{ .cpu_arch = .bpfel, .os_tag = .freestanding, .abi = .none },
 94
 95    // .{ .cpu_arch = .csky, .os_tag = .freestanding, .abi = .eabi },
 96    // .{ .cpu_arch = .csky, .os_tag = .freestanding, .abi = .eabihf },
 97    // .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .eabi },
 98    // .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .eabihf },
 99    // .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .gnueabi },
100    // .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .gnueabihf },
101
102    .{ .cpu_arch = .hexagon, .os_tag = .freestanding, .abi = .none },
103    .{ .cpu_arch = .hexagon, .os_tag = .linux, .abi = .none },
104
105    .{ .cpu_arch = .lanai, .os_tag = .freestanding, .abi = .none },
106
107    // .{ .cpu_arch = .loongarch32, .os_tag = .freestanding, .abi = .none },
108    // .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .none },
109    // .{ .cpu_arch = .loongarch32, .os_tag = .uefi, .abi = .none },
110
111    .{ .cpu_arch = .loongarch64, .os_tag = .freestanding, .abi = .none },
112    .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnu },
113    // .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnuf32 },
114    .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnusf },
115    .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .musl },
116    // .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .muslf32 },
117    .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .muslsf },
118    .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .none },
119    // .{ .cpu_arch = .loongarch64, .os_tag = .uefi, .abi = .none },
120
121    .{ .cpu_arch = .m68k, .os_tag = .freestanding, .abi = .none },
122    .{ .cpu_arch = .m68k, .os_tag = .haiku, .abi = .none },
123    .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .gnu },
124    .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .musl },
125    .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .none },
126    .{ .cpu_arch = .m68k, .os_tag = .netbsd, .abi = .none },
127    .{ .cpu_arch = .m68k, .os_tag = .rtems, .abi = .none },
128
129    .{ .cpu_arch = .mips, .os_tag = .freestanding, .abi = .eabi },
130    .{ .cpu_arch = .mips, .os_tag = .freestanding, .abi = .eabihf },
131    .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .eabi },
132    .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .eabihf },
133    .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .gnueabi },
134    .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .gnueabihf },
135    .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .musleabi },
136    .{ .cpu_arch = .mips, .os_tag = .linux, .abi = .musleabihf },
137    .{ .cpu_arch = .mips, .os_tag = .netbsd, .abi = .eabi },
138    .{ .cpu_arch = .mips, .os_tag = .netbsd, .abi = .eabihf },
139    .{ .cpu_arch = .mips, .os_tag = .rtems, .abi = .eabi },
140    .{ .cpu_arch = .mips, .os_tag = .rtems, .abi = .eabihf },
141
142    .{ .cpu_arch = .mipsel, .os_tag = .freestanding, .abi = .eabi },
143    .{ .cpu_arch = .mipsel, .os_tag = .freestanding, .abi = .eabihf },
144    .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .eabi },
145    .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .eabihf },
146    .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .gnueabi },
147    .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .gnueabihf },
148    .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .musleabi },
149    .{ .cpu_arch = .mipsel, .os_tag = .linux, .abi = .musleabihf },
150    .{ .cpu_arch = .mipsel, .os_tag = .netbsd, .abi = .eabi },
151    .{ .cpu_arch = .mipsel, .os_tag = .netbsd, .abi = .eabihf },
152    .{ .cpu_arch = .mipsel, .os_tag = .rtems, .abi = .eabi },
153    .{ .cpu_arch = .mipsel, .os_tag = .rtems, .abi = .eabihf },
154
155    .{ .cpu_arch = .mips64, .os_tag = .freestanding, .abi = .none },
156    .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .gnuabi64 },
157    .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .gnuabin32 },
158    .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .muslabi64 },
159    .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .muslabin32 },
160    .{ .cpu_arch = .mips64, .os_tag = .linux, .abi = .none },
161    .{ .cpu_arch = .mips64, .os_tag = .openbsd, .abi = .none },
162
163    .{ .cpu_arch = .mips64el, .os_tag = .freestanding, .abi = .none },
164    .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .gnuabi64 },
165    .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .gnuabin32 },
166    .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .muslabi64 },
167    .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .muslabin32 },
168    .{ .cpu_arch = .mips64el, .os_tag = .linux, .abi = .none },
169    .{ .cpu_arch = .mips64el, .os_tag = .openbsd, .abi = .none },
170
171    .{ .cpu_arch = .msp430, .os_tag = .freestanding, .abi = .none },
172
173    .{ .cpu_arch = .nvptx, .os_tag = .cuda, .abi = .none },
174    .{ .cpu_arch = .nvptx, .os_tag = .nvcl, .abi = .none },
175    .{ .cpu_arch = .nvptx64, .os_tag = .cuda, .abi = .none },
176    .{ .cpu_arch = .nvptx64, .os_tag = .nvcl, .abi = .none },
177
178    .{ .cpu_arch = .powerpc, .os_tag = .freestanding, .abi = .eabi },
179    .{ .cpu_arch = .powerpc, .os_tag = .freestanding, .abi = .eabihf },
180    .{ .cpu_arch = .powerpc, .os_tag = .haiku, .abi = .eabi },
181    .{ .cpu_arch = .powerpc, .os_tag = .haiku, .abi = .eabihf },
182    .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .eabi },
183    .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .eabihf },
184    .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .gnueabi },
185    .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .gnueabihf },
186    .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .musleabi },
187    .{ .cpu_arch = .powerpc, .os_tag = .linux, .abi = .musleabihf },
188    .{ .cpu_arch = .powerpc, .os_tag = .netbsd, .abi = .eabi },
189    .{ .cpu_arch = .powerpc, .os_tag = .netbsd, .abi = .eabihf },
190    .{ .cpu_arch = .powerpc, .os_tag = .openbsd, .abi = .eabi },
191    .{ .cpu_arch = .powerpc, .os_tag = .openbsd, .abi = .eabihf },
192    .{ .cpu_arch = .powerpc, .os_tag = .rtems, .abi = .eabi },
193    .{ .cpu_arch = .powerpc, .os_tag = .rtems, .abi = .eabihf },
194
195    .{ .cpu_arch = .powerpcle, .os_tag = .freestanding, .abi = .eabi },
196    .{ .cpu_arch = .powerpcle, .os_tag = .freestanding, .abi = .eabihf },
197
198    .{ .cpu_arch = .powerpc64, .os_tag = .freebsd, .abi = .none },
199    .{ .cpu_arch = .powerpc64, .os_tag = .freestanding, .abi = .none },
200    .{ .cpu_arch = .powerpc64, .os_tag = .linux, .abi = .gnu },
201    .{ .cpu_arch = .powerpc64, .os_tag = .linux, .abi = .musl },
202    .{ .cpu_arch = .powerpc64, .os_tag = .linux, .abi = .none },
203    .{ .cpu_arch = .powerpc64, .os_tag = .openbsd, .abi = .none },
204    .{ .cpu_arch = .powerpc64, .os_tag = .rtems, .abi = .none },
205
206    .{ .cpu_arch = .powerpc64le, .os_tag = .freebsd, .abi = .none },
207    .{ .cpu_arch = .powerpc64le, .os_tag = .freestanding, .abi = .none },
208    .{ .cpu_arch = .powerpc64le, .os_tag = .linux, .abi = .gnu },
209    .{ .cpu_arch = .powerpc64le, .os_tag = .linux, .abi = .musl },
210    .{ .cpu_arch = .powerpc64le, .os_tag = .linux, .abi = .none },
211
212    .{ .cpu_arch = .riscv32, .os_tag = .freestanding, .abi = .none },
213    .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .gnu },
214    .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .musl },
215    .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .none },
216    .{ .cpu_arch = .riscv32, .os_tag = .rtems, .abi = .none },
217    // .{ .cpu_arch = .riscv32, .os_tag = .uefi, .abi = .none },
218
219    // .{ .cpu_arch = .riscv32be, .os_tag = .freestanding, .abi = .none },
220
221    .{ .cpu_arch = .riscv64, .os_tag = .freebsd, .abi = .none },
222    .{ .cpu_arch = .riscv64, .os_tag = .freestanding, .abi = .none },
223    .{ .cpu_arch = .riscv64, .os_tag = .fuchsia, .abi = .none },
224    .{ .cpu_arch = .riscv64, .os_tag = .haiku, .abi = .none },
225    .{ .cpu_arch = .riscv64, .os_tag = .hermit, .abi = .none },
226    .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .android },
227    .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .gnu },
228    .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .musl },
229    .{ .cpu_arch = .riscv64, .os_tag = .linux, .abi = .none },
230    .{ .cpu_arch = .riscv64, .os_tag = .openbsd, .abi = .none },
231    .{ .cpu_arch = .riscv64, .os_tag = .rtems, .abi = .none },
232    .{ .cpu_arch = .riscv64, .os_tag = .serenity, .abi = .none },
233    // .{ .cpu_arch = .riscv64, .os_tag = .uefi, .abi = .none },
234
235    // .{ .cpu_arch = .riscv64, .os_tag = .freestanding, .abi = .none },
236
237    .{ .cpu_arch = .s390x, .os_tag = .freestanding, .abi = .none },
238    .{ .cpu_arch = .s390x, .os_tag = .linux, .abi = .gnu },
239    .{ .cpu_arch = .s390x, .os_tag = .linux, .abi = .none },
240
241    .{ .cpu_arch = .sparc, .os_tag = .freestanding, .abi = .none },
242    .{ .cpu_arch = .sparc, .os_tag = .linux, .abi = .gnu },
243    .{ .cpu_arch = .sparc, .os_tag = .linux, .abi = .none },
244    .{ .cpu_arch = .sparc, .os_tag = .netbsd, .abi = .none },
245    .{ .cpu_arch = .sparc, .os_tag = .rtems, .abi = .none },
246
247    .{ .cpu_arch = .sparc64, .os_tag = .freestanding, .abi = .none },
248    .{ .cpu_arch = .sparc64, .os_tag = .haiku, .abi = .none },
249    .{ .cpu_arch = .sparc64, .os_tag = .linux, .abi = .gnu },
250    .{ .cpu_arch = .sparc64, .os_tag = .linux, .abi = .none },
251    .{ .cpu_arch = .sparc64, .os_tag = .netbsd, .abi = .none },
252    .{ .cpu_arch = .sparc64, .os_tag = .openbsd, .abi = .none },
253    .{ .cpu_arch = .sparc64, .os_tag = .rtems, .abi = .none },
254
255    .{ .cpu_arch = .thumb, .os_tag = .freestanding, .abi = .eabi },
256    .{ .cpu_arch = .thumb, .os_tag = .freestanding, .abi = .eabihf },
257    .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .eabi },
258    .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .eabihf },
259    .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .musleabi },
260    .{ .cpu_arch = .thumb, .os_tag = .linux, .abi = .musleabihf },
261    .{ .cpu_arch = .thumb, .os_tag = .rtems, .abi = .eabi },
262    .{ .cpu_arch = .thumb, .os_tag = .rtems, .abi = .eabihf },
263    .{ .cpu_arch = .thumb, .os_tag = .vita, .abi = .eabihf },
264    .{ .cpu_arch = .thumb, .os_tag = .windows, .abi = .gnu },
265    .{ .cpu_arch = .thumb, .os_tag = .windows, .abi = .itanium },
266    .{ .cpu_arch = .thumb, .os_tag = .windows, .abi = .msvc },
267
268    .{ .cpu_arch = .thumbeb, .os_tag = .freestanding, .abi = .eabi },
269    .{ .cpu_arch = .thumbeb, .os_tag = .freestanding, .abi = .eabihf },
270    .{ .cpu_arch = .thumbeb, .os_tag = .linux, .abi = .eabi },
271    .{ .cpu_arch = .thumbeb, .os_tag = .linux, .abi = .eabihf },
272    .{ .cpu_arch = .thumbeb, .os_tag = .linux, .abi = .musleabi },
273    .{ .cpu_arch = .thumbeb, .os_tag = .linux, .abi = .musleabihf },
274    .{ .cpu_arch = .thumbeb, .os_tag = .rtems, .abi = .eabi },
275    .{ .cpu_arch = .thumbeb, .os_tag = .rtems, .abi = .eabihf },
276
277    .{ .cpu_arch = .ve, .os_tag = .freestanding, .abi = .none },
278    .{ .cpu_arch = .ve, .os_tag = .linux, .abi = .none },
279
280    .{ .cpu_arch = .wasm32, .os_tag = .emscripten, .abi = .none },
281    .{ .cpu_arch = .wasm32, .os_tag = .freestanding, .abi = .none },
282    .{ .cpu_arch = .wasm32, .os_tag = .wasi, .abi = .musl },
283    .{ .cpu_arch = .wasm32, .os_tag = .wasi, .abi = .none },
284
285    .{ .cpu_arch = .wasm64, .os_tag = .emscripten, .abi = .none },
286    .{ .cpu_arch = .wasm64, .os_tag = .freestanding, .abi = .none },
287    .{ .cpu_arch = .wasm64, .os_tag = .wasi, .abi = .musl },
288    .{ .cpu_arch = .wasm64, .os_tag = .wasi, .abi = .none },
289
290    .{ .cpu_arch = .x86, .os_tag = .freestanding, .abi = .none },
291    .{ .cpu_arch = .x86, .os_tag = .haiku, .abi = .none },
292    .{ .cpu_arch = .x86, .os_tag = .hurd, .abi = .gnu },
293    .{ .cpu_arch = .x86, .os_tag = .illumos, .abi = .none },
294    .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .android },
295    .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .gnu },
296    .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .musl },
297    .{ .cpu_arch = .x86, .os_tag = .linux, .abi = .none },
298    .{ .cpu_arch = .x86, .os_tag = .netbsd, .abi = .none },
299    .{ .cpu_arch = .x86, .os_tag = .openbsd, .abi = .none },
300    .{ .cpu_arch = .x86, .os_tag = .rtems, .abi = .none },
301    .{ .cpu_arch = .x86, .os_tag = .uefi, .abi = .none },
302    .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .gnu },
303    .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .itanium },
304    .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .msvc },
305
306    .{ .cpu_arch = .x86_64, .os_tag = .freebsd, .abi = .none },
307    .{ .cpu_arch = .x86_64, .os_tag = .freestanding, .abi = .none },
308    .{
309        .cpu_arch = .x86_64,
310        .os_tag = .freestanding,
311        .abi = .none,
312        .cpu_features_add = std.Target.x86.featureSet(&.{.soft_float}),
313        .cpu_features_sub = std.Target.x86.featureSet(&.{ .mmx, .sse, .sse2, .avx, .avx2 }),
314    },
315    .{ .cpu_arch = .x86_64, .os_tag = .fuchsia, .abi = .none },
316    .{ .cpu_arch = .x86_64, .os_tag = .dragonfly, .abi = .none },
317    .{ .cpu_arch = .x86_64, .os_tag = .driverkit, .abi = .none },
318    .{ .cpu_arch = .x86_64, .os_tag = .haiku, .abi = .none },
319    .{ .cpu_arch = .x86_64, .os_tag = .hermit, .abi = .none },
320    .{ .cpu_arch = .x86_64, .os_tag = .hurd, .abi = .gnu },
321    .{ .cpu_arch = .x86_64, .os_tag = .illumos, .abi = .none },
322    .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .android },
323    .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .gnu },
324    .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .gnux32 },
325    .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .musl },
326    .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .muslx32 },
327    .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .none },
328    .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .ohos },
329    .{ .cpu_arch = .x86_64, .os_tag = .maccatalyst, .abi = .none },
330    .{ .cpu_arch = .x86_64, .os_tag = .macos, .abi = .none },
331    .{ .cpu_arch = .x86_64, .os_tag = .netbsd, .abi = .none },
332    .{ .cpu_arch = .x86_64, .os_tag = .openbsd, .abi = .none },
333    .{ .cpu_arch = .x86_64, .os_tag = .rtems, .abi = .none },
334    .{ .cpu_arch = .x86_64, .os_tag = .serenity, .abi = .none },
335    .{ .cpu_arch = .x86_64, .os_tag = .uefi, .abi = .none },
336    .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .gnu },
337    .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .itanium },
338    .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .msvc },
339
340    .{ .cpu_arch = .xcore, .os_tag = .freestanding, .abi = .none },
341
342    // .{ .cpu_arch = .xtensa, .os_tag = .freestanding, .abi = .none },
343    // .{ .cpu_arch = .xtensa, .os_tag = .linux, .abi = .none },
344};
345
346pub fn addCases(
347    ctx: *Cases,
348    build_options: @import("cases.zig").BuildOptions,
349    b: *std.Build,
350) !void {
351    if (!build_options.enable_llvm) return;
352    for (targets) |target_query| {
353        if (target_query.cpu_arch) |arch| switch (arch) {
354            .m68k => if (!build_options.llvm_has_m68k) continue,
355            .csky => if (!build_options.llvm_has_csky) continue,
356            .arc => if (!build_options.llvm_has_arc) continue,
357            .xtensa => if (!build_options.llvm_has_xtensa) continue,
358            else => {},
359        };
360        var case = ctx.addObjLlvm("llvm_targets", b.resolveTargetQuery(target_query));
361        case.addCompile("");
362    }
363}