Skip to content

Commit

Permalink
Merge pull request #420 from loongarch-rs/loongarch
Browse files Browse the repository at this point in the history
Add support for LoongArch
  • Loading branch information
TheDan64 committed May 21, 2023
2 parents 41d335b + 2291189 commit ec963b9
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 1 deletion.
4 changes: 3 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ target-bpf = []
target-lanai = []
target-webassembly = []
target-riscv = []
target-loongarch = []
target-syncvm = []
target-all = [
"target-x86",
Expand All @@ -82,6 +83,7 @@ target-all = [
"target-lanai",
"target-webassembly",
"target-riscv",
"target-loongarch",
]
experimental = ["static-alloc"]
nightly = ["inkwell_internals/nightly"]
Expand All @@ -102,7 +104,7 @@ llvm-sys-120 = { package = "llvm-sys", version = "120.2.4", optional = true }
llvm-sys-130 = { package = "llvm-sys", version = "130.0.4", optional = true }
llvm-sys-140 = { package = "llvm-sys", version = "140.0.2", optional = true }
llvm-sys-150 = { package = "llvm-sys", version = "150.0.3", optional = true }
llvm-sys-160 = { package = "llvm-sys", version = "160.0.2", optional = true }
llvm-sys-160 = { package = "llvm-sys", version = "160.1.0", optional = true }
once_cell = "1.16"
parking_lot = "0.12"
static-alloc = { version = "0.2", optional = true }
Expand Down
39 changes: 39 additions & 0 deletions src/targets.rs
Original file line number Diff line number Diff line change
Expand Up @@ -715,6 +715,45 @@ impl Target {
}
}

#[cfg(feature = "target-loongarch")]
#[llvm_versions(16.0..=latest)]
pub fn initialize_loongarch(config: &InitializationConfig) {
use llvm_sys::target::{
LLVMInitializeLoongArchAsmParser, LLVMInitializeLoongArchAsmPrinter, LLVMInitializeLoongArchDisassembler,
LLVMInitializeLoongArchTarget, LLVMInitializeLoongArchTargetInfo, LLVMInitializeLoongArchTargetMC,
};

if config.base {
let _guard = TARGET_LOCK.write();
unsafe { LLVMInitializeLoongArchTarget() };
}

if config.info {
let _guard = TARGET_LOCK.write();
unsafe { LLVMInitializeLoongArchTargetInfo() };
}

if config.asm_printer {
let _guard = TARGET_LOCK.write();
unsafe { LLVMInitializeLoongArchAsmPrinter() };
}

if config.asm_parser {
let _guard = TARGET_LOCK.write();
unsafe { LLVMInitializeLoongArchAsmParser() };
}

if config.disassembler {
let _guard = TARGET_LOCK.write();
unsafe { LLVMInitializeLoongArchDisassembler() };
}

if config.machine_code {
let _guard = TARGET_LOCK.write();
unsafe { LLVMInitializeLoongArchTargetMC() };
}
}

#[cfg(feature = "target-webassembly")]
#[llvm_versions(8.0..=latest)]
pub fn initialize_webassembly(config: &InitializationConfig) {
Expand Down

0 comments on commit ec963b9

Please sign in to comment.