From 628e9e6d040979bd0a2cba05e854014dee5a7d55 Mon Sep 17 00:00:00 2001 From: gwenzek Date: Mon, 21 Feb 2022 20:05:27 +0100 Subject: enable Gpu address spaces (#10884) --- src/Sema.zig | 5 ++++- src/codegen/llvm.zig | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/Sema.zig b/src/Sema.zig index 93cbb8f2cf..91cddc18ff 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -18006,10 +18006,14 @@ pub fn analyzeAddrspace( const address_space = addrspace_tv.val.toEnum(std.builtin.AddressSpace); const target = sema.mod.getTarget(); const arch = target.cpu.arch; + const is_gpu = arch == .nvptx or arch == .nvptx64; const supported = switch (address_space) { .generic => true, .gs, .fs, .ss => (arch == .i386 or arch == .x86_64) and ctx == .pointer, + // TODO: check that .shared and .local are left uninitialized + .global, .param, .shared, .local => is_gpu, + .constant => is_gpu and (ctx == .constant), }; if (!supported) { @@ -18020,7 +18024,6 @@ pub fn analyzeAddrspace( .constant => "constant values", .pointer => "pointers", }; - return sema.fail( block, src, diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index ed57562e4c..f40dbf41de 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -801,6 +801,16 @@ pub const DeclGen = struct { .gs => llvm.address_space.x86.gs, .fs => llvm.address_space.x86.fs, .ss => llvm.address_space.x86.ss, + else => unreachable, + }, + .nvptx, .nvptx64 => switch (address_space) { + .generic => llvm.address_space.default, + .global => llvm.address_space.nvptx.global, + .constant => llvm.address_space.nvptx.constant, + .param => llvm.address_space.nvptx.param, + .shared => llvm.address_space.nvptx.shared, + .local => llvm.address_space.nvptx.local, + else => unreachable, }, else => switch (address_space) { .generic => llvm.address_space.default, -- cgit v1.2.3