Skip to content

Commit 6c0589c

Browse files
authored
[GFX13][Clang] Add w32 predicate to DDS Clang builtins (#3471)
DDS instructions should only we used in wave32. Add the predicates to the builtins, so clang can give an error if this is attempted.
1 parent 7368d31 commit 6c0589c

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

clang/include/clang/Basic/BuiltinsAMDGPU.def

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1216,11 +1216,11 @@ TARGET_BUILTIN(__builtin_amdgcn_load_mcast_b32, "vi*10iC*Iii", "n", "gfx13-insts
12161216
TARGET_BUILTIN(__builtin_amdgcn_load_mcast_b64, "vV2i*10V2iC*Iii", "n", "gfx13-insts,wavefrontsize32")
12171217
TARGET_BUILTIN(__builtin_amdgcn_load_mcast_b128, "vV4i*10V4iC*Iii", "n", "gfx13-insts,wavefrontsize32")
12181218

1219-
TARGET_BUILTIN(__builtin_amdgcn_map_shared_rank, "v*11v*3i", "n", "gfx13-insts")
1220-
TARGET_BUILTIN(__builtin_amdgcn_query_shared_rank, "ivC*11", "n", "gfx13-insts")
1221-
TARGET_BUILTIN(__builtin_amdgcn_dds_load_async_to_lds_b32, "viC*11i*3IiIi", "n", "gfx13-insts")
1222-
TARGET_BUILTIN(__builtin_amdgcn_dds_load_async_to_lds_b64, "vV2iC*11V2i*3IiIi", "n", "gfx13-insts")
1223-
TARGET_BUILTIN(__builtin_amdgcn_dds_load_async_to_lds_b128, "vV4iC*11V4i*3IiIi", "n", "gfx13-insts")
1219+
TARGET_BUILTIN(__builtin_amdgcn_map_shared_rank, "v*11v*3i", "n", "gfx13-insts,wavefrontsize32")
1220+
TARGET_BUILTIN(__builtin_amdgcn_query_shared_rank, "ivC*11", "n", "gfx13-insts,wavefrontsize32")
1221+
TARGET_BUILTIN(__builtin_amdgcn_dds_load_async_to_lds_b32, "viC*11i*3IiIi", "n", "gfx13-insts,wavefrontsize32")
1222+
TARGET_BUILTIN(__builtin_amdgcn_dds_load_async_to_lds_b64, "vV2iC*11V2i*3IiIi", "n", "gfx13-insts,wavefrontsize32")
1223+
TARGET_BUILTIN(__builtin_amdgcn_dds_load_async_to_lds_b128, "vV4iC*11V4i*3IiIi", "n", "gfx13-insts,wavefrontsize32")
12241224
TARGET_BUILTIN(__builtin_amdgcn_dds_load_async_mcast_to_lds_b32, "viC*11i*3IiIii", "n", "gfx13-insts,wavefrontsize32")
12251225
TARGET_BUILTIN(__builtin_amdgcn_dds_load_async_mcast_to_lds_b64, "vV2iC*11V2i*3IiIii", "n", "gfx13-insts,wavefrontsize32")
12261226
TARGET_BUILTIN(__builtin_amdgcn_dds_load_async_mcast_to_lds_b128, "vV4iC*11V4i*3IiIii", "n", "gfx13-insts,wavefrontsize32")
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// REQUIRES: amdgpu-registered-target
2+
// RUN: %clang_cc1 -cl-std=CL2.0 -triple amdgcn-unknown-unknown -target-cpu gfx1300 -target-feature -wavefrontsize64 \
3+
// RUN: -emit-llvm -verify -o - %s
4+
5+
typedef int v2i __attribute__((ext_vector_type(2)));
6+
typedef int v4i __attribute__((ext_vector_type(4)));
7+
8+
__attribute__((address_space(11))) void*
9+
test_amdgcn_map_shared_rank(__local void* ptr, int rank, __attribute__((address_space(11))) const void* ptrsr,
10+
__attribute__((address_space(11))) const int* gaddr, __attribute__((address_space(11))) const v2i* gaddr2,
11+
__attribute__((address_space(11))) const v4i* gaddr4, local int* laddr, local v2i* laddr2, local v4i* laddr4)
12+
{
13+
__builtin_amdgcn_query_shared_rank(ptrsr); // expected-error{{'__builtin_amdgcn_query_shared_rank' needs target feature gfx13-insts,wavefrontsize32}}
14+
__builtin_amdgcn_dds_load_async_to_lds_b32(gaddr, laddr, 16, 0); // expected-error{{'__builtin_amdgcn_dds_load_async_to_lds_b32' needs target feature gfx13-insts,wavefrontsize32}}
15+
__builtin_amdgcn_dds_load_async_to_lds_b64(gaddr2, laddr2, 16, 0); // expected-error{{'__builtin_amdgcn_dds_load_async_to_lds_b64' needs target feature gfx13-insts,wavefrontsize32}}
16+
__builtin_amdgcn_dds_load_async_to_lds_b128(gaddr4, laddr4, 16, 0); // expected-error{{'__builtin_amdgcn_dds_load_async_to_lds_b128' needs target feature gfx13-insts,wavefrontsize32}}
17+
return __builtin_amdgcn_map_shared_rank(ptr, rank); // expected-error{{'__builtin_amdgcn_map_shared_rank' needs target feature gfx13-insts,wavefrontsize32}}
18+
}
19+

0 commit comments

Comments
 (0)