Commit c11b997662

Alex Rønne Petersen <alex@alexrp.com>
2024-08-07 21:26:59
llvm: Set vendor tag in target triple for GPU backends.
1 parent f9f8942
Changed files (1)
src
codegen
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",