From 3392de87dcf516ed2e3fd1904372195bdc75c0eb Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Sat, 20 Aug 2022 12:42:27 +0200 Subject: [PATCH] allow global/local/shared address spaces on amdgcn --- src/Sema.zig | 6 ++++-- src/codegen/llvm.zig | 8 ++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Sema.zig b/src/Sema.zig index 505764da8a..b357beafdf 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -30303,13 +30303,15 @@ 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 is_nv = arch == .nvptx or arch == .nvptx64; + const is_gpu = is_nv or arch == .amdgcn; 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, + .param => is_nv, + .global, .shared, .local => is_gpu, .constant => is_gpu and (ctx == .constant), }; diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 7f411c8373..d0433be2b9 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -2659,6 +2659,14 @@ pub const DeclGen = struct { .local => llvm.address_space.nvptx.local, else => unreachable, }, + .amdgcn => switch (address_space) { + .generic => llvm.address_space.flat, + .global => llvm.address_space.amdgpu.global, + .constant => llvm.address_space.amdgpu.constant, + .shared => llvm.address_space.amdgpu.local, + .local => llvm.address_space.amdgpu.private, + else => unreachable, + }. else => switch (address_space) { .generic => llvm.address_space.default, else => unreachable,