authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-08-07 21:26:59+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-08-07 21:31:39+02:00
logc11b997662c97725f88f5ce5c73ce76dbc199140
treea166112bdd3ce9b7515c4d719810a16183a82f0b
parentf9f894200891c8af6ce3a3ad222cd0bf1ee15587
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

llvm: Set vendor tag in target triple for GPU backends.


1 files changed, 8 insertions(+), 1 deletions(-)

src/codegen/llvm.zig+8-1
......@@ -89,7 +89,14 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 {
8989 .spu_2 => return error.@"LLVM backend does not support SPU Mark II",
9090 };
9191 try llvm_triple.appendSlice(llvm_arch);
92 try llvm_triple.appendSlice("-unknown-");
92
93 // Unlike CPU backends, GPU backends actually care about the vendor tag.
94 try llvm_triple.appendSlice(switch (target.cpu.arch) {
95 .amdgcn => if (target.os.tag == .mesa3d) "-mesa-" else "-amd-",
96 .nvptx, .nvptx64 => "-nvidia-",
97 .spirv64 => if (target.os.tag == .amdhsa) "-amd-" else "-unknown-",
98 else => "-unknown-",
99 });
93100
94101 const llvm_os = switch (target.os.tag) {
95102 .freestanding => "unknown",