| author | |
| committer | |
| log | ac3faa6cb3244a5db26b4fd5b114da23208e2239 |
| tree | 654d7b95c0ed568e5d6758289286ea94692180a1 |
| parent | 332fbb4b027a5529e58b1e46d785718a7faa75e6 |
3 files changed, 26 insertions(+), 3 deletions(-)
lib/std/Target.zig+2| ... | ... | @@ -1537,6 +1537,7 @@ pub const Cpu = struct { |
| 1537 | 1537 | .x86 => &x86.cpu.pentium4, |
| 1538 | 1538 | .nvptx, .nvptx64 => &nvptx.cpu.sm_20, |
| 1539 | 1539 | .sparc, .sparcel => &sparc.cpu.v8, |
| 1540 | .loongarch64 => &loongarch.cpu.loongarch64, | |
| 1540 | 1541 | |
| 1541 | 1542 | else => generic(arch), |
| 1542 | 1543 | }; |
| ... | ... | @@ -1986,6 +1987,7 @@ pub fn stackAlignment(target: Target) u16 { |
| 1986 | 1987 | .ve, |
| 1987 | 1988 | .wasm32, |
| 1988 | 1989 | .wasm64, |
| 1990 | .loongarch64, | |
| 1989 | 1991 | => 16, |
| 1990 | 1992 | .powerpc64, |
| 1991 | 1993 | .powerpc64le, |
src/codegen/llvm.zig+19-3| ... | ... | @@ -426,7 +426,9 @@ const DataLayoutBuilder = struct { |
| 426 | 426 | }; |
| 427 | 427 | if (self.target.cpu.arch == .aarch64_32) continue; |
| 428 | 428 | if (!info.force_in_data_layout and matches_default and |
| 429 | self.target.cpu.arch != .riscv64 and !(self.target.cpu.arch == .aarch64 and | |
| 429 | self.target.cpu.arch != .riscv64 and | |
| 430 | self.target.cpu.arch != .loongarch64 and | |
| 431 | !(self.target.cpu.arch == .aarch64 and | |
| 430 | 432 | (self.target.os.tag == .uefi or self.target.os.tag == .windows)) and |
| 431 | 433 | self.target.cpu.arch != .bpfeb and self.target.cpu.arch != .bpfel) continue; |
| 432 | 434 | try writer.writeAll("-p"); |
| ... | ... | @@ -535,6 +537,7 @@ const DataLayoutBuilder = struct { |
| 535 | 537 | .nvptx64, |
| 536 | 538 | => &.{ 16, 32, 64 }, |
| 537 | 539 | .x86_64 => &.{ 8, 16, 32, 64 }, |
| 540 | .loongarch64 => &.{64}, | |
| 538 | 541 | else => &.{}, |
| 539 | 542 | }), 0..) |natural, index| switch (index) { |
| 540 | 543 | 0 => try writer.print("-n{d}", .{natural}), |
| ... | ... | @@ -686,6 +689,14 @@ const DataLayoutBuilder = struct { |
| 686 | 689 | }, |
| 687 | 690 | else => {}, |
| 688 | 691 | }, |
| 692 | .loongarch64 => switch (size) { | |
| 693 | 128 => { | |
| 694 | abi = size; | |
| 695 | pref = size; | |
| 696 | force_abi = true; | |
| 697 | }, | |
| 698 | else => {}, | |
| 699 | }, | |
| 689 | 700 | else => {}, |
| 690 | 701 | } |
| 691 | 702 | }, |
| ... | ... | @@ -12039,6 +12050,13 @@ pub fn initializeLLVMTarget(arch: std.Target.Cpu.Arch) void { |
| 12039 | 12050 | // There is no LLVMInitializeARCAsmParser function. |
| 12040 | 12051 | } |
| 12041 | 12052 | }, |
| 12053 | .loongarch32, .loongarch64 => { | |
| 12054 | llvm.LLVMInitializeLoongArchTarget(); | |
| 12055 | llvm.LLVMInitializeLoongArchTargetInfo(); | |
| 12056 | llvm.LLVMInitializeLoongArchTargetMC(); | |
| 12057 | llvm.LLVMInitializeLoongArchAsmPrinter(); | |
| 12058 | llvm.LLVMInitializeLoongArchAsmParser(); | |
| 12059 | }, | |
| 12042 | 12060 | |
| 12043 | 12061 | // LLVM backends that have no initialization functions. |
| 12044 | 12062 | .tce, |
| ... | ... | @@ -12060,8 +12078,6 @@ pub fn initializeLLVMTarget(arch: std.Target.Cpu.Arch) void { |
| 12060 | 12078 | .renderscript32, |
| 12061 | 12079 | .renderscript64, |
| 12062 | 12080 | .dxil, |
| 12063 | .loongarch32, | |
| 12064 | .loongarch64, | |
| 12065 | 12081 | => {}, |
| 12066 | 12082 | |
| 12067 | 12083 | .spu_2 => unreachable, // LLVM does not support this backend |
src/codegen/llvm/bindings.zig+5| ... | ... | @@ -177,6 +177,7 @@ pub extern fn LLVMInitializeM68kTargetInfo() void; |
| 177 | 177 | pub extern fn LLVMInitializeCSKYTargetInfo() void; |
| 178 | 178 | pub extern fn LLVMInitializeVETargetInfo() void; |
| 179 | 179 | pub extern fn LLVMInitializeARCTargetInfo() void; |
| 180 | pub extern fn LLVMInitializeLoongArchTargetInfo() void; | |
| 180 | 181 | |
| 181 | 182 | pub extern fn LLVMInitializeAArch64Target() void; |
| 182 | 183 | pub extern fn LLVMInitializeAMDGPUTarget() void; |
| ... | ... | @@ -200,6 +201,7 @@ pub extern fn LLVMInitializeM68kTarget() void; |
| 200 | 201 | pub extern fn LLVMInitializeVETarget() void; |
| 201 | 202 | pub extern fn LLVMInitializeCSKYTarget() void; |
| 202 | 203 | pub extern fn LLVMInitializeARCTarget() void; |
| 204 | pub extern fn LLVMInitializeLoongArchTarget() void; | |
| 203 | 205 | |
| 204 | 206 | pub extern fn LLVMInitializeAArch64TargetMC() void; |
| 205 | 207 | pub extern fn LLVMInitializeAMDGPUTargetMC() void; |
| ... | ... | @@ -223,6 +225,7 @@ pub extern fn LLVMInitializeM68kTargetMC() void; |
| 223 | 225 | pub extern fn LLVMInitializeCSKYTargetMC() void; |
| 224 | 226 | pub extern fn LLVMInitializeVETargetMC() void; |
| 225 | 227 | pub extern fn LLVMInitializeARCTargetMC() void; |
| 228 | pub extern fn LLVMInitializeLoongArchTargetMC() void; | |
| 226 | 229 | |
| 227 | 230 | pub extern fn LLVMInitializeAArch64AsmPrinter() void; |
| 228 | 231 | pub extern fn LLVMInitializeAMDGPUAsmPrinter() void; |
| ... | ... | @@ -244,6 +247,7 @@ pub extern fn LLVMInitializeXCoreAsmPrinter() void; |
| 244 | 247 | pub extern fn LLVMInitializeM68kAsmPrinter() void; |
| 245 | 248 | pub extern fn LLVMInitializeVEAsmPrinter() void; |
| 246 | 249 | pub extern fn LLVMInitializeARCAsmPrinter() void; |
| 250 | pub extern fn LLVMInitializeLoongArchAsmPrinter() void; | |
| 247 | 251 | |
| 248 | 252 | pub extern fn LLVMInitializeAArch64AsmParser() void; |
| 249 | 253 | pub extern fn LLVMInitializeAMDGPUAsmParser() void; |
| ... | ... | @@ -264,6 +268,7 @@ pub extern fn LLVMInitializeXtensaAsmParser() void; |
| 264 | 268 | pub extern fn LLVMInitializeM68kAsmParser() void; |
| 265 | 269 | pub extern fn LLVMInitializeCSKYAsmParser() void; |
| 266 | 270 | pub extern fn LLVMInitializeVEAsmParser() void; |
| 271 | pub extern fn LLVMInitializeLoongArchAsmParser() void; | |
| 267 | 272 | |
| 268 | 273 | extern fn ZigLLDLinkCOFF(argc: c_int, argv: [*:null]const ?[*:0]const u8, can_exit_early: bool, disable_output: bool) bool; |
| 269 | 274 | extern fn ZigLLDLinkELF(argc: c_int, argv: [*:null]const ?[*:0]const u8, can_exit_early: bool, disable_output: bool) bool; |