Commit 243ae3a6cb

Andrew Kelley <andrew@ziglang.org>
2024-04-26 00:41:11
update for LLVM 18 new target data
New OSs: * XROS * Serenity * Vulkan Removed OSs: * Ananas * CloudABI * Minix * Contiki New CPUs: * spirv The removed stuff is removed from LLVM but not Zig.
1 parent 70c85b1
Changed files (4)
lib/std/Target.zig
@@ -47,6 +47,7 @@ pub const Os = struct {
         tvos,
         watchos,
         driverkit,
+        xros,
         mesa3d,
         contiki,
         amdpal,
@@ -56,6 +57,7 @@ pub const Os = struct {
         emscripten,
         shadermodel,
         liteos,
+        serenity,
         opencl,
         glsl450,
         vulkan,
@@ -1002,6 +1004,7 @@ pub const Cpu = struct {
         hsail64,
         spir,
         spir64,
+        spirv,
         spirv32,
         spirv64,
         kalimba,
@@ -1012,8 +1015,6 @@ pub const Cpu = struct {
         renderscript32,
         renderscript64,
         ve,
-        // Stage1 currently assumes that architectures above this comment
-        // map one-to-one with the ZigLLVM_ArchType enum.
         spu_2,
 
         pub inline fn isX86(arch: Arch) bool {
src/codegen/llvm/bindings.zig
@@ -284,8 +284,6 @@ extern fn ZigLLVMWriteArchive(
 
 pub const OSType = enum(c_int) {
     UnknownOS,
-    Ananas,
-    CloudABI,
     Darwin,
     DragonFly,
     FreeBSD,
@@ -302,7 +300,6 @@ pub const OSType = enum(c_int) {
     Win32,
     ZOS,
     Haiku,
-    Minix,
     RTEMS,
     NaCl,
     AIX,
@@ -315,8 +312,8 @@ pub const OSType = enum(c_int) {
     TvOS,
     WatchOS,
     DriverKit,
+    XROS,
     Mesa3D,
-    Contiki,
     AMDPAL,
     HermitCore,
     Hurd,
@@ -324,6 +321,8 @@ pub const OSType = enum(c_int) {
     Emscripten,
     ShaderModel,
     LiteOS,
+    Serenity,
+    Vulkan,
 };
 
 pub const ArchType = enum(c_int) {
@@ -378,6 +377,7 @@ pub const ArchType = enum(c_int) {
     hsail64,
     spir,
     spir64,
+    spirv,
     spirv32,
     spirv64,
     kalimba,
src/zig_llvm.cpp
@@ -110,19 +110,19 @@ LLVMTargetMachineRef ZigLLVMCreateTargetMachine(LLVMTargetRef T, const char *Tri
     bool JIT;
     std::optional<CodeModel::Model> CM = unwrap(CodeModel, JIT);
 
-    CodeGenOpt::Level OL;
+    CodeGenOptLevel OL;
     switch (Level) {
         case LLVMCodeGenLevelNone:
-            OL = CodeGenOpt::None;
+            OL = CodeGenOptLevel::None;
             break;
         case LLVMCodeGenLevelLess:
-            OL = CodeGenOpt::Less;
+            OL = CodeGenOptLevel::Less;
             break;
         case LLVMCodeGenLevelAggressive:
-            OL = CodeGenOpt::Aggressive;
+            OL = CodeGenOptLevel::Aggressive;
             break;
         default:
-            OL = CodeGenOpt::Default;
+            OL = CodeGenOptLevel::Default;
             break;
     }
 
@@ -336,13 +336,13 @@ bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMM
       createTargetTransformInfoWrapperPass(target_machine.getTargetIRAnalysis()));
 
     if (dest_bin && !lto) {
-        if (target_machine.addPassesToEmitFile(codegen_pm, *dest_bin, nullptr, CGFT_ObjectFile)) {
+        if (target_machine.addPassesToEmitFile(codegen_pm, *dest_bin, nullptr, CodeGenFileType::ObjectFile)) {
             *error_message = strdup("TargetMachine can't emit an object file");
             return true;
         }
     }
     if (dest_asm) {
-        if (target_machine.addPassesToEmitFile(codegen_pm, *dest_asm, nullptr, CGFT_AssemblyFile)) {
+        if (target_machine.addPassesToEmitFile(codegen_pm, *dest_asm, nullptr, CodeGenFileType::AssemblyFile)) {
             *error_message = strdup("TargetMachine can't emit an assembly file");
             return true;
         }
@@ -534,7 +534,9 @@ bool ZigLLVMWriteArchive(const char *archive_name, const char **file_names, size
         if (err) return true;
         new_members.push_back(std::move(*new_member));
     }
-    Error err = writeArchive(archive_name, new_members, true, kind, true, false, nullptr);
+    Error err = writeArchive(archive_name, new_members,
+        SymtabWritingMode::NormalSymtab, kind, true, false, nullptr);
+
     if (err) return true;
     return false;
 }
@@ -620,6 +622,7 @@ static_assert((Triple::ArchType)ZigLLVM_hsail == Triple::hsail, "");
 static_assert((Triple::ArchType)ZigLLVM_hsail64 == Triple::hsail64, "");
 static_assert((Triple::ArchType)ZigLLVM_spir == Triple::spir, "");
 static_assert((Triple::ArchType)ZigLLVM_spir64 == Triple::spir64, "");
+static_assert((Triple::ArchType)ZigLLVM_spirv == Triple::spirv, "");
 static_assert((Triple::ArchType)ZigLLVM_spirv32 == Triple::spirv32, "");
 static_assert((Triple::ArchType)ZigLLVM_spirv64 == Triple::spirv64, "");
 static_assert((Triple::ArchType)ZigLLVM_kalimba == Triple::kalimba, "");
@@ -642,7 +645,6 @@ static_assert((Triple::VendorType)ZigLLVM_ImaginationTechnologies == Triple::Ima
 static_assert((Triple::VendorType)ZigLLVM_MipsTechnologies == Triple::MipsTechnologies, "");
 static_assert((Triple::VendorType)ZigLLVM_NVIDIA == Triple::NVIDIA, "");
 static_assert((Triple::VendorType)ZigLLVM_CSR == Triple::CSR, "");
-static_assert((Triple::VendorType)ZigLLVM_Myriad == Triple::Myriad, "");
 static_assert((Triple::VendorType)ZigLLVM_AMD == Triple::AMD, "");
 static_assert((Triple::VendorType)ZigLLVM_Mesa == Triple::Mesa, "");
 static_assert((Triple::VendorType)ZigLLVM_SUSE == Triple::SUSE, "");
@@ -650,8 +652,6 @@ static_assert((Triple::VendorType)ZigLLVM_OpenEmbedded == Triple::OpenEmbedded,
 static_assert((Triple::VendorType)ZigLLVM_LastVendorType == Triple::LastVendorType, "");
 
 static_assert((Triple::OSType)ZigLLVM_UnknownOS == Triple::UnknownOS, "");
-static_assert((Triple::OSType)ZigLLVM_Ananas == Triple::Ananas, "");
-static_assert((Triple::OSType)ZigLLVM_CloudABI == Triple::CloudABI, "");
 static_assert((Triple::OSType)ZigLLVM_Darwin == Triple::Darwin, "");
 static_assert((Triple::OSType)ZigLLVM_DragonFly == Triple::DragonFly, "");
 static_assert((Triple::OSType)ZigLLVM_FreeBSD == Triple::FreeBSD, "");
@@ -670,7 +670,6 @@ static_assert((Triple::OSType)ZigLLVM_UEFI == Triple::UEFI, "");
 static_assert((Triple::OSType)ZigLLVM_Win32 == Triple::Win32, "");
 static_assert((Triple::OSType)ZigLLVM_ZOS == Triple::ZOS, "");
 static_assert((Triple::OSType)ZigLLVM_Haiku == Triple::Haiku, "");
-static_assert((Triple::OSType)ZigLLVM_Minix == Triple::Minix, "");
 static_assert((Triple::OSType)ZigLLVM_RTEMS == Triple::RTEMS, "");
 static_assert((Triple::OSType)ZigLLVM_NaCl == Triple::NaCl, "");
 static_assert((Triple::OSType)ZigLLVM_AIX == Triple::AIX, "");
@@ -681,8 +680,9 @@ static_assert((Triple::OSType)ZigLLVM_PS4 == Triple::PS4, "");
 static_assert((Triple::OSType)ZigLLVM_ELFIAMCU == Triple::ELFIAMCU, "");
 static_assert((Triple::OSType)ZigLLVM_TvOS == Triple::TvOS, "");
 static_assert((Triple::OSType)ZigLLVM_WatchOS == Triple::WatchOS, "");
+static_assert((Triple::OSType)ZigLLVM_DriverKit == Triple::DriverKit, "");
+static_assert((Triple::OSType)ZigLLVM_XROS == Triple::XROS, "");
 static_assert((Triple::OSType)ZigLLVM_Mesa3D == Triple::Mesa3D, "");
-static_assert((Triple::OSType)ZigLLVM_Contiki == Triple::Contiki, "");
 static_assert((Triple::OSType)ZigLLVM_AMDPAL == Triple::AMDPAL, "");
 static_assert((Triple::OSType)ZigLLVM_HermitCore == Triple::HermitCore, "");
 static_assert((Triple::OSType)ZigLLVM_Hurd == Triple::Hurd, "");
@@ -690,6 +690,8 @@ static_assert((Triple::OSType)ZigLLVM_WASI == Triple::WASI, "");
 static_assert((Triple::OSType)ZigLLVM_Emscripten == Triple::Emscripten, "");
 static_assert((Triple::OSType)ZigLLVM_ShaderModel == Triple::ShaderModel, "");
 static_assert((Triple::OSType)ZigLLVM_LiteOS == Triple::LiteOS, "");
+static_assert((Triple::OSType)ZigLLVM_Serenity == Triple::Serenity, "");
+static_assert((Triple::OSType)ZigLLVM_Vulkan == Triple::Vulkan, "");
 static_assert((Triple::OSType)ZigLLVM_LastOSType == Triple::LastOSType, "");
 
 static_assert((Triple::EnvironmentType)ZigLLVM_UnknownEnvironment == Triple::UnknownEnvironment, "");
@@ -748,12 +750,14 @@ static_assert((CallingConv::ID)ZigLLVM_Fast == llvm::CallingConv::Fast, "");
 static_assert((CallingConv::ID)ZigLLVM_Cold == llvm::CallingConv::Cold, "");
 static_assert((CallingConv::ID)ZigLLVM_GHC == llvm::CallingConv::GHC, "");
 static_assert((CallingConv::ID)ZigLLVM_HiPE == llvm::CallingConv::HiPE, "");
-static_assert((CallingConv::ID)ZigLLVM_WebKit_JS == llvm::CallingConv::WebKit_JS, "");
 static_assert((CallingConv::ID)ZigLLVM_AnyReg == llvm::CallingConv::AnyReg, "");
 static_assert((CallingConv::ID)ZigLLVM_PreserveMost == llvm::CallingConv::PreserveMost, "");
 static_assert((CallingConv::ID)ZigLLVM_PreserveAll == llvm::CallingConv::PreserveAll, "");
 static_assert((CallingConv::ID)ZigLLVM_Swift == llvm::CallingConv::Swift, "");
 static_assert((CallingConv::ID)ZigLLVM_CXX_FAST_TLS == llvm::CallingConv::CXX_FAST_TLS, "");
+static_assert((CallingConv::ID)ZigLLVM_Tail == llvm::CallingConv::Tail, "");
+static_assert((CallingConv::ID)ZigLLVM_CFGuard_Check == llvm::CallingConv::CFGuard_Check, "");
+static_assert((CallingConv::ID)ZigLLVM_SwiftTail == llvm::CallingConv::SwiftTail, "");
 static_assert((CallingConv::ID)ZigLLVM_FirstTargetCC == llvm::CallingConv::FirstTargetCC, "");
 static_assert((CallingConv::ID)ZigLLVM_X86_StdCall == llvm::CallingConv::X86_StdCall, "");
 static_assert((CallingConv::ID)ZigLLVM_X86_FastCall == llvm::CallingConv::X86_FastCall, "");
@@ -787,4 +791,16 @@ static_assert((CallingConv::ID)ZigLLVM_MSP430_BUILTIN == llvm::CallingConv::MSP4
 static_assert((CallingConv::ID)ZigLLVM_AMDGPU_LS == llvm::CallingConv::AMDGPU_LS, "");
 static_assert((CallingConv::ID)ZigLLVM_AMDGPU_ES == llvm::CallingConv::AMDGPU_ES, "");
 static_assert((CallingConv::ID)ZigLLVM_AArch64_VectorCall == llvm::CallingConv::AArch64_VectorCall, "");
+static_assert((CallingConv::ID)ZigLLVM_AArch64_SVE_VectorCall == llvm::CallingConv::AArch64_SVE_VectorCall, "");
+static_assert((CallingConv::ID)ZigLLVM_WASM_EmscriptenInvoke == llvm::CallingConv::WASM_EmscriptenInvoke, "");
+static_assert((CallingConv::ID)ZigLLVM_AMDGPU_Gfx == llvm::CallingConv::AMDGPU_Gfx, "");
+static_assert((CallingConv::ID)ZigLLVM_M68k_INTR == llvm::CallingConv::M68k_INTR, "");
+static_assert((CallingConv::ID)ZigLLVM_AArch64_SME_ABI_Support_Routines_PreserveMost_From_X0 == llvm::CallingConv::AArch64_SME_ABI_Support_Routines_PreserveMost_From_X0, "");
+static_assert((CallingConv::ID)ZigLLVM_AArch64_SME_ABI_Support_Routines_PreserveMost_From_X2 == llvm::CallingConv::AArch64_SME_ABI_Support_Routines_PreserveMost_From_X2, "");
+static_assert((CallingConv::ID)ZigLLVM_AMDGPU_CS_Chain == llvm::CallingConv::AMDGPU_CS_Chain, "");
+static_assert((CallingConv::ID)ZigLLVM_AMDGPU_CS_ChainPreserve == llvm::CallingConv::AMDGPU_CS_ChainPreserve, "");
+static_assert((CallingConv::ID)ZigLLVM_M68k_RTD == llvm::CallingConv::M68k_RTD, "");
+static_assert((CallingConv::ID)ZigLLVM_GRAAL == llvm::CallingConv::GRAAL, "");
+static_assert((CallingConv::ID)ZigLLVM_ARM64EC_Thunk_X64 == llvm::CallingConv::ARM64EC_Thunk_X64, "");
+static_assert((CallingConv::ID)ZigLLVM_ARM64EC_Thunk_Native == llvm::CallingConv::ARM64EC_Thunk_Native, "");
 static_assert((CallingConv::ID)ZigLLVM_MaxID == llvm::CallingConv::MaxID, "");
src/zig_llvm.h
@@ -60,12 +60,14 @@ enum ZigLLVM_CallingConv {
     ZigLLVM_Cold = 9,
     ZigLLVM_GHC = 10,
     ZigLLVM_HiPE = 11,
-    ZigLLVM_WebKit_JS = 12,
     ZigLLVM_AnyReg = 13,
     ZigLLVM_PreserveMost = 14,
     ZigLLVM_PreserveAll = 15,
     ZigLLVM_Swift = 16,
     ZigLLVM_CXX_FAST_TLS = 17,
+    ZigLLVM_Tail = 18,
+    ZigLLVM_CFGuard_Check = 19,
+    ZigLLVM_SwiftTail = 20,
     ZigLLVM_FirstTargetCC = 64,
     ZigLLVM_X86_StdCall = 64,
     ZigLLVM_X86_FastCall = 65,
@@ -99,6 +101,18 @@ enum ZigLLVM_CallingConv {
     ZigLLVM_AMDGPU_LS = 95,
     ZigLLVM_AMDGPU_ES = 96,
     ZigLLVM_AArch64_VectorCall = 97,
+    ZigLLVM_AArch64_SVE_VectorCall = 98,
+    ZigLLVM_WASM_EmscriptenInvoke = 99,
+    ZigLLVM_AMDGPU_Gfx = 100,
+    ZigLLVM_M68k_INTR = 101,
+    ZigLLVM_AArch64_SME_ABI_Support_Routines_PreserveMost_From_X0 = 102,
+    ZigLLVM_AArch64_SME_ABI_Support_Routines_PreserveMost_From_X2 = 103,
+    ZigLLVM_AMDGPU_CS_Chain = 104,
+    ZigLLVM_AMDGPU_CS_ChainPreserve = 105,
+    ZigLLVM_M68k_RTD = 106,
+    ZigLLVM_GRAAL = 107,
+    ZigLLVM_ARM64EC_Thunk_X64 = 108,
+    ZigLLVM_ARM64EC_Thunk_Native = 109,
     ZigLLVM_MaxID = 1023,
 };
 
@@ -164,6 +178,7 @@ enum ZigLLVM_ArchType {
     ZigLLVM_hsail64,        // AMD HSAIL with 64-bit pointers
     ZigLLVM_spir,           // SPIR: standard portable IR for OpenCL 32-bit version
     ZigLLVM_spir64,         // SPIR: standard portable IR for OpenCL 64-bit version
+    ZigLLVM_spirv,          // SPIR-V with logical memory layout.
     ZigLLVM_spirv32,        // SPIR-V with 32-bit pointers
     ZigLLVM_spirv64,        // SPIR-V with 64-bit pointers
     ZigLLVM_kalimba,        // Kalimba: generic kalimba
@@ -189,7 +204,6 @@ enum ZigLLVM_VendorType {
     ZigLLVM_MipsTechnologies,
     ZigLLVM_NVIDIA,
     ZigLLVM_CSR,
-    ZigLLVM_Myriad,
     ZigLLVM_AMD,
     ZigLLVM_Mesa,
     ZigLLVM_SUSE,
@@ -204,8 +218,6 @@ enum ZigLLVM_VendorType {
 enum ZigLLVM_OSType {
     ZigLLVM_UnknownOS,
 
-    ZigLLVM_Ananas,
-    ZigLLVM_CloudABI,
     ZigLLVM_Darwin,
     ZigLLVM_DragonFly,
     ZigLLVM_FreeBSD,
@@ -222,7 +234,6 @@ enum ZigLLVM_OSType {
     ZigLLVM_Win32,
     ZigLLVM_ZOS,
     ZigLLVM_Haiku,
-    ZigLLVM_Minix,
     ZigLLVM_RTEMS,
     ZigLLVM_NaCl,       // Native Client
     ZigLLVM_AIX,
@@ -235,8 +246,8 @@ enum ZigLLVM_OSType {
     ZigLLVM_TvOS,       // Apple tvOS
     ZigLLVM_WatchOS,    // Apple watchOS
     ZigLLVM_DriverKit,  // Apple DriverKit
+    ZigLLVM_XROS,       // Apple XROS
     ZigLLVM_Mesa3D,
-    ZigLLVM_Contiki,
     ZigLLVM_AMDPAL,     // AMD PAL Runtime
     ZigLLVM_HermitCore, // HermitCore Unikernel/Multikernel
     ZigLLVM_Hurd,       // GNU/Hurd
@@ -244,7 +255,9 @@ enum ZigLLVM_OSType {
     ZigLLVM_Emscripten,
     ZigLLVM_ShaderModel, // DirectX ShaderModel
     ZigLLVM_LiteOS,
-    ZigLLVM_LastOSType = ZigLLVM_LiteOS
+    ZigLLVM_Serenity,
+    ZigLLVM_Vulkan,      // Vulkan SPIR-V
+    ZigLLVM_LastOSType = ZigLLVM_Vulkan
 };
 
 // Synchronize with target.cpp::abi_list