mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 05:44:20 +00:00
LLVM backend: loongarch64 support
This commit is contained in:
parent
332fbb4b02
commit
ac3faa6cb3
3 changed files with 26 additions and 3 deletions
|
|
@ -1537,6 +1537,7 @@ pub const Cpu = struct {
|
|||
.x86 => &x86.cpu.pentium4,
|
||||
.nvptx, .nvptx64 => &nvptx.cpu.sm_20,
|
||||
.sparc, .sparcel => &sparc.cpu.v8,
|
||||
.loongarch64 => &loongarch.cpu.loongarch64,
|
||||
|
||||
else => generic(arch),
|
||||
};
|
||||
|
|
@ -1986,6 +1987,7 @@ pub fn stackAlignment(target: Target) u16 {
|
|||
.ve,
|
||||
.wasm32,
|
||||
.wasm64,
|
||||
.loongarch64,
|
||||
=> 16,
|
||||
.powerpc64,
|
||||
.powerpc64le,
|
||||
|
|
|
|||
|
|
@ -426,7 +426,9 @@ const DataLayoutBuilder = struct {
|
|||
};
|
||||
if (self.target.cpu.arch == .aarch64_32) continue;
|
||||
if (!info.force_in_data_layout and matches_default and
|
||||
self.target.cpu.arch != .riscv64 and !(self.target.cpu.arch == .aarch64 and
|
||||
self.target.cpu.arch != .riscv64 and
|
||||
self.target.cpu.arch != .loongarch64 and
|
||||
!(self.target.cpu.arch == .aarch64 and
|
||||
(self.target.os.tag == .uefi or self.target.os.tag == .windows)) and
|
||||
self.target.cpu.arch != .bpfeb and self.target.cpu.arch != .bpfel) continue;
|
||||
try writer.writeAll("-p");
|
||||
|
|
@ -535,6 +537,7 @@ const DataLayoutBuilder = struct {
|
|||
.nvptx64,
|
||||
=> &.{ 16, 32, 64 },
|
||||
.x86_64 => &.{ 8, 16, 32, 64 },
|
||||
.loongarch64 => &.{64},
|
||||
else => &.{},
|
||||
}), 0..) |natural, index| switch (index) {
|
||||
0 => try writer.print("-n{d}", .{natural}),
|
||||
|
|
@ -686,6 +689,14 @@ const DataLayoutBuilder = struct {
|
|||
},
|
||||
else => {},
|
||||
},
|
||||
.loongarch64 => switch (size) {
|
||||
128 => {
|
||||
abi = size;
|
||||
pref = size;
|
||||
force_abi = true;
|
||||
},
|
||||
else => {},
|
||||
},
|
||||
else => {},
|
||||
}
|
||||
},
|
||||
|
|
@ -12039,6 +12050,13 @@ pub fn initializeLLVMTarget(arch: std.Target.Cpu.Arch) void {
|
|||
// There is no LLVMInitializeARCAsmParser function.
|
||||
}
|
||||
},
|
||||
.loongarch32, .loongarch64 => {
|
||||
llvm.LLVMInitializeLoongArchTarget();
|
||||
llvm.LLVMInitializeLoongArchTargetInfo();
|
||||
llvm.LLVMInitializeLoongArchTargetMC();
|
||||
llvm.LLVMInitializeLoongArchAsmPrinter();
|
||||
llvm.LLVMInitializeLoongArchAsmParser();
|
||||
},
|
||||
|
||||
// LLVM backends that have no initialization functions.
|
||||
.tce,
|
||||
|
|
@ -12060,8 +12078,6 @@ pub fn initializeLLVMTarget(arch: std.Target.Cpu.Arch) void {
|
|||
.renderscript32,
|
||||
.renderscript64,
|
||||
.dxil,
|
||||
.loongarch32,
|
||||
.loongarch64,
|
||||
=> {},
|
||||
|
||||
.spu_2 => unreachable, // LLVM does not support this backend
|
||||
|
|
|
|||
|
|
@ -177,6 +177,7 @@ pub extern fn LLVMInitializeM68kTargetInfo() void;
|
|||
pub extern fn LLVMInitializeCSKYTargetInfo() void;
|
||||
pub extern fn LLVMInitializeVETargetInfo() void;
|
||||
pub extern fn LLVMInitializeARCTargetInfo() void;
|
||||
pub extern fn LLVMInitializeLoongArchTargetInfo() void;
|
||||
|
||||
pub extern fn LLVMInitializeAArch64Target() void;
|
||||
pub extern fn LLVMInitializeAMDGPUTarget() void;
|
||||
|
|
@ -200,6 +201,7 @@ pub extern fn LLVMInitializeM68kTarget() void;
|
|||
pub extern fn LLVMInitializeVETarget() void;
|
||||
pub extern fn LLVMInitializeCSKYTarget() void;
|
||||
pub extern fn LLVMInitializeARCTarget() void;
|
||||
pub extern fn LLVMInitializeLoongArchTarget() void;
|
||||
|
||||
pub extern fn LLVMInitializeAArch64TargetMC() void;
|
||||
pub extern fn LLVMInitializeAMDGPUTargetMC() void;
|
||||
|
|
@ -223,6 +225,7 @@ pub extern fn LLVMInitializeM68kTargetMC() void;
|
|||
pub extern fn LLVMInitializeCSKYTargetMC() void;
|
||||
pub extern fn LLVMInitializeVETargetMC() void;
|
||||
pub extern fn LLVMInitializeARCTargetMC() void;
|
||||
pub extern fn LLVMInitializeLoongArchTargetMC() void;
|
||||
|
||||
pub extern fn LLVMInitializeAArch64AsmPrinter() void;
|
||||
pub extern fn LLVMInitializeAMDGPUAsmPrinter() void;
|
||||
|
|
@ -244,6 +247,7 @@ pub extern fn LLVMInitializeXCoreAsmPrinter() void;
|
|||
pub extern fn LLVMInitializeM68kAsmPrinter() void;
|
||||
pub extern fn LLVMInitializeVEAsmPrinter() void;
|
||||
pub extern fn LLVMInitializeARCAsmPrinter() void;
|
||||
pub extern fn LLVMInitializeLoongArchAsmPrinter() void;
|
||||
|
||||
pub extern fn LLVMInitializeAArch64AsmParser() void;
|
||||
pub extern fn LLVMInitializeAMDGPUAsmParser() void;
|
||||
|
|
@ -264,6 +268,7 @@ pub extern fn LLVMInitializeXtensaAsmParser() void;
|
|||
pub extern fn LLVMInitializeM68kAsmParser() void;
|
||||
pub extern fn LLVMInitializeCSKYAsmParser() void;
|
||||
pub extern fn LLVMInitializeVEAsmParser() void;
|
||||
pub extern fn LLVMInitializeLoongArchAsmParser() void;
|
||||
|
||||
extern fn ZigLLDLinkCOFF(argc: c_int, argv: [*:null]const ?[*:0]const u8, can_exit_early: bool, disable_output: bool) bool;
|
||||
extern fn ZigLLDLinkELF(argc: c_int, argv: [*:null]const ?[*:0]const u8, can_exit_early: bool, disable_output: bool) bool;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue