From c11b997662c97725f88f5ce5c73ce76dbc199140 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Wed, 7 Aug 2024 21:26:59 +0200 Subject: [PATCH] llvm: Set vendor tag in target triple for GPU backends. --- src/codegen/llvm.zig | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 1ba1ed8b6f..5258e343e0 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -89,7 +89,14 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 { .spu_2 => return error.@"LLVM backend does not support SPU Mark II", }; try llvm_triple.appendSlice(llvm_arch); - try llvm_triple.appendSlice("-unknown-"); + + // Unlike CPU backends, GPU backends actually care about the vendor tag. + try llvm_triple.appendSlice(switch (target.cpu.arch) { + .amdgcn => if (target.os.tag == .mesa3d) "-mesa-" else "-amd-", + .nvptx, .nvptx64 => "-nvidia-", + .spirv64 => if (target.os.tag == .amdhsa) "-amd-" else "-unknown-", + else => "-unknown-", + }); const llvm_os = switch (target.os.tag) { .freestanding => "unknown",