Skip to main content

llvm_sys/
target.rs

1//! Target information
2
3use super::prelude::*;
4
5#[repr(C)]
6#[derive(Clone, Copy, Debug, PartialEq)]
7pub enum LLVMByteOrdering {
8    LLVMBigEndian = 0,
9    LLVMLittleEndian = 1,
10}
11
12#[derive(Debug)]
13pub enum LLVMOpaqueTargetData {}
14
15pub type LLVMTargetDataRef = *mut LLVMOpaqueTargetData;
16
17#[derive(Debug)]
18pub enum LLVMOpaqueTargetLibraryInfotData {}
19
20pub type LLVMTargetLibraryInfoRef = *mut LLVMOpaqueTargetLibraryInfotData;
21
22extern "C" {
23    pub fn LLVMInitializeAMDGPUTargetInfo();
24    pub fn LLVMInitializeAMDGPUTarget();
25    pub fn LLVMInitializeAMDGPUTargetMC();
26    pub fn LLVMInitializeAMDGPUAsmPrinter();
27    pub fn LLVMInitializeAMDGPUAsmParser();
28    // Disassembler?
29
30    pub fn LLVMInitializeSystemZTargetInfo();
31    pub fn LLVMInitializeSystemZTarget();
32    pub fn LLVMInitializeSystemZTargetMC();
33    pub fn LLVMInitializeSystemZAsmPrinter();
34    pub fn LLVMInitializeSystemZAsmParser();
35    pub fn LLVMInitializeSystemZDisassembler();
36
37    pub fn LLVMInitializeHexagonTargetInfo();
38    pub fn LLVMInitializeHexagonTarget();
39    pub fn LLVMInitializeHexagonTargetMC();
40    pub fn LLVMInitializeHexagonAsmPrinter();
41    // AsmParser?
42    pub fn LLVMInitializeHexagonDisassembler();
43
44    pub fn LLVMInitializeNVPTXTargetInfo();
45    pub fn LLVMInitializeNVPTXTarget();
46    pub fn LLVMInitializeNVPTXTargetMC();
47    pub fn LLVMInitializeNVPTXAsmPrinter();
48    // AsmParser?
49
50    pub fn LLVMInitializeMSP430TargetInfo();
51    pub fn LLVMInitializeMSP430Target();
52    pub fn LLVMInitializeMSP430TargetMC();
53    pub fn LLVMInitializeMSP430AsmPrinter();
54    // AsmParser?
55
56    pub fn LLVMInitializeXCoreTargetInfo();
57    pub fn LLVMInitializeXCoreTarget();
58    pub fn LLVMInitializeXCoreTargetMC();
59    pub fn LLVMInitializeXCoreAsmPrinter();
60    // AsmParser?
61    pub fn LLVMInitializeXCoreDisassembler();
62
63    pub fn LLVMInitializeMipsTargetInfo();
64    pub fn LLVMInitializeMipsTarget();
65    pub fn LLVMInitializeMipsTargetMC();
66    pub fn LLVMInitializeMipsAsmPrinter();
67    pub fn LLVMInitializeMipsAsmParser();
68    pub fn LLVMInitializeMipsDisassembler();
69
70    pub fn LLVMInitializeAArch64TargetInfo();
71    pub fn LLVMInitializeAArch64Target();
72    pub fn LLVMInitializeAArch64TargetMC();
73    pub fn LLVMInitializeAArch64AsmPrinter();
74    pub fn LLVMInitializeAArch64AsmParser();
75    pub fn LLVMInitializeAArch64Disassembler();
76
77    pub fn LLVMInitializeARMTargetInfo();
78    pub fn LLVMInitializeARMTarget();
79    pub fn LLVMInitializeARMTargetMC();
80    pub fn LLVMInitializeARMAsmPrinter();
81    pub fn LLVMInitializeARMAsmParser();
82    pub fn LLVMInitializeARMDisassembler();
83
84    pub fn LLVMInitializePowerPCTargetInfo();
85    pub fn LLVMInitializePowerPCTarget();
86    pub fn LLVMInitializePowerPCTargetMC();
87    pub fn LLVMInitializePowerPCAsmPrinter();
88    pub fn LLVMInitializePowerPCAsmParser();
89    pub fn LLVMInitializePowerPCDisassembler();
90
91    pub fn LLVMInitializeSparcTargetInfo();
92    pub fn LLVMInitializeSparcTarget();
93    pub fn LLVMInitializeSparcTargetMC();
94    pub fn LLVMInitializeSparcAsmPrinter();
95    pub fn LLVMInitializeSparcAsmParser();
96    pub fn LLVMInitializeSparcDisassembler();
97
98    pub fn LLVMInitializeX86TargetInfo();
99    pub fn LLVMInitializeX86Target();
100    pub fn LLVMInitializeX86TargetMC();
101    pub fn LLVMInitializeX86AsmPrinter();
102    pub fn LLVMInitializeX86AsmParser();
103    pub fn LLVMInitializeX86Disassembler();
104
105    pub fn LLVMInitializeBPFTargetInfo();
106    pub fn LLVMInitializeBPFTarget();
107    pub fn LLVMInitializeBPFTargetMC();
108    pub fn LLVMInitializeBPFAsmPrinter();
109    pub fn LLVMInitializeBPFAsmParser();
110    pub fn LLVMInitializeBPFDisassembler();
111
112    pub fn LLVMInitializeLanaiTargetInfo();
113    pub fn LLVMInitializeLanaiTarget();
114    pub fn LLVMInitializeLanaiTargetMC();
115    pub fn LLVMInitializeLanaiAsmPrinter();
116    pub fn LLVMInitializeLanaiAsmParser();
117    pub fn LLVMInitializeLanaiDisassembler();
118
119    pub fn LLVMInitializeRISCVTargetInfo();
120    pub fn LLVMInitializeRISCVTarget();
121    pub fn LLVMInitializeRISCVTargetMC();
122    pub fn LLVMInitializeRISCVAsmPrinter();
123    pub fn LLVMInitializeRISCVAsmParser();
124    pub fn LLVMInitializeRISCVDisassembler();
125
126    pub fn LLVMInitializeLoongArchTargetInfo();
127    pub fn LLVMInitializeLoongArchTarget();
128    pub fn LLVMInitializeLoongArchTargetMC();
129    pub fn LLVMInitializeLoongArchAsmPrinter();
130    pub fn LLVMInitializeLoongArchAsmParser();
131    pub fn LLVMInitializeLoongArchDisassembler();
132
133    pub fn LLVMInitializeWebAssemblyTargetInfo();
134    pub fn LLVMInitializeWebAssemblyTarget();
135    pub fn LLVMInitializeWebAssemblyTargetMC();
136    pub fn LLVMInitializeWebAssemblyAsmPrinter();
137    pub fn LLVMInitializeWebAssemblyAsmParser();
138    pub fn LLVMInitializeWebAssemblyDisassembler();
139}
140
141extern "C" {
142    /// Get the data layout for a module.
143    pub fn LLVMGetModuleDataLayout(M: LLVMModuleRef) -> LLVMTargetDataRef;
144    /// Set the data layout for a module.
145    pub fn LLVMSetModuleDataLayout(M: LLVMModuleRef, R: LLVMTargetDataRef);
146    /// Create target data from a target layout string.
147    pub fn LLVMCreateTargetData(StringRep: *const ::libc::c_char) -> LLVMTargetDataRef;
148    pub fn LLVMAddTargetLibraryInfo(TLI: LLVMTargetLibraryInfoRef, PM: LLVMPassManagerRef);
149    pub fn LLVMCopyStringRepOfTargetData(TD: LLVMTargetDataRef) -> *mut ::libc::c_char;
150    pub fn LLVMByteOrder(TD: LLVMTargetDataRef) -> LLVMByteOrdering;
151    pub fn LLVMPointerSize(TD: LLVMTargetDataRef) -> ::libc::c_uint;
152    pub fn LLVMPointerSizeForAS(TD: LLVMTargetDataRef, AS: ::libc::c_uint) -> ::libc::c_uint;
153    #[deprecated(
154        since = "221.0.0",
155        note = "Use of the global context is deprecated, use LLVMIntPtrTypeInContext instead."
156    )]
157    pub fn LLVMIntPtrType(TD: LLVMTargetDataRef) -> LLVMTypeRef;
158    #[deprecated(
159        since = "221.0.0",
160        note = "Use of the global context is deprecated, use LLVMIntPtrTypeForASInContext instead."
161    )]
162    pub fn LLVMIntPtrTypeForAS(TD: LLVMTargetDataRef, AS: ::libc::c_uint) -> LLVMTypeRef;
163    pub fn LLVMIntPtrTypeInContext(C: LLVMContextRef, TD: LLVMTargetDataRef) -> LLVMTypeRef;
164    pub fn LLVMIntPtrTypeForASInContext(
165        C: LLVMContextRef,
166        TD: LLVMTargetDataRef,
167        AS: ::libc::c_uint,
168    ) -> LLVMTypeRef;
169    pub fn LLVMSizeOfTypeInBits(TD: LLVMTargetDataRef, Ty: LLVMTypeRef) -> ::libc::c_ulonglong;
170    pub fn LLVMStoreSizeOfType(TD: LLVMTargetDataRef, Ty: LLVMTypeRef) -> ::libc::c_ulonglong;
171    pub fn LLVMABISizeOfType(TD: LLVMTargetDataRef, Ty: LLVMTypeRef) -> ::libc::c_ulonglong;
172    pub fn LLVMABIAlignmentOfType(TD: LLVMTargetDataRef, Ty: LLVMTypeRef) -> ::libc::c_uint;
173    pub fn LLVMCallFrameAlignmentOfType(TD: LLVMTargetDataRef, Ty: LLVMTypeRef) -> ::libc::c_uint;
174    pub fn LLVMPreferredAlignmentOfType(TD: LLVMTargetDataRef, Ty: LLVMTypeRef) -> ::libc::c_uint;
175    pub fn LLVMPreferredAlignmentOfGlobal(
176        TD: LLVMTargetDataRef,
177        GlobalVar: LLVMValueRef,
178    ) -> ::libc::c_uint;
179    pub fn LLVMElementAtOffset(
180        TD: LLVMTargetDataRef,
181        StructTy: LLVMTypeRef,
182        Offset: ::libc::c_ulonglong,
183    ) -> ::libc::c_uint;
184    pub fn LLVMOffsetOfElement(
185        TD: LLVMTargetDataRef,
186        StructTy: LLVMTypeRef,
187        Element: ::libc::c_uint,
188    ) -> ::libc::c_ulonglong;
189    pub fn LLVMDisposeTargetData(TD: LLVMTargetDataRef);
190}
191
192// Functions from our target wrappers, since the C interface defines them with
193// macros (wrappers/target.c).
194extern "C" {
195    pub fn LLVM_InitializeAllTargetInfos();
196    pub fn LLVM_InitializeAllTargets();
197    pub fn LLVM_InitializeAllTargetMCs();
198    pub fn LLVM_InitializeAllAsmPrinters();
199    pub fn LLVM_InitializeAllAsmParsers();
200    pub fn LLVM_InitializeAllDisassemblers();
201
202    /// Returns 1 on failure.
203    pub fn LLVM_InitializeNativeTarget() -> LLVMBool;
204    /// Returns 1 on failure.
205    pub fn LLVM_InitializeNativeAsmParser() -> LLVMBool;
206    /// Returns 1 on failure.
207    pub fn LLVM_InitializeNativeAsmPrinter() -> LLVMBool;
208    /// Returns 1 on failure.
209    pub fn LLVM_InitializeNativeDisassembler() -> LLVMBool;
210}