authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-07-31 18:10:28-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-07-31 18:10:28-07:00
log70d39123908e29cde9fbfb540869e03ab86694e3
tree00461d726a66cc57de7173173c66823d51727ae6
parentd46446e4dfade96fe0db773ce4d8d1b7154cae92

update Target, CPU, OS, ABI, etc. to LLVM 15


15 files changed, 306 insertions(+), 56 deletions(-)

lib/std/target.zig+56-2
......@@ -40,9 +40,11 @@ pub const Target = struct {
4040 nvcl,
4141 amdhsa,
4242 ps4,
43 ps5,
4344 elfiamcu,
4445 tvos,
4546 watchos,
47 driverkit,
4648 mesa3d,
4749 contiki,
4850 amdpal,
......@@ -50,6 +52,7 @@ pub const Target = struct {
5052 hurd,
5153 wasi,
5254 emscripten,
55 shadermodel,
5356 uefi,
5457 opencl,
5558 glsl450,
......@@ -244,6 +247,7 @@ pub const Target = struct {
244247 .nvcl,
245248 .amdhsa,
246249 .ps4,
250 .ps5,
247251 .elfiamcu,
248252 .mesa3d,
249253 .contiki,
......@@ -252,6 +256,8 @@ pub const Target = struct {
252256 .hurd,
253257 .wasi,
254258 .emscripten,
259 .driverkit,
260 .shadermodel,
255261 .uefi,
256262 .opencl, // TODO: OpenCL versions
257263 .glsl450, // TODO: GLSL versions
......@@ -419,6 +425,7 @@ pub const Target = struct {
419425 .nvcl,
420426 .amdhsa,
421427 .ps4,
428 .ps5,
422429 .elfiamcu,
423430 .mesa3d,
424431 .contiki,
......@@ -427,6 +434,8 @@ pub const Target = struct {
427434 .hurd,
428435 .wasi,
429436 .emscripten,
437 .driverkit,
438 .shadermodel,
430439 .uefi,
431440 .opencl,
432441 .glsl450,
......@@ -481,6 +490,21 @@ pub const Target = struct {
481490 coreclr,
482491 simulator,
483492 macabi,
493 pixel,
494 vertex,
495 geometry,
496 hull,
497 domain,
498 compute,
499 library,
500 raygeneration,
501 intersection,
502 anyhit,
503 closesthit,
504 miss,
505 callable,
506 mesh,
507 amplification,
484508
485509 pub fn default(arch: Cpu.Arch, target_os: Os) Abi {
486510 if (arch.isWasm()) {
......@@ -502,6 +526,7 @@ pub const Target = struct {
502526 .nvcl,
503527 .amdhsa,
504528 .ps4,
529 .ps5,
505530 .elfiamcu,
506531 .mesa3d,
507532 .contiki,
......@@ -531,6 +556,8 @@ pub const Target = struct {
531556 .ios,
532557 .tvos,
533558 .watchos,
559 .driverkit,
560 .shadermodel,
534561 => return .none,
535562 }
536563 }
......@@ -563,16 +590,18 @@ pub const Target = struct {
563590 pub const ObjectFormat = enum {
564591 /// Common Object File Format (Windows)
565592 coff,
593 /// DirectX Container
594 dxcontainer,
566595 /// Executable and Linking Format
567596 elf,
568597 /// macOS relocatables
569598 macho,
599 /// Standard, Portable Intermediate Representation V
600 spirv,
570601 /// WebAssembly
571602 wasm,
572603 /// C source code
573604 c,
574 /// Standard, Portable Intermediate Representation V
575 spirv,
576605 /// Intel IHEX
577606 hex,
578607 /// Machine code with no metadata.
......@@ -592,6 +621,7 @@ pub const Target = struct {
592621 .raw => ".bin",
593622 .plan9 => plan9Ext(cpu_arch),
594623 .nvptx => ".ptx",
624 .dxcontainer => @panic("TODO what's the extension for these?"),
595625 };
596626 }
597627 };
......@@ -769,7 +799,10 @@ pub const Target = struct {
769799 bpfel,
770800 bpfeb,
771801 csky,
802 dxil,
772803 hexagon,
804 loongarch32,
805 loongarch64,
773806 m68k,
774807 mips,
775808 mipsel,
......@@ -920,6 +953,7 @@ pub const Target = struct {
920953 .arm => .ARM,
921954 .armeb => .ARM,
922955 .hexagon => .HEXAGON,
956 .dxil => .NONE,
923957 .m68k => .@"68K",
924958 .le32 => .NONE,
925959 .mips => .MIPS,
......@@ -970,6 +1004,8 @@ pub const Target = struct {
9701004 .spu_2 => .SPU_2,
9711005 .spirv32 => .NONE,
9721006 .spirv64 => .NONE,
1007 .loongarch32 => .NONE,
1008 .loongarch64 => .NONE,
9731009 };
9741010 }
9751011
......@@ -980,6 +1016,7 @@ pub const Target = struct {
9801016 .arc => .Unknown,
9811017 .arm => .ARM,
9821018 .armeb => .Unknown,
1019 .dxil => .Unknown,
9831020 .hexagon => .Unknown,
9841021 .m68k => .Unknown,
9851022 .le32 => .Unknown,
......@@ -1031,6 +1068,8 @@ pub const Target = struct {
10311068 .spu_2 => .Unknown,
10321069 .spirv32 => .Unknown,
10331070 .spirv64 => .Unknown,
1071 .loongarch32 => .Unknown,
1072 .loongarch64 => .Unknown,
10341073 };
10351074 }
10361075
......@@ -1079,6 +1118,9 @@ pub const Target = struct {
10791118 // GPU bitness is opaque. For now, assume little endian.
10801119 .spirv32,
10811120 .spirv64,
1121 .dxil,
1122 .loongarch32,
1123 .loongarch64,
10821124 => .Little,
10831125
10841126 .arc,
......@@ -1139,6 +1181,8 @@ pub const Target = struct {
11391181 .renderscript32,
11401182 .aarch64_32,
11411183 .spirv32,
1184 .loongarch32,
1185 .dxil,
11421186 => return 32,
11431187
11441188 .aarch64,
......@@ -1163,6 +1207,7 @@ pub const Target = struct {
11631207 .s390x,
11641208 .ve,
11651209 .spirv64,
1210 .loongarch64,
11661211 => return 64,
11671212 }
11681213 }
......@@ -1636,6 +1681,9 @@ pub const Target = struct {
16361681 .renderscript32,
16371682 .renderscript64,
16381683 .ve,
1684 .dxil,
1685 .loongarch32,
1686 .loongarch64,
16391687 => return result,
16401688 },
16411689
......@@ -1678,12 +1726,15 @@ pub const Target = struct {
16781726 .nvcl,
16791727 .amdhsa,
16801728 .ps4,
1729 .ps5,
16811730 .elfiamcu,
16821731 .mesa3d,
16831732 .contiki,
16841733 .amdpal,
16851734 .hermit,
16861735 .hurd,
1736 .driverkit,
1737 .shadermodel,
16871738 => return result,
16881739 }
16891740 }
......@@ -1852,6 +1903,9 @@ pub const Target = struct {
18521903 .renderscript64,
18531904 .ve,
18541905 .spirv64,
1906 .dxil,
1907 .loongarch32,
1908 .loongarch64,
18551909 => 16,
18561910 };
18571911 }
lib/std/zig.zig+1
......@@ -190,6 +190,7 @@ pub fn binNameAlloc(allocator: std.mem.Allocator, options: BinNameOptions) error
190190 .Lib => return std.fmt.allocPrint(allocator, "{s}{s}.a", .{ target.libPrefix(), root_name }),
191191 },
192192 .nvptx => return std.fmt.allocPrint(allocator, "{s}", .{root_name}),
193 .dxcontainer => @panic("TODO what's the file extension for these?"),
193194 }
194195}
195196
lib/std/zig/CrossTarget.zig+6
......@@ -118,6 +118,7 @@ fn updateOsVersionRange(self: *CrossTarget, os: Target.Os) void {
118118 .nvcl,
119119 .amdhsa,
120120 .ps4,
121 .ps5,
121122 .elfiamcu,
122123 .mesa3d,
123124 .contiki,
......@@ -126,6 +127,8 @@ fn updateOsVersionRange(self: *CrossTarget, os: Target.Os) void {
126127 .hurd,
127128 .wasi,
128129 .emscripten,
130 .driverkit,
131 .shadermodel,
129132 .uefi,
130133 .opencl,
131134 .glsl450,
......@@ -663,6 +666,7 @@ fn parseOs(result: *CrossTarget, diags: *ParseOptions.Diagnostics, text: []const
663666 .nvcl,
664667 .amdhsa,
665668 .ps4,
669 .ps5,
666670 .elfiamcu,
667671 .mesa3d,
668672 .contiki,
......@@ -676,6 +680,8 @@ fn parseOs(result: *CrossTarget, diags: *ParseOptions.Diagnostics, text: []const
676680 .glsl450,
677681 .vulkan,
678682 .plan9,
683 .driverkit,
684 .shadermodel,
679685 .other,
680686 => return error.InvalidOperatingSystemVersion,
681687
src/clang.zig+14-9
......@@ -859,7 +859,7 @@ pub const StmtExpr = opaque {
859859
860860pub const StringLiteral = opaque {
861861 pub const getKind = ZigClangStringLiteral_getKind;
862 extern fn ZigClangStringLiteral_getKind(*const StringLiteral) StringLiteral_StringKind;
862 extern fn ZigClangStringLiteral_getKind(*const StringLiteral) CharacterLiteral_CharacterKind;
863863
864864 pub const getCodeUnit = ZigClangStringLiteral_getCodeUnit;
865865 extern fn ZigClangStringLiteral_getCodeUnit(*const StringLiteral, usize) u32;
......@@ -1117,6 +1117,7 @@ pub const TypeClass = enum(c_int) {
11171117 VariableArray,
11181118 Atomic,
11191119 Attributed,
1120 BTFTagAttributed,
11201121 BitInt,
11211122 BlockPointer,
11221123 Builtin,
......@@ -1202,25 +1203,33 @@ const StmtClass = enum(c_int) {
12021203 OMPForDirectiveClass,
12031204 OMPForSimdDirectiveClass,
12041205 OMPGenericLoopDirectiveClass,
1206 OMPMaskedTaskLoopDirectiveClass,
1207 OMPMaskedTaskLoopSimdDirectiveClass,
12051208 OMPMasterTaskLoopDirectiveClass,
12061209 OMPMasterTaskLoopSimdDirectiveClass,
12071210 OMPParallelForDirectiveClass,
12081211 OMPParallelForSimdDirectiveClass,
1212 OMPParallelGenericLoopDirectiveClass,
1213 OMPParallelMaskedTaskLoopDirectiveClass,
1214 OMPParallelMaskedTaskLoopSimdDirectiveClass,
12091215 OMPParallelMasterTaskLoopDirectiveClass,
12101216 OMPParallelMasterTaskLoopSimdDirectiveClass,
12111217 OMPSimdDirectiveClass,
12121218 OMPTargetParallelForSimdDirectiveClass,
1219 OMPTargetParallelGenericLoopDirectiveClass,
12131220 OMPTargetSimdDirectiveClass,
12141221 OMPTargetTeamsDistributeDirectiveClass,
12151222 OMPTargetTeamsDistributeParallelForDirectiveClass,
12161223 OMPTargetTeamsDistributeParallelForSimdDirectiveClass,
12171224 OMPTargetTeamsDistributeSimdDirectiveClass,
1225 OMPTargetTeamsGenericLoopDirectiveClass,
12181226 OMPTaskLoopDirectiveClass,
12191227 OMPTaskLoopSimdDirectiveClass,
12201228 OMPTeamsDistributeDirectiveClass,
12211229 OMPTeamsDistributeParallelForDirectiveClass,
12221230 OMPTeamsDistributeParallelForSimdDirectiveClass,
12231231 OMPTeamsDistributeSimdDirectiveClass,
1232 OMPTeamsGenericLoopDirectiveClass,
12241233 OMPTileDirectiveClass,
12251234 OMPUnrollDirectiveClass,
12261235 OMPMaskedDirectiveClass,
......@@ -1228,6 +1237,7 @@ const StmtClass = enum(c_int) {
12281237 OMPMetaDirectiveClass,
12291238 OMPOrderedDirectiveClass,
12301239 OMPParallelDirectiveClass,
1240 OMPParallelMaskedDirectiveClass,
12311241 OMPParallelMasterDirectiveClass,
12321242 OMPParallelSectionsDirectiveClass,
12331243 OMPScanDirectiveClass,
......@@ -1532,6 +1542,7 @@ pub const DeclKind = enum(c_int) {
15321542 OMPDeclareMapper,
15331543 OMPDeclareReduction,
15341544 TemplateParamObject,
1545 UnnamedGlobalConstant,
15351546 UnresolvedUsingValue,
15361547 OMPAllocate,
15371548 OMPRequires,
......@@ -1805,6 +1816,8 @@ pub const CallingConv = enum(c_int) {
18051816 PreserveMost,
18061817 PreserveAll,
18071818 AArch64VectorCall,
1819 AArch64SVEPCS,
1820 AMDGPUKernelCall,
18081821};
18091822
18101823pub const StorageClass = enum(c_int) {
......@@ -1826,14 +1839,6 @@ pub const APFloat_roundingMode = enum(i8) {
18261839 Invalid = -1,
18271840};
18281841
1829pub const StringLiteral_StringKind = enum(c_int) {
1830 Ascii,
1831 Wide,
1832 UTF8,
1833 UTF16,
1834 UTF32,
1835};
1836
18371842pub const CharacterLiteral_CharacterKind = enum(c_int) {
18381843 Ascii,
18391844 Wide,
src/codegen/llvm.zig+24
......@@ -41,7 +41,10 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![:0]u8 {
4141 .bpfel => "bpfel",
4242 .bpfeb => "bpfeb",
4343 .csky => "csky",
44 .dxil => "dxil",
4445 .hexagon => "hexagon",
46 .loongarch32 => "loongarch32",
47 .loongarch64 => "loongarch64",
4548 .m68k => "m68k",
4649 .mips => "mips",
4750 .mipsel => "mipsel",
......@@ -116,6 +119,7 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![:0]u8 {
116119 .nvcl => "nvcl",
117120 .amdhsa => "amdhsa",
118121 .ps4 => "ps4",
122 .ps5 => "ps5",
119123 .elfiamcu => "elfiamcu",
120124 .mesa3d => "mesa3d",
121125 .contiki => "contiki",
......@@ -129,6 +133,8 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![:0]u8 {
129133 .ios => "ios",
130134 .tvos => "tvos",
131135 .watchos => "watchos",
136 .driverkit => "driverkit",
137 .shadermodel => "shadermodel",
132138 .opencl,
133139 .glsl450,
134140 .vulkan,
......@@ -171,6 +177,21 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![:0]u8 {
171177 .coreclr => "coreclr",
172178 .simulator => "simulator",
173179 .macabi => "macabi",
180 .pixel => "pixel",
181 .vertex => "vertex",
182 .geometry => "geometry",
183 .hull => "hull",
184 .domain => "domain",
185 .compute => "compute",
186 .library => "library",
187 .raygeneration => "raygeneration",
188 .intersection => "intersection",
189 .anyhit => "anyhit",
190 .closesthit => "closesthit",
191 .miss => "miss",
192 .callable => "callable",
193 .mesh => "mesh",
194 .amplification => "amplification",
174195 };
175196 try llvm_triple.appendSlice(llvm_abi);
176197
......@@ -9030,6 +9051,9 @@ fn initializeLLVMTarget(arch: std.Target.Cpu.Arch) void {
90309051 .kalimba,
90319052 .renderscript32,
90329053 .renderscript64,
9054 .dxil,
9055 .loongarch32,
9056 .loongarch64,
90339057 => {},
90349058
90359059 .spu_2 => unreachable, // LLVM does not support this backend
src/codegen/llvm/bindings.zig+10
......@@ -1212,9 +1212,11 @@ pub const LinkWasm = ZigLLDLinkWasm;
12121212pub const ObjectFormatType = enum(c_int) {
12131213 Unknown,
12141214 COFF,
1215 DXContainer,
12151216 ELF,
12161217 GOFF,
12171218 MachO,
1219 SPIRV,
12181220 Wasm,
12191221 XCOFF,
12201222};
......@@ -1254,9 +1256,11 @@ pub const OSType = enum(c_int) {
12541256 NVCL,
12551257 AMDHSA,
12561258 PS4,
1259 PS5,
12571260 ELFIAMCU,
12581261 TvOS,
12591262 WatchOS,
1263 DriverKit,
12601264 Mesa3D,
12611265 Contiki,
12621266 AMDPAL,
......@@ -1264,6 +1268,7 @@ pub const OSType = enum(c_int) {
12641268 Hurd,
12651269 WASI,
12661270 Emscripten,
1271 ShaderModel,
12671272};
12681273
12691274pub const ArchType = enum(c_int) {
......@@ -1278,7 +1283,10 @@ pub const ArchType = enum(c_int) {
12781283 bpfel,
12791284 bpfeb,
12801285 csky,
1286 dxil,
12811287 hexagon,
1288 loongarch32,
1289 loongarch64,
12821290 m68k,
12831291 mips,
12841292 mipsel,
......@@ -1314,6 +1322,8 @@ pub const ArchType = enum(c_int) {
13141322 hsail64,
13151323 spir,
13161324 spir64,
1325 spirv32,
1326 spirv64,
13171327 kalimba,
13181328 shave,
13191329 lanai,
src/link.zig+3
......@@ -290,6 +290,7 @@ pub const File = struct {
290290 .nvptx => &(try NvPtx.createEmpty(allocator, options)).base,
291291 .hex => return error.HexObjectFormatUnimplemented,
292292 .raw => return error.RawObjectFormatUnimplemented,
293 .dxcontainer => return error.DirectXContainerObjectFormatUnimplemented,
293294 };
294295 }
295296 const emit = options.emit.?;
......@@ -309,6 +310,7 @@ pub const File = struct {
309310 .nvptx => &(try NvPtx.createEmpty(allocator, options)).base,
310311 .hex => return error.HexObjectFormatUnimplemented,
311312 .raw => return error.RawObjectFormatUnimplemented,
313 .dxcontainer => return error.DirectXContainerObjectFormatUnimplemented,
312314 };
313315 }
314316 // Open a temporary object file, not the final output file because we
......@@ -330,6 +332,7 @@ pub const File = struct {
330332 .nvptx => &(try NvPtx.openPath(allocator, sub_path, options)).base,
331333 .hex => return error.HexObjectFormatUnimplemented,
332334 .raw => return error.RawObjectFormatUnimplemented,
335 .dxcontainer => return error.DirectXContainerObjectFormatUnimplemented,
333336 };
334337
335338 if (use_lld) {
src/stage1/stage1.h+3
......@@ -83,9 +83,11 @@ enum Os {
8383 OsNVCL, // NVIDIA OpenCL
8484 OsAMDHSA, // AMD HSA Runtime
8585 OsPS4,
86 OsPS5,
8687 OsELFIAMCU,
8788 OsTvOS, // Apple tvOS
8889 OsWatchOS, // Apple watchOS
90 OsDriverKit, // Apple DriverKit
8991 OsMesa3D,
9092 OsContiki,
9193 OsAMDPAL,
......@@ -93,6 +95,7 @@ enum Os {
9395 OsHurd,
9496 OsWASI,
9597 OsEmscripten,
98 OsShaderModel, // DirectX ShaderModel
9699 OsUefi,
97100 OsOpenCL,
98101 OsGLSL450,
src/stage1/target.cpp+55-2
......@@ -24,7 +24,10 @@ static const ZigLLVM_ArchType arch_list[] = {
2424 ZigLLVM_bpfel, // eBPF or extended BPF or 64-bit BPF (little endian)
2525 ZigLLVM_bpfeb, // eBPF or extended BPF or 64-bit BPF (big endian)
2626 ZigLLVM_csky, // CSKY: csky
27 ZigLLVM_dxil, // DXIL 32-bit DirectX bytecode
2728 ZigLLVM_hexagon, // Hexagon: hexagon
29 ZigLLVM_loongarch32, // LoongArch (32-bit): loongarch32
30 ZigLLVM_loongarch64, // LoongArch (64-bit): loongarch64
2831 ZigLLVM_m68k, // M68k: Motorola 680x0 family
2932 ZigLLVM_mips, // MIPS: mips, mipsallegrex, mipsr6
3033 ZigLLVM_mipsel, // MIPSEL: mipsel, mipsallegrexe, mipsr6el
......@@ -114,9 +117,11 @@ static const Os os_list[] = {
114117 OsNVCL, // NVIDIA OpenCL
115118 OsAMDHSA, // AMD HSA Runtime
116119 OsPS4,
120 OsPS5,
117121 OsELFIAMCU,
118122 OsTvOS, // Apple tvOS
119123 OsWatchOS, // Apple watchOS
124 OsDriverKit, // Apple DriverKit
120125 OsMesa3D,
121126 OsContiki,
122127 OsAMDPAL,
......@@ -124,6 +129,7 @@ static const Os os_list[] = {
124129 OsHurd,
125130 OsWASI,
126131 OsEmscripten,
132 OsShaderModel, // DirectX ShaderModel
127133 OsUefi,
128134 OsOpenCL,
129135 OsGLSL450,
......@@ -156,16 +162,34 @@ static const ZigLLVM_EnvironmentType abi_list[] = {
156162 ZigLLVM_Itanium,
157163 ZigLLVM_Cygnus,
158164 ZigLLVM_CoreCLR,
159 ZigLLVM_Simulator,
160 ZigLLVM_MacABI,
165 ZigLLVM_Simulator, // Simulator variants of other systems, e.g., Apple's iOS
166 ZigLLVM_MacABI, // Mac Catalyst variant of Apple's iOS deployment target.
167
168 ZigLLVM_Pixel,
169 ZigLLVM_Vertex,
170 ZigLLVM_Geometry,
171 ZigLLVM_Hull,
172 ZigLLVM_Domain,
173 ZigLLVM_Compute,
174 ZigLLVM_Library,
175 ZigLLVM_RayGeneration,
176 ZigLLVM_Intersection,
177 ZigLLVM_AnyHit,
178 ZigLLVM_ClosestHit,
179 ZigLLVM_Miss,
180 ZigLLVM_Callable,
181 ZigLLVM_Mesh,
182 ZigLLVM_Amplification,
161183};
162184
163185static const ZigLLVM_ObjectFormatType oformat_list[] = {
164186 ZigLLVM_UnknownObjectFormat,
165187 ZigLLVM_COFF,
188 ZigLLVM_DXContainer,
166189 ZigLLVM_ELF,
167190 ZigLLVM_GOFF,
168191 ZigLLVM_MachO,
192 ZigLLVM_SPIRV,
169193 ZigLLVM_Wasm,
170194 ZigLLVM_XCOFF,
171195};
......@@ -183,9 +207,11 @@ const char *target_oformat_name(ZigLLVM_ObjectFormatType oformat) {
183207 switch (oformat) {
184208 case ZigLLVM_UnknownObjectFormat: return "unknown";
185209 case ZigLLVM_COFF: return "coff";
210 case ZigLLVM_DXContainer: return "dxcontainer";
186211 case ZigLLVM_ELF: return "elf";
187212 case ZigLLVM_GOFF: return "goff";
188213 case ZigLLVM_MachO: return "macho";
214 case ZigLLVM_SPIRV: return "spirv";
189215 case ZigLLVM_Wasm: return "wasm";
190216 case ZigLLVM_XCOFF: return "xcoff";
191217 }
......@@ -276,12 +302,16 @@ ZigLLVM_OSType get_llvm_os_type(Os os_type) {
276302 return ZigLLVM_AMDHSA;
277303 case OsPS4:
278304 return ZigLLVM_PS4;
305 case OsPS5:
306 return ZigLLVM_PS5;
279307 case OsELFIAMCU:
280308 return ZigLLVM_ELFIAMCU;
281309 case OsTvOS:
282310 return ZigLLVM_TvOS;
283311 case OsWatchOS:
284312 return ZigLLVM_WatchOS;
313 case OsDriverKit:
314 return ZigLLVM_DriverKit;
285315 case OsMesa3D:
286316 return ZigLLVM_Mesa3D;
287317 case OsContiki:
......@@ -296,6 +326,8 @@ ZigLLVM_OSType get_llvm_os_type(Os os_type) {
296326 return ZigLLVM_WASI;
297327 case OsEmscripten:
298328 return ZigLLVM_Emscripten;
329 case OsShaderModel:
330 return ZigLLVM_ShaderModel;
299331 }
300332 zig_unreachable();
301333}
......@@ -334,9 +366,11 @@ const char *target_os_name(Os os_type) {
334366 case OsNVCL: // NVIDIA OpenCL
335367 case OsAMDHSA: // AMD HSA Runtime
336368 case OsPS4:
369 case OsPS5:
337370 case OsELFIAMCU:
338371 case OsTvOS: // Apple tvOS
339372 case OsWatchOS: // Apple watchOS
373 case OsDriverKit:
340374 case OsMesa3D:
341375 case OsContiki:
342376 case OsAMDPAL:
......@@ -344,6 +378,7 @@ const char *target_os_name(Os os_type) {
344378 case OsHurd:
345379 case OsWASI:
346380 case OsEmscripten:
381 case OsShaderModel:
347382 case OsOpenCL:
348383 case OsGLSL450:
349384 case OsVulkan:
......@@ -532,6 +567,8 @@ uint32_t target_arch_pointer_bit_width(ZigLLVM_ArchType arch) {
532567 case ZigLLVM_aarch64_32:
533568 case ZigLLVM_csky:
534569 case ZigLLVM_spirv32:
570 case ZigLLVM_loongarch32:
571 case ZigLLVM_dxil:
535572 return 32;
536573
537574 case ZigLLVM_aarch64:
......@@ -556,6 +593,7 @@ uint32_t target_arch_pointer_bit_width(ZigLLVM_ArchType arch) {
556593 case ZigLLVM_renderscript64:
557594 case ZigLLVM_ve:
558595 case ZigLLVM_spirv64:
596 case ZigLLVM_loongarch64:
559597 return 64;
560598 }
561599 zig_unreachable();
......@@ -601,6 +639,8 @@ uint32_t target_arch_largest_atomic_bits(ZigLLVM_ArchType arch) {
601639 case ZigLLVM_renderscript32:
602640 case ZigLLVM_csky:
603641 case ZigLLVM_spirv32:
642 case ZigLLVM_loongarch32:
643 case ZigLLVM_dxil:
604644 return 32;
605645
606646 case ZigLLVM_aarch64:
......@@ -625,6 +665,7 @@ uint32_t target_arch_largest_atomic_bits(ZigLLVM_ArchType arch) {
625665 case ZigLLVM_renderscript64:
626666 case ZigLLVM_ve:
627667 case ZigLLVM_spirv64:
668 case ZigLLVM_loongarch64:
628669 return 64;
629670
630671 case ZigLLVM_x86_64:
......@@ -751,6 +792,7 @@ uint32_t target_c_type_size_in_bits(const ZigTarget *target, CIntType id) {
751792 case OsAIX:
752793 case OsAMDHSA:
753794 case OsPS4:
795 case OsPS5:
754796 case OsELFIAMCU:
755797 case OsTvOS:
756798 case OsWatchOS:
......@@ -763,6 +805,8 @@ uint32_t target_c_type_size_in_bits(const ZigTarget *target, CIntType id) {
763805 case OsOpenCL:
764806 case OsGLSL450:
765807 case OsVulkan:
808 case OsDriverKit:
809 case OsShaderModel:
766810 zig_panic("TODO c type size in bits for this target");
767811 }
768812 zig_unreachable();
......@@ -860,6 +904,9 @@ const char *arch_stack_pointer_register_name(ZigLLVM_ArchType arch) {
860904 case ZigLLVM_tcele:
861905 case ZigLLVM_xcore:
862906 case ZigLLVM_ve:
907 case ZigLLVM_dxil:
908 case ZigLLVM_loongarch32:
909 case ZigLLVM_loongarch64:
863910 zig_panic("TODO populate this table with stack pointer register name for this CPU architecture");
864911 }
865912 zig_unreachable();
......@@ -927,6 +974,9 @@ bool target_is_arm(const ZigTarget *target) {
927974 case ZigLLVM_ve:
928975 case ZigLLVM_spirv32:
929976 case ZigLLVM_spirv64:
977 case ZigLLVM_dxil:
978 case ZigLLVM_loongarch32:
979 case ZigLLVM_loongarch64:
930980 return false;
931981 }
932982 zig_unreachable();
......@@ -973,6 +1023,7 @@ ZigLLVM_EnvironmentType target_default_abi(ZigLLVM_ArchType arch, Os os) {
9731023 case OsNVCL:
9741024 case OsAMDHSA:
9751025 case OsPS4:
1026 case OsPS5:
9761027 case OsELFIAMCU:
9771028 case OsMesa3D:
9781029 case OsContiki:
......@@ -1004,6 +1055,8 @@ ZigLLVM_EnvironmentType target_default_abi(ZigLLVM_ArchType arch, Os os) {
10041055 case OsIOS:
10051056 case OsTvOS:
10061057 case OsWatchOS:
1058 case OsDriverKit:
1059 case OsShaderModel:
10071060 return ZigLLVM_UnknownEnvironment;
10081061 }
10091062 zig_unreachable();
src/stage1/zig0.cpp+6
......@@ -112,6 +112,8 @@ static Os get_zig_os_type(ZigLLVM_OSType os_type) {
112112 return OsAMDHSA;
113113 case ZigLLVM_PS4:
114114 return OsPS4;
115 case ZigLLVM_PS5:
116 return OsPS5;
115117 case ZigLLVM_ELFIAMCU:
116118 return OsELFIAMCU;
117119 case ZigLLVM_TvOS:
......@@ -132,6 +134,10 @@ static Os get_zig_os_type(ZigLLVM_OSType os_type) {
132134 return OsWASI;
133135 case ZigLLVM_Emscripten:
134136 return OsEmscripten;
137 case ZigLLVM_DriverKit:
138 return OsDriverKit;
139 case ZigLLVM_ShaderModel:
140 return OsShaderModel;
135141 }
136142 zig_unreachable();
137143}
src/target.zig+30
......@@ -107,6 +107,23 @@ pub fn libCGenericName(target: std.Target) [:0]const u8 {
107107 .simulator,
108108 .macabi,
109109 => unreachable,
110
111 .pixel,
112 .vertex,
113 .geometry,
114 .hull,
115 .domain,
116 .compute,
117 .library,
118 .raygeneration,
119 .intersection,
120 .anyhit,
121 .closesthit,
122 .miss,
123 .callable,
124 .mesh,
125 .amplification,
126 => unreachable,
110127 }
111128}
112129
......@@ -219,6 +236,7 @@ pub fn hasLlvmSupport(target: std.Target, ofmt: std.Target.ObjectFormat) bool {
219236 .hex,
220237 .raw,
221238 .nvptx,
239 .dxcontainer,
222240 => {},
223241 }
224242
......@@ -233,7 +251,10 @@ pub fn hasLlvmSupport(target: std.Target, ofmt: std.Target.ObjectFormat) bool {
233251 .bpfel,
234252 .bpfeb,
235253 .csky,
254 .dxil,
236255 .hexagon,
256 .loongarch32,
257 .loongarch64,
237258 .m68k,
238259 .mips,
239260 .mipsel,
......@@ -335,6 +356,7 @@ pub fn osToLLVM(os_tag: std.Target.Os.Tag) llvm.OSType {
335356 .nvcl => .NVCL,
336357 .amdhsa => .AMDHSA,
337358 .ps4 => .PS4,
359 .ps5 => .PS5,
338360 .elfiamcu => .ELFIAMCU,
339361 .tvos => .TvOS,
340362 .watchos => .WatchOS,
......@@ -345,6 +367,8 @@ pub fn osToLLVM(os_tag: std.Target.Os.Tag) llvm.OSType {
345367 .hurd => .Hurd,
346368 .wasi => .WASI,
347369 .emscripten => .Emscripten,
370 .driverkit => .DriverKit,
371 .shadermodel => .ShaderModel,
348372 };
349373}
350374
......@@ -360,7 +384,10 @@ pub fn archToLLVM(arch_tag: std.Target.Cpu.Arch) llvm.ArchType {
360384 .bpfel => .bpfel,
361385 .bpfeb => .bpfeb,
362386 .csky => .csky,
387 .dxil => .dxil,
363388 .hexagon => .hexagon,
389 .loongarch32 => .loongarch32,
390 .loongarch64 => .loongarch64,
364391 .m68k => .m68k,
365392 .mips => .mips,
366393 .mipsel => .mipsel,
......@@ -627,6 +654,8 @@ pub fn atomicPtrAlignment(
627654 .renderscript32,
628655 .csky,
629656 .spirv32,
657 .dxil,
658 .loongarch32,
630659 => 32,
631660
632661 .aarch64,
......@@ -651,6 +680,7 @@ pub fn atomicPtrAlignment(
651680 .renderscript64,
652681 .ve,
653682 .spirv64,
683 .loongarch64,
654684 => 64,
655685
656686 .x86_64 => 128,
src/type.zig+3
......@@ -6627,6 +6627,7 @@ pub const CType = enum {
66276627 .nvcl,
66286628 .amdhsa,
66296629 .ps4,
6630 .ps5,
66306631 .elfiamcu,
66316632 .mesa3d,
66326633 .contiki,
......@@ -6636,6 +6637,8 @@ pub const CType = enum {
66366637 .opencl,
66376638 .glsl450,
66386639 .vulkan,
6640 .driverkit,
6641 .shadermodel,
66396642 => @panic("TODO specify the C integer and float type sizes for this OS"),
66406643 }
66416644 }
src/zig_clang.cpp+28-18
......@@ -317,6 +317,7 @@ void ZigClang_detect_enum_TypeClass(clang::Type::TypeClass ty) {
317317 case clang::Type::Enum:
318318 case clang::Type::Elaborated:
319319 case clang::Type::Attributed:
320 case clang::Type::BTFTagAttributed:
320321 case clang::Type::BitInt:
321322 case clang::Type::TemplateTypeParm:
322323 case clang::Type::SubstTemplateTypeParm:
......@@ -346,6 +347,7 @@ static_assert((clang::Type::TypeClass)ZigClangType_IncompleteArray == clang::Typ
346347static_assert((clang::Type::TypeClass)ZigClangType_VariableArray == clang::Type::VariableArray, "");
347348static_assert((clang::Type::TypeClass)ZigClangType_Atomic == clang::Type::Atomic, "");
348349static_assert((clang::Type::TypeClass)ZigClangType_Attributed == clang::Type::Attributed, "");
350static_assert((clang::Type::TypeClass)ZigClangType_BTFTagAttributed == clang::Type::BTFTagAttributed, "");
349351static_assert((clang::Type::TypeClass)ZigClangType_BitInt == clang::Type::BitInt, "");
350352static_assert((clang::Type::TypeClass)ZigClangType_BlockPointer == clang::Type::BlockPointer, "");
351353static_assert((clang::Type::TypeClass)ZigClangType_Builtin == clang::Type::Builtin, "");
......@@ -432,25 +434,33 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) {
432434 case clang::Stmt::OMPForDirectiveClass:
433435 case clang::Stmt::OMPForSimdDirectiveClass:
434436 case clang::Stmt::OMPGenericLoopDirectiveClass:
437 case clang::Stmt::OMPMaskedTaskLoopDirectiveClass:
438 case clang::Stmt::OMPMaskedTaskLoopSimdDirectiveClass:
435439 case clang::Stmt::OMPMasterTaskLoopDirectiveClass:
436440 case clang::Stmt::OMPMasterTaskLoopSimdDirectiveClass:
437441 case clang::Stmt::OMPParallelForDirectiveClass:
438442 case clang::Stmt::OMPParallelForSimdDirectiveClass:
443 case clang::Stmt::OMPParallelGenericLoopDirectiveClass:
444 case clang::Stmt::OMPParallelMaskedTaskLoopDirectiveClass:
445 case clang::Stmt::OMPParallelMaskedTaskLoopSimdDirectiveClass:
439446 case clang::Stmt::OMPParallelMasterTaskLoopDirectiveClass:
440447 case clang::Stmt::OMPParallelMasterTaskLoopSimdDirectiveClass:
441448 case clang::Stmt::OMPSimdDirectiveClass:
442449 case clang::Stmt::OMPTargetParallelForSimdDirectiveClass:
450 case clang::Stmt::OMPTargetParallelGenericLoopDirectiveClass:
443451 case clang::Stmt::OMPTargetSimdDirectiveClass:
444452 case clang::Stmt::OMPTargetTeamsDistributeDirectiveClass:
445453 case clang::Stmt::OMPTargetTeamsDistributeParallelForDirectiveClass:
446454 case clang::Stmt::OMPTargetTeamsDistributeParallelForSimdDirectiveClass:
447455 case clang::Stmt::OMPTargetTeamsDistributeSimdDirectiveClass:
456 case clang::Stmt::OMPTargetTeamsGenericLoopDirectiveClass:
448457 case clang::Stmt::OMPTaskLoopDirectiveClass:
449458 case clang::Stmt::OMPTaskLoopSimdDirectiveClass:
450459 case clang::Stmt::OMPTeamsDistributeDirectiveClass:
451460 case clang::Stmt::OMPTeamsDistributeParallelForDirectiveClass:
452461 case clang::Stmt::OMPTeamsDistributeParallelForSimdDirectiveClass:
453462 case clang::Stmt::OMPTeamsDistributeSimdDirectiveClass:
463 case clang::Stmt::OMPTeamsGenericLoopDirectiveClass:
454464 case clang::Stmt::OMPTileDirectiveClass:
455465 case clang::Stmt::OMPUnrollDirectiveClass:
456466 case clang::Stmt::OMPMaskedDirectiveClass:
......@@ -458,6 +468,7 @@ void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) {
458468 case clang::Stmt::OMPMetaDirectiveClass:
459469 case clang::Stmt::OMPOrderedDirectiveClass:
460470 case clang::Stmt::OMPParallelDirectiveClass:
471 case clang::Stmt::OMPParallelMaskedDirectiveClass:
461472 case clang::Stmt::OMPParallelMasterDirectiveClass:
462473 case clang::Stmt::OMPParallelSectionsDirectiveClass:
463474 case clang::Stmt::OMPScanDirectiveClass:
......@@ -659,25 +670,33 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDistributeSimdDirectiveCla
659670static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPForDirectiveClass == clang::Stmt::OMPForDirectiveClass, "");
660671static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPForSimdDirectiveClass == clang::Stmt::OMPForSimdDirectiveClass, "");
661672static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPGenericLoopDirectiveClass == clang::Stmt::OMPGenericLoopDirectiveClass, "");
673static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPMaskedTaskLoopDirectiveClass == clang::Stmt::OMPMaskedTaskLoopDirectiveClass, "");
674static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPMaskedTaskLoopSimdDirectiveClass == clang::Stmt::OMPMaskedTaskLoopSimdDirectiveClass, "");
662675static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPMasterTaskLoopDirectiveClass == clang::Stmt::OMPMasterTaskLoopDirectiveClass, "");
663676static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPMasterTaskLoopSimdDirectiveClass == clang::Stmt::OMPMasterTaskLoopSimdDirectiveClass, "");
664677static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelForDirectiveClass == clang::Stmt::OMPParallelForDirectiveClass, "");
665678static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelForSimdDirectiveClass == clang::Stmt::OMPParallelForSimdDirectiveClass, "");
679static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelGenericLoopDirectiveClass == clang::Stmt::OMPParallelGenericLoopDirectiveClass, "");
680static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelMaskedTaskLoopDirectiveClass == clang::Stmt::OMPParallelMaskedTaskLoopDirectiveClass, "");
681static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelMaskedTaskLoopSimdDirectiveClass == clang::Stmt::OMPParallelMaskedTaskLoopSimdDirectiveClass, "");
666682static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelMasterTaskLoopDirectiveClass == clang::Stmt::OMPParallelMasterTaskLoopDirectiveClass, "");
667683static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelMasterTaskLoopSimdDirectiveClass == clang::Stmt::OMPParallelMasterTaskLoopSimdDirectiveClass, "");
668684static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPSimdDirectiveClass == clang::Stmt::OMPSimdDirectiveClass, "");
669685static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetParallelForSimdDirectiveClass == clang::Stmt::OMPTargetParallelForSimdDirectiveClass, "");
686static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetParallelGenericLoopDirectiveClass == clang::Stmt::OMPTargetParallelGenericLoopDirectiveClass, "");
670687static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetSimdDirectiveClass == clang::Stmt::OMPTargetSimdDirectiveClass, "");
671688static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetTeamsDistributeDirectiveClass == clang::Stmt::OMPTargetTeamsDistributeDirectiveClass, "");
672689static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetTeamsDistributeParallelForDirectiveClass == clang::Stmt::OMPTargetTeamsDistributeParallelForDirectiveClass, "");
673690static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetTeamsDistributeParallelForSimdDirectiveClass == clang::Stmt::OMPTargetTeamsDistributeParallelForSimdDirectiveClass, "");
674691static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetTeamsDistributeSimdDirectiveClass == clang::Stmt::OMPTargetTeamsDistributeSimdDirectiveClass, "");
692static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetTeamsGenericLoopDirectiveClass == clang::Stmt::OMPTargetTeamsGenericLoopDirectiveClass, "");
675693static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTaskLoopDirectiveClass == clang::Stmt::OMPTaskLoopDirectiveClass, "");
676694static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTaskLoopSimdDirectiveClass == clang::Stmt::OMPTaskLoopSimdDirectiveClass, "");
677695static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeDirectiveClass == clang::Stmt::OMPTeamsDistributeDirectiveClass, "");
678696static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeParallelForDirectiveClass == clang::Stmt::OMPTeamsDistributeParallelForDirectiveClass, "");
679697static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeParallelForSimdDirectiveClass == clang::Stmt::OMPTeamsDistributeParallelForSimdDirectiveClass, "");
680698static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeSimdDirectiveClass == clang::Stmt::OMPTeamsDistributeSimdDirectiveClass, "");
699static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsGenericLoopDirectiveClass == clang::Stmt::OMPTeamsGenericLoopDirectiveClass, "");
681700static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTileDirectiveClass == clang::Stmt::OMPTileDirectiveClass, "");
682701static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPUnrollDirectiveClass == clang::Stmt::OMPUnrollDirectiveClass, "");
683702static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPMaskedDirectiveClass == clang::Stmt::OMPMaskedDirectiveClass, "");
......@@ -685,6 +704,7 @@ static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPMasterDirectiveClass == cl
685704static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPMetaDirectiveClass == clang::Stmt::OMPMetaDirectiveClass, "");
686705static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPOrderedDirectiveClass == clang::Stmt::OMPOrderedDirectiveClass, "");
687706static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelDirectiveClass == clang::Stmt::OMPParallelDirectiveClass, "");
707static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelMaskedDirectiveClass == clang::Stmt::OMPParallelMaskedDirectiveClass, "");
688708static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelMasterDirectiveClass == clang::Stmt::OMPParallelMasterDirectiveClass, "");
689709static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelSectionsDirectiveClass == clang::Stmt::OMPParallelSectionsDirectiveClass, "");
690710static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPScanDirectiveClass == clang::Stmt::OMPScanDirectiveClass, "");
......@@ -958,6 +978,7 @@ void ZigClang_detect_enum_DeclKind(clang::Decl::Kind x) {
958978 case clang::Decl::OMPDeclareMapper:
959979 case clang::Decl::OMPDeclareReduction:
960980 case clang::Decl::TemplateParamObject:
981 case clang::Decl::UnnamedGlobalConstant:
961982 case clang::Decl::UnresolvedUsingValue:
962983 case clang::Decl::OMPAllocate:
963984 case clang::Decl::OMPRequires:
......@@ -1046,6 +1067,7 @@ static_assert((clang::Decl::Kind)ZigClangDeclMSGuid == clang::Decl::MSGuid, "");
10461067static_assert((clang::Decl::Kind)ZigClangDeclOMPDeclareMapper == clang::Decl::OMPDeclareMapper, "");
10471068static_assert((clang::Decl::Kind)ZigClangDeclOMPDeclareReduction == clang::Decl::OMPDeclareReduction, "");
10481069static_assert((clang::Decl::Kind)ZigClangDeclTemplateParamObject == clang::Decl::TemplateParamObject, "");
1070static_assert((clang::Decl::Kind)ZigClangDeclUnnamedGlobalConstant == clang::Decl::UnnamedGlobalConstant, "");
10491071static_assert((clang::Decl::Kind)ZigClangDeclUnresolvedUsingValue == clang::Decl::UnresolvedUsingValue, "");
10501072static_assert((clang::Decl::Kind)ZigClangDeclOMPRequires == clang::Decl::OMPRequires, "");
10511073static_assert((clang::Decl::Kind)ZigClangDeclOMPThreadPrivate == clang::Decl::OMPThreadPrivate, "");
......@@ -1560,6 +1582,8 @@ void ZigClang_detect_enum_CallingConv(clang::CallingConv x) {
15601582 case clang::CC_PreserveMost:
15611583 case clang::CC_PreserveAll:
15621584 case clang::CC_AArch64VectorCall:
1585 case clang::CC_AArch64SVEPCS:
1586 case clang::CC_AMDGPUKernelCall:
15631587 break;
15641588 }
15651589}
......@@ -1583,6 +1607,8 @@ static_assert((clang::CallingConv)ZigClangCallingConv_SwiftAsync == clang::CC_Sw
15831607static_assert((clang::CallingConv)ZigClangCallingConv_PreserveMost == clang::CC_PreserveMost, "");
15841608static_assert((clang::CallingConv)ZigClangCallingConv_PreserveAll == clang::CC_PreserveAll, "");
15851609static_assert((clang::CallingConv)ZigClangCallingConv_AArch64VectorCall == clang::CC_AArch64VectorCall, "");
1610static_assert((clang::CallingConv)ZigClangCallingConv_AArch64SVEPCS == clang::CC_AArch64SVEPCS, "");
1611static_assert((clang::CallingConv)ZigClangCallingConv_AMDGPUKernelCall == clang::CC_AMDGPUKernelCall, "");
15861612
15871613void ZigClang_detect_enum_StorageClass(clang::StorageClass x) {
15881614 switch (x) {
......@@ -1623,22 +1649,6 @@ static_assert((llvm::RoundingMode)ZigClangAPFloat_roundingMode_NearestTiesToAway
16231649static_assert((llvm::RoundingMode)ZigClangAPFloat_roundingMode_Dynamic == llvm::RoundingMode::Dynamic, "");
16241650static_assert((llvm::RoundingMode)ZigClangAPFloat_roundingMode_Invalid == llvm::RoundingMode::Invalid, "");
16251651
1626void ZigClang_detect_enum_StringKind(clang::StringLiteral::StringKind x) {
1627 switch (x) {
1628 case clang::StringLiteral::Ascii:
1629 case clang::StringLiteral::Wide:
1630 case clang::StringLiteral::UTF8:
1631 case clang::StringLiteral::UTF16:
1632 case clang::StringLiteral::UTF32:
1633 break;
1634 }
1635}
1636static_assert((clang::StringLiteral::StringKind)ZigClangStringLiteral_StringKind_Ascii == clang::StringLiteral::Ascii, "");
1637static_assert((clang::StringLiteral::StringKind)ZigClangStringLiteral_StringKind_Wide == clang::StringLiteral::Wide, "");
1638static_assert((clang::StringLiteral::StringKind)ZigClangStringLiteral_StringKind_UTF8 == clang::StringLiteral::UTF8, "");
1639static_assert((clang::StringLiteral::StringKind)ZigClangStringLiteral_StringKind_UTF16 == clang::StringLiteral::UTF16, "");
1640static_assert((clang::StringLiteral::StringKind)ZigClangStringLiteral_StringKind_UTF32 == clang::StringLiteral::UTF32, "");
1641
16421652void ZigClang_detect_enum_CharacterKind(clang::CharacterLiteral::CharacterKind x) {
16431653 switch (x) {
16441654 case clang::CharacterLiteral::Ascii:
......@@ -2724,9 +2734,9 @@ ZigClangAPFloatBase_Semantics ZigClangFloatingLiteral_getRawSemantics(const ZigC
27242734 return static_cast<ZigClangAPFloatBase_Semantics>(casted->getRawSemantics());
27252735}
27262736
2727enum ZigClangStringLiteral_StringKind ZigClangStringLiteral_getKind(const struct ZigClangStringLiteral *self) {
2737enum ZigClangCharacterLiteral_CharacterKind ZigClangStringLiteral_getKind(const struct ZigClangStringLiteral *self) {
27282738 auto casted = reinterpret_cast<const clang::StringLiteral *>(self);
2729 return (ZigClangStringLiteral_StringKind)casted->getKind();
2739 return (ZigClangCharacterLiteral_CharacterKind)casted->getKind();
27302740}
27312741
27322742uint32_t ZigClangStringLiteral_getCodeUnit(const struct ZigClangStringLiteral *self, size_t i) {
src/zig_clang.h+32-20
......@@ -252,6 +252,7 @@ enum ZigClangTypeClass {
252252 ZigClangType_VariableArray,
253253 ZigClangType_Atomic,
254254 ZigClangType_Attributed,
255 ZigClangType_BTFTagAttributed,
255256 ZigClangType_BitInt,
256257 ZigClangType_BlockPointer,
257258 ZigClangType_Builtin,
......@@ -337,25 +338,33 @@ enum ZigClangStmtClass {
337338 ZigClangStmt_OMPForDirectiveClass,
338339 ZigClangStmt_OMPForSimdDirectiveClass,
339340 ZigClangStmt_OMPGenericLoopDirectiveClass,
341 ZigClangStmt_OMPMaskedTaskLoopDirectiveClass,
342 ZigClangStmt_OMPMaskedTaskLoopSimdDirectiveClass,
340343 ZigClangStmt_OMPMasterTaskLoopDirectiveClass,
341344 ZigClangStmt_OMPMasterTaskLoopSimdDirectiveClass,
342345 ZigClangStmt_OMPParallelForDirectiveClass,
343346 ZigClangStmt_OMPParallelForSimdDirectiveClass,
347 ZigClangStmt_OMPParallelGenericLoopDirectiveClass,
348 ZigClangStmt_OMPParallelMaskedTaskLoopDirectiveClass,
349 ZigClangStmt_OMPParallelMaskedTaskLoopSimdDirectiveClass,
344350 ZigClangStmt_OMPParallelMasterTaskLoopDirectiveClass,
345351 ZigClangStmt_OMPParallelMasterTaskLoopSimdDirectiveClass,
346352 ZigClangStmt_OMPSimdDirectiveClass,
347353 ZigClangStmt_OMPTargetParallelForSimdDirectiveClass,
354 ZigClangStmt_OMPTargetParallelGenericLoopDirectiveClass,
348355 ZigClangStmt_OMPTargetSimdDirectiveClass,
349356 ZigClangStmt_OMPTargetTeamsDistributeDirectiveClass,
350357 ZigClangStmt_OMPTargetTeamsDistributeParallelForDirectiveClass,
351358 ZigClangStmt_OMPTargetTeamsDistributeParallelForSimdDirectiveClass,
352359 ZigClangStmt_OMPTargetTeamsDistributeSimdDirectiveClass,
360 ZigClangStmt_OMPTargetTeamsGenericLoopDirectiveClass,
353361 ZigClangStmt_OMPTaskLoopDirectiveClass,
354362 ZigClangStmt_OMPTaskLoopSimdDirectiveClass,
355363 ZigClangStmt_OMPTeamsDistributeDirectiveClass,
356364 ZigClangStmt_OMPTeamsDistributeParallelForDirectiveClass,
357365 ZigClangStmt_OMPTeamsDistributeParallelForSimdDirectiveClass,
358366 ZigClangStmt_OMPTeamsDistributeSimdDirectiveClass,
367 ZigClangStmt_OMPTeamsGenericLoopDirectiveClass,
359368 ZigClangStmt_OMPTileDirectiveClass,
360369 ZigClangStmt_OMPUnrollDirectiveClass,
361370 ZigClangStmt_OMPMaskedDirectiveClass,
......@@ -363,6 +372,7 @@ enum ZigClangStmtClass {
363372 ZigClangStmt_OMPMetaDirectiveClass,
364373 ZigClangStmt_OMPOrderedDirectiveClass,
365374 ZigClangStmt_OMPParallelDirectiveClass,
375 ZigClangStmt_OMPParallelMaskedDirectiveClass,
366376 ZigClangStmt_OMPParallelMasterDirectiveClass,
367377 ZigClangStmt_OMPParallelSectionsDirectiveClass,
368378 ZigClangStmt_OMPScanDirectiveClass,
......@@ -667,6 +677,7 @@ enum ZigClangDeclKind {
667677 ZigClangDeclOMPDeclareMapper,
668678 ZigClangDeclOMPDeclareReduction,
669679 ZigClangDeclTemplateParamObject,
680 ZigClangDeclUnnamedGlobalConstant,
670681 ZigClangDeclUnresolvedUsingValue,
671682 ZigClangDeclOMPAllocate,
672683 ZigClangDeclOMPRequires,
......@@ -921,25 +932,27 @@ enum ZigClangBuiltinTypeKind {
921932};
922933
923934enum ZigClangCallingConv {
924 ZigClangCallingConv_C, // __attribute__((cdecl))
925 ZigClangCallingConv_X86StdCall, // __attribute__((stdcall))
926 ZigClangCallingConv_X86FastCall, // __attribute__((fastcall))
927 ZigClangCallingConv_X86ThisCall, // __attribute__((thiscall))
928 ZigClangCallingConv_X86VectorCall, // __attribute__((vectorcall))
929 ZigClangCallingConv_X86Pascal, // __attribute__((pascal))
930 ZigClangCallingConv_Win64, // __attribute__((ms_abi))
931 ZigClangCallingConv_X86_64SysV, // __attribute__((sysv_abi))
932 ZigClangCallingConv_X86RegCall, // __attribute__((regcall))
933 ZigClangCallingConv_AAPCS, // __attribute__((pcs("aapcs")))
934 ZigClangCallingConv_AAPCS_VFP, // __attribute__((pcs("aapcs-vfp")))
935 ZigClangCallingConv_IntelOclBicc, // __attribute__((intel_ocl_bicc))
936 ZigClangCallingConv_SpirFunction, // default for OpenCL functions on SPIR target
937 ZigClangCallingConv_OpenCLKernel, // inferred for OpenCL kernels
938 ZigClangCallingConv_Swift, // __attribute__((swiftcall))
939 ZigClangCallingConv_SwiftAsync, // __attribute__((swiftasynccall))
940 ZigClangCallingConv_PreserveMost, // __attribute__((preserve_most))
941 ZigClangCallingConv_PreserveAll, // __attribute__((preserve_all))
942 ZigClangCallingConv_AArch64VectorCall, // __attribute__((aarch64_vector_pcs))
935 ZigClangCallingConv_C,
936 ZigClangCallingConv_X86StdCall,
937 ZigClangCallingConv_X86FastCall,
938 ZigClangCallingConv_X86ThisCall,
939 ZigClangCallingConv_X86VectorCall,
940 ZigClangCallingConv_X86Pascal,
941 ZigClangCallingConv_Win64,
942 ZigClangCallingConv_X86_64SysV,
943 ZigClangCallingConv_X86RegCall,
944 ZigClangCallingConv_AAPCS,
945 ZigClangCallingConv_AAPCS_VFP,
946 ZigClangCallingConv_IntelOclBicc,
947 ZigClangCallingConv_SpirFunction,
948 ZigClangCallingConv_OpenCLKernel,
949 ZigClangCallingConv_Swift,
950 ZigClangCallingConv_SwiftAsync,
951 ZigClangCallingConv_PreserveMost,
952 ZigClangCallingConv_PreserveAll,
953 ZigClangCallingConv_AArch64VectorCall,
954 ZigClangCallingConv_AArch64SVEPCS,
955 ZigClangCallingConv_AMDGPUKernelCall,
943956};
944957
945958enum ZigClangStorageClass {
......@@ -1253,7 +1266,6 @@ ZIG_EXTERN_C double ZigClangFloatingLiteral_getValueAsApproximateDouble(const Zi
12531266ZIG_EXTERN_C struct ZigClangSourceLocation ZigClangFloatingLiteral_getBeginLoc(const struct ZigClangFloatingLiteral *);
12541267ZIG_EXTERN_C ZigClangAPFloatBase_Semantics ZigClangFloatingLiteral_getRawSemantics(const ZigClangFloatingLiteral *self);
12551268
1256ZIG_EXTERN_C enum ZigClangStringLiteral_StringKind ZigClangStringLiteral_getKind(const struct ZigClangStringLiteral *self);
12571269ZIG_EXTERN_C uint32_t ZigClangStringLiteral_getCodeUnit(const struct ZigClangStringLiteral *self, size_t i);
12581270ZIG_EXTERN_C unsigned ZigClangStringLiteral_getLength(const struct ZigClangStringLiteral *self);
12591271ZIG_EXTERN_C unsigned ZigClangStringLiteral_getCharByteWidth(const struct ZigClangStringLiteral *self);
src/zig_llvm.h+35-5
......@@ -324,8 +324,10 @@ ZIG_EXTERN_C void ZigLLVMAddFunctionAttrCold(LLVMValueRef fn);
324324ZIG_EXTERN_C void ZigLLVMParseCommandLineOptions(size_t argc, const char *const *argv);
325325
326326
327// copied from include/llvm/ADT/Triple.h
328// synchronize with target.cpp::arch_list
327// synchronize with llvm/include/ADT/Triple.h::ArchType
328// synchronize with std.Target.Cpu.Arch
329// synchronize with src/stage1/target.cpp::arch_list
330// synchronize with codegen/llvm/bindings.zig::ArchType
329331enum ZigLLVM_ArchType {
330332 ZigLLVM_UnknownArch,
331333
......@@ -339,7 +341,10 @@ enum ZigLLVM_ArchType {
339341 ZigLLVM_bpfel, // eBPF or extended BPF or 64-bit BPF (little endian)
340342 ZigLLVM_bpfeb, // eBPF or extended BPF or 64-bit BPF (big endian)
341343 ZigLLVM_csky, // CSKY: csky
344 ZigLLVM_dxil, // DXIL 32-bit DirectX bytecode
342345 ZigLLVM_hexagon, // Hexagon: hexagon
346 ZigLLVM_loongarch32, // LoongArch (32-bit): loongarch32
347 ZigLLVM_loongarch64, // LoongArch (64-bit): loongarch64
343348 ZigLLVM_m68k, // M68k: Motorola 680x0 family
344349 ZigLLVM_mips, // MIPS: mips, mipsallegrex, mipsr6
345350 ZigLLVM_mipsel, // MIPSEL: mipsel, mipsallegrexe, mipsr6el
......@@ -409,6 +414,10 @@ enum ZigLLVM_VendorType {
409414 ZigLLVM_LastVendorType = ZigLLVM_OpenEmbedded
410415};
411416
417// synchronize with llvm/include/ADT/Triple.h::OsType
418// synchronize with std.Target.Os.Tag
419// synchronize with codegen/llvm/bindings.zig::OsType
420// synchronize with src/stage1/target.cpp::os_list
412421enum ZigLLVM_OSType {
413422 ZigLLVM_UnknownOS,
414423
......@@ -437,9 +446,11 @@ enum ZigLLVM_OSType {
437446 ZigLLVM_NVCL, // NVIDIA OpenCL
438447 ZigLLVM_AMDHSA, // AMD HSA Runtime
439448 ZigLLVM_PS4,
449 ZigLLVM_PS5,
440450 ZigLLVM_ELFIAMCU,
441451 ZigLLVM_TvOS, // Apple tvOS
442452 ZigLLVM_WatchOS, // Apple watchOS
453 ZigLLVM_DriverKit, // Apple DriverKit
443454 ZigLLVM_Mesa3D,
444455 ZigLLVM_Contiki,
445456 ZigLLVM_AMDPAL, // AMD PAL Runtime
......@@ -447,8 +458,8 @@ enum ZigLLVM_OSType {
447458 ZigLLVM_Hurd, // GNU/Hurd
448459 ZigLLVM_WASI, // Experimental WebAssembly OS
449460 ZigLLVM_Emscripten,
450
451 ZigLLVM_LastOSType = ZigLLVM_Emscripten
461 ZigLLVM_ShaderModel, // DirectX ShaderModel
462 ZigLLVM_LastOSType = ZigLLVM_ShaderModel
452463};
453464
454465// Synchronize with target.cpp::abi_list
......@@ -477,16 +488,35 @@ enum ZigLLVM_EnvironmentType {
477488 ZigLLVM_CoreCLR,
478489 ZigLLVM_Simulator, // Simulator variants of other systems, e.g., Apple's iOS
479490 ZigLLVM_MacABI, // Mac Catalyst variant of Apple's iOS deployment target.
480 ZigLLVM_LastEnvironmentType = ZigLLVM_MacABI
491
492 ZigLLVM_Pixel,
493 ZigLLVM_Vertex,
494 ZigLLVM_Geometry,
495 ZigLLVM_Hull,
496 ZigLLVM_Domain,
497 ZigLLVM_Compute,
498 ZigLLVM_Library,
499 ZigLLVM_RayGeneration,
500 ZigLLVM_Intersection,
501 ZigLLVM_AnyHit,
502 ZigLLVM_ClosestHit,
503 ZigLLVM_Miss,
504 ZigLLVM_Callable,
505 ZigLLVM_Mesh,
506 ZigLLVM_Amplification,
507
508 ZigLLVM_LastEnvironmentType = ZigLLVM_Amplification
481509};
482510
483511enum ZigLLVM_ObjectFormatType {
484512 ZigLLVM_UnknownObjectFormat,
485513
486514 ZigLLVM_COFF,
515 ZigLLVM_DXContainer,
487516 ZigLLVM_ELF,
488517 ZigLLVM_GOFF,
489518 ZigLLVM_MachO,
519 ZigLLVM_SPIRV,
490520 ZigLLVM_Wasm,
491521 ZigLLVM_XCOFF,
492522};