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.
This commit is contained in:
Andrew Kelley 2024-04-25 15:41:11 -07:00
parent 70c85b1bf1
commit 243ae3a6cb
4 changed files with 57 additions and 27 deletions

View File

@ -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 {

View File

@ -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,

View File

@ -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, "");

View File

@ -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