diff options
Diffstat (limited to 'src/zig_llvm.h')
| -rw-r--r-- | src/zig_llvm.h | 344 |
1 files changed, 26 insertions, 318 deletions
diff --git a/src/zig_llvm.h b/src/zig_llvm.h index 2eb6ae290f..d2a85405e6 100644 --- a/src/zig_llvm.h +++ b/src/zig_llvm.h @@ -24,7 +24,8 @@ // ATTENTION: If you modify this file, be sure to update the corresponding // extern function declarations in the self-hosted compiler. - +// synchronize with llvm/include/Transforms/Instrumentation.h::SanitizerCoverageOptions::Type +// synchronize with codegen/llvm/bindings.zig::TargetMachine::EmitOptions::Coverage::Type enum ZigLLVMCoverageType { ZigLLVMCoverageType_None = 0, ZigLLVMCoverageType_Function, @@ -67,18 +68,32 @@ struct ZigLLVMEmitOptions { ZigLLVMCoverageOptions coverage; }; -ZIG_EXTERN_C bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMModuleRef module_ref, - char **error_message, const struct ZigLLVMEmitOptions *options); +// synchronize with llvm/include/Object/Archive.h::Object::Archive::Kind +// synchronize with codegen/llvm/bindings.zig::ArchiveKind +enum ZigLLVMArchiveKind { + ZigLLVMArchiveKind_GNU, + ZigLLVMArchiveKind_GNU64, + ZigLLVMArchiveKind_BSD, + ZigLLVMArchiveKind_DARWIN, + ZigLLVMArchiveKind_DARWIN64, + ZigLLVMArchiveKind_COFF, + ZigLLVMArchiveKind_AIXBIG, +}; -enum ZigLLVMABIType { - ZigLLVMABITypeDefault, // Target-specific (either soft or hard depending on triple, etc). - ZigLLVMABITypeSoft, // Soft float. - ZigLLVMABITypeHard // Hard float. +// synchronize with llvm/include/Target/TargetOptions.h::FloatABI::ABIType +// synchronize with codegen/llvm/bindings.zig::TargetMachine::FloatABI +enum ZigLLVMFloatABI { + ZigLLVMFloatABI_Default, // Target-specific (either soft or hard depending on triple, etc). + ZigLLVMFloatABI_Soft, // Soft float. + ZigLLVMFloatABI_Hard // Hard float. }; +ZIG_EXTERN_C bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMModuleRef module_ref, + char **error_message, const ZigLLVMEmitOptions *options); + ZIG_EXTERN_C LLVMTargetMachineRef ZigLLVMCreateTargetMachine(LLVMTargetRef T, const char *Triple, const char *CPU, const char *Features, LLVMCodeGenOptLevel Level, LLVMRelocMode Reloc, - LLVMCodeModel CodeModel, bool function_sections, bool data_sections, enum ZigLLVMABIType float_abi, + LLVMCodeModel CodeModel, bool function_sections, bool data_sections, ZigLLVMFloatABI float_abi, const char *abi_name); ZIG_EXTERN_C void ZigLLVMSetOptBisectLimit(LLVMContextRef context_ref, int limit); @@ -86,323 +101,16 @@ ZIG_EXTERN_C void ZigLLVMSetOptBisectLimit(LLVMContextRef context_ref, int limit ZIG_EXTERN_C void ZigLLVMEnableBrokenDebugInfoCheck(LLVMContextRef context_ref); ZIG_EXTERN_C bool ZigLLVMGetBrokenDebugInfo(LLVMContextRef context_ref); -enum ZigLLVMTailCallKind { - ZigLLVMTailCallKindNone, - ZigLLVMTailCallKindTail, - ZigLLVMTailCallKindMustTail, - ZigLLVMTailCallKindNoTail, -}; - -enum ZigLLVM_CallingConv { - ZigLLVM_C = 0, - ZigLLVM_Fast = 8, - ZigLLVM_Cold = 9, - ZigLLVM_GHC = 10, - ZigLLVM_HiPE = 11, - 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, - ZigLLVM_ARM_APCS = 66, - ZigLLVM_ARM_AAPCS = 67, - ZigLLVM_ARM_AAPCS_VFP = 68, - ZigLLVM_MSP430_INTR = 69, - ZigLLVM_X86_ThisCall = 70, - ZigLLVM_PTX_Kernel = 71, - ZigLLVM_PTX_Device = 72, - ZigLLVM_SPIR_FUNC = 75, - ZigLLVM_SPIR_KERNEL = 76, - ZigLLVM_Intel_OCL_BI = 77, - ZigLLVM_X86_64_SysV = 78, - ZigLLVM_Win64 = 79, - ZigLLVM_X86_VectorCall = 80, - ZigLLVM_DUMMY_HHVM = 81, - ZigLLVM_DUMMY_HHVM_C = 82, - ZigLLVM_X86_INTR = 83, - ZigLLVM_AVR_INTR = 84, - ZigLLVM_AVR_SIGNAL = 85, - ZigLLVM_AVR_BUILTIN = 86, - ZigLLVM_AMDGPU_VS = 87, - ZigLLVM_AMDGPU_GS = 88, - ZigLLVM_AMDGPU_PS = 89, - ZigLLVM_AMDGPU_CS = 90, - ZigLLVM_AMDGPU_KERNEL = 91, - ZigLLVM_X86_RegCall = 92, - ZigLLVM_AMDGPU_HS = 93, - ZigLLVM_MSP430_BUILTIN = 94, - 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, -}; - ZIG_EXTERN_C void ZigLLVMParseCommandLineOptions(size_t argc, const char *const *argv); -// synchronize with llvm/include/ADT/Triple.h::ArchType -// synchronize with std.Target.Cpu.Arch -// synchronize with codegen/llvm/bindings.zig::ArchType -enum ZigLLVM_ArchType { - ZigLLVM_UnknownArch, - - ZigLLVM_arm, // ARM (little endian): arm, armv.*, xscale - ZigLLVM_armeb, // ARM (big endian): armeb - ZigLLVM_aarch64, // AArch64 (little endian): aarch64 - ZigLLVM_aarch64_be, // AArch64 (big endian): aarch64_be - ZigLLVM_aarch64_32, // AArch64 (little endian) ILP32: aarch64_32 - ZigLLVM_arc, // ARC: Synopsys ARC - ZigLLVM_avr, // AVR: Atmel AVR microcontroller - ZigLLVM_bpfel, // eBPF or extended BPF or 64-bit BPF (little endian) - ZigLLVM_bpfeb, // eBPF or extended BPF or 64-bit BPF (big endian) - ZigLLVM_csky, // CSKY: csky - ZigLLVM_dxil, // DXIL 32-bit DirectX bytecode - ZigLLVM_hexagon, // Hexagon: hexagon - ZigLLVM_loongarch32, // LoongArch (32-bit): loongarch32 - ZigLLVM_loongarch64, // LoongArch (64-bit): loongarch64 - ZigLLVM_m68k, // M68k: Motorola 680x0 family - ZigLLVM_mips, // MIPS: mips, mipsallegrex, mipsr6 - ZigLLVM_mipsel, // MIPSEL: mipsel, mipsallegrexe, mipsr6el - ZigLLVM_mips64, // MIPS64: mips64, mips64r6, mipsn32, mipsn32r6 - ZigLLVM_mips64el, // MIPS64EL: mips64el, mips64r6el, mipsn32el, mipsn32r6el - ZigLLVM_msp430, // MSP430: msp430 - ZigLLVM_ppc, // PPC: powerpc - ZigLLVM_ppcle, // PPCLE: powerpc (little endian) - ZigLLVM_ppc64, // PPC64: powerpc64, ppu - ZigLLVM_ppc64le, // PPC64LE: powerpc64le - ZigLLVM_r600, // R600: AMD GPUs HD2XXX - HD6XXX - ZigLLVM_amdgcn, // AMDGCN: AMD GCN GPUs - ZigLLVM_riscv32, // RISC-V (32-bit): riscv32 - ZigLLVM_riscv64, // RISC-V (64-bit): riscv64 - ZigLLVM_sparc, // Sparc: sparc - ZigLLVM_sparcv9, // Sparcv9: Sparcv9 - ZigLLVM_sparcel, // Sparc: (endianness = little). NB: 'Sparcle' is a CPU variant - ZigLLVM_systemz, // SystemZ: s390x - ZigLLVM_tce, // TCE (http://tce.cs.tut.fi/): tce - ZigLLVM_tcele, // TCE little endian (http://tce.cs.tut.fi/): tcele - ZigLLVM_thumb, // Thumb (little endian): thumb, thumbv.* - ZigLLVM_thumbeb, // Thumb (big endian): thumbeb - ZigLLVM_x86, // X86: i[3-9]86 - ZigLLVM_x86_64, // X86-64: amd64, x86_64 - ZigLLVM_xcore, // XCore: xcore - ZigLLVM_xtensa, // Tensilica: Xtensa - ZigLLVM_nvptx, // NVPTX: 32-bit - ZigLLVM_nvptx64, // NVPTX: 64-bit - ZigLLVM_le32, // le32: generic little-endian 32-bit CPU (PNaCl) - ZigLLVM_le64, // le64: generic little-endian 64-bit CPU (PNaCl) - ZigLLVM_amdil, // AMDIL - ZigLLVM_amdil64, // AMDIL with 64-bit pointers - ZigLLVM_hsail, // AMD HSAIL - 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 - ZigLLVM_shave, // SHAVE: Movidius vector VLIW processors - ZigLLVM_lanai, // Lanai: Lanai 32-bit - ZigLLVM_wasm32, // WebAssembly with 32-bit pointers - ZigLLVM_wasm64, // WebAssembly with 64-bit pointers - ZigLLVM_renderscript32, // 32-bit RenderScript - ZigLLVM_renderscript64, // 64-bit RenderScript - ZigLLVM_ve, // NEC SX-Aurora Vector Engine - ZigLLVM_LastArchType = ZigLLVM_ve -}; - -enum ZigLLVM_VendorType { - ZigLLVM_UnknownVendor, - - ZigLLVM_Apple, - ZigLLVM_PC, - ZigLLVM_SCEI, - ZigLLVM_Freescale, - ZigLLVM_IBM, - ZigLLVM_ImaginationTechnologies, - ZigLLVM_MipsTechnologies, - ZigLLVM_NVIDIA, - ZigLLVM_CSR, - ZigLLVM_AMD, - ZigLLVM_Mesa, - ZigLLVM_SUSE, - ZigLLVM_OpenEmbedded, - - ZigLLVM_LastVendorType = ZigLLVM_OpenEmbedded -}; - -// synchronize with llvm/include/ADT/Triple.h::OsType -// synchronize with std.Target.Os.Tag -// synchronize with codegen/llvm/bindings.zig::OsType -enum ZigLLVM_OSType { - ZigLLVM_UnknownOS, - - ZigLLVM_Darwin, - ZigLLVM_DragonFly, - ZigLLVM_FreeBSD, - ZigLLVM_Fuchsia, - ZigLLVM_IOS, - ZigLLVM_KFreeBSD, - ZigLLVM_Linux, - ZigLLVM_Lv2, // PS3 - ZigLLVM_MacOSX, - ZigLLVM_NetBSD, - ZigLLVM_OpenBSD, - ZigLLVM_Solaris, - ZigLLVM_UEFI, - ZigLLVM_Win32, - ZigLLVM_ZOS, - ZigLLVM_Haiku, - ZigLLVM_RTEMS, - ZigLLVM_NaCl, // Native Client - ZigLLVM_AIX, - ZigLLVM_CUDA, // NVIDIA CUDA - ZigLLVM_NVCL, // NVIDIA OpenCL - ZigLLVM_AMDHSA, // AMD HSA Runtime - ZigLLVM_PS4, - ZigLLVM_PS5, - ZigLLVM_ELFIAMCU, - ZigLLVM_TvOS, // Apple tvOS - ZigLLVM_WatchOS, // Apple watchOS - ZigLLVM_BridgeOS, // Apple bridgeOS - ZigLLVM_DriverKit, // Apple DriverKit - ZigLLVM_XROS, // Apple XROS - ZigLLVM_Mesa3D, - ZigLLVM_AMDPAL, // AMD PAL Runtime - ZigLLVM_HermitCore, // HermitCore Unikernel/Multikernel - ZigLLVM_Hurd, // GNU/Hurd - ZigLLVM_WASI, // Experimental WebAssembly OS - ZigLLVM_Emscripten, - ZigLLVM_ShaderModel, // DirectX ShaderModel - ZigLLVM_LiteOS, - ZigLLVM_Serenity, - ZigLLVM_Vulkan, // Vulkan SPIR-V - ZigLLVM_LastOSType = ZigLLVM_Vulkan -}; - -// Synchronize with target.cpp::abi_list -enum ZigLLVM_EnvironmentType { - ZigLLVM_UnknownEnvironment, - - ZigLLVM_GNU, - ZigLLVM_GNUABIN32, - ZigLLVM_GNUABI64, - ZigLLVM_GNUEABI, - ZigLLVM_GNUEABIHF, - ZigLLVM_GNUF32, - ZigLLVM_GNUF64, - ZigLLVM_GNUSF, - ZigLLVM_GNUX32, - ZigLLVM_GNUILP32, - ZigLLVM_CODE16, - ZigLLVM_EABI, - ZigLLVM_EABIHF, - ZigLLVM_Android, - ZigLLVM_Musl, - ZigLLVM_MuslEABI, - ZigLLVM_MuslEABIHF, - ZigLLVM_MuslX32, - - ZigLLVM_MSVC, - ZigLLVM_Itanium, - ZigLLVM_Cygnus, - ZigLLVM_CoreCLR, - ZigLLVM_Simulator, // Simulator variants of other systems, e.g., Apple's iOS - ZigLLVM_MacABI, // Mac Catalyst variant of Apple's iOS deployment target. - - ZigLLVM_Pixel, - ZigLLVM_Vertex, - ZigLLVM_Geometry, - ZigLLVM_Hull, - ZigLLVM_Domain, - ZigLLVM_Compute, - ZigLLVM_Library, - ZigLLVM_RayGeneration, - ZigLLVM_Intersection, - ZigLLVM_AnyHit, - ZigLLVM_ClosestHit, - ZigLLVM_Miss, - ZigLLVM_Callable, - ZigLLVM_Mesh, - ZigLLVM_Amplification, - ZigLLVM_OpenCL, - ZigLLVM_OpenHOS, - - ZigLLVM_PAuthTest, - - ZigLLVM_LastEnvironmentType = ZigLLVM_PAuthTest -}; - -enum ZigLLVM_ObjectFormatType { - ZigLLVM_UnknownObjectFormat, - - ZigLLVM_COFF, - ZigLLVM_DXContainer, - ZigLLVM_ELF, - ZigLLVM_GOFF, - ZigLLVM_MachO, - ZigLLVM_SPIRV, - ZigLLVM_Wasm, - ZigLLVM_XCOFF, -}; - -#define ZigLLVM_DIFlags_Zero 0U -#define ZigLLVM_DIFlags_Private 1U -#define ZigLLVM_DIFlags_Protected 2U -#define ZigLLVM_DIFlags_Public 3U -#define ZigLLVM_DIFlags_FwdDecl (1U << 2) -#define ZigLLVM_DIFlags_AppleBlock (1U << 3) -#define ZigLLVM_DIFlags_BlockByrefStruct (1U << 4) -#define ZigLLVM_DIFlags_Virtual (1U << 5) -#define ZigLLVM_DIFlags_Artificial (1U << 6) -#define ZigLLVM_DIFlags_Explicit (1U << 7) -#define ZigLLVM_DIFlags_Prototyped (1U << 8) -#define ZigLLVM_DIFlags_ObjcClassComplete (1U << 9) -#define ZigLLVM_DIFlags_ObjectPointer (1U << 10) -#define ZigLLVM_DIFlags_Vector (1U << 11) -#define ZigLLVM_DIFlags_StaticMember (1U << 12) -#define ZigLLVM_DIFlags_LValueReference (1U << 13) -#define ZigLLVM_DIFlags_RValueReference (1U << 14) -#define ZigLLVM_DIFlags_Reserved (1U << 15) -#define ZigLLVM_DIFlags_SingleInheritance (1U << 16) -#define ZigLLVM_DIFlags_MultipleInheritance (2 << 16) -#define ZigLLVM_DIFlags_VirtualInheritance (3 << 16) -#define ZigLLVM_DIFlags_IntroducedVirtual (1U << 18) -#define ZigLLVM_DIFlags_BitField (1U << 19) -#define ZigLLVM_DIFlags_NoReturn (1U << 20) -#define ZigLLVM_DIFlags_TypePassByValue (1U << 22) -#define ZigLLVM_DIFlags_TypePassByReference (1U << 23) -#define ZigLLVM_DIFlags_EnumClass (1U << 24) -#define ZigLLVM_DIFlags_Thunk (1U << 25) -#define ZigLLVM_DIFlags_NonTrivial (1U << 26) -#define ZigLLVM_DIFlags_BigEndian (1U << 27) -#define ZigLLVM_DIFlags_LittleEndian (1U << 28) -#define ZigLLVM_DIFlags_AllCallsDescribed (1U << 29) - ZIG_EXTERN_C bool ZigLLDLinkCOFF(int argc, const char **argv, bool can_exit_early, bool disable_output); ZIG_EXTERN_C bool ZigLLDLinkELF(int argc, const char **argv, bool can_exit_early, bool disable_output); ZIG_EXTERN_C bool ZigLLDLinkWasm(int argc, const char **argv, bool can_exit_early, bool disable_output); ZIG_EXTERN_C bool ZigLLVMWriteArchive(const char *archive_name, const char **file_names, size_t file_name_count, - enum ZigLLVM_OSType os_type); + ZigLLVMArchiveKind archive_kind); -ZIG_EXTERN_C bool ZigLLVMWriteImportLibrary(const char *def_path, const enum ZigLLVM_ArchType arch, - const char *output_lib_path, bool kill_at); +ZIG_EXTERN_C bool ZigLLVMWriteImportLibrary(const char *def_path, unsigned int coff_machine, + const char *output_lib_path, bool kill_at); #endif |
