diff --git a/clang/include/clang/Basic/BuiltinsAMDGPU.def b/clang/include/clang/Basic/BuiltinsAMDGPU.def --- a/clang/include/clang/Basic/BuiltinsAMDGPU.def +++ b/clang/include/clang/Basic/BuiltinsAMDGPU.def @@ -65,6 +65,7 @@ BUILTIN(__builtin_amdgcn_ds_gws_sema_br, "vUiUi", "n") BUILTIN(__builtin_amdgcn_ds_gws_sema_p, "vUi", "n") BUILTIN(__builtin_amdgcn_fence, "vUicC*", "n") +BUILTIN(__builtin_amdgcn_groupstaticsize, "Ui", "n") BUILTIN(__builtin_amdgcn_atomic_inc32, "UZiUZiD*UZiUicC*", "n") BUILTIN(__builtin_amdgcn_atomic_inc64, "UWiUWiD*UWiUicC*", "n") diff --git a/clang/test/CodeGenOpenCL/builtins-amdgcn-ci.cl b/clang/test/CodeGenOpenCL/builtins-amdgcn-ci.cl --- a/clang/test/CodeGenOpenCL/builtins-amdgcn-ci.cl +++ b/clang/test/CodeGenOpenCL/builtins-amdgcn-ci.cl @@ -62,3 +62,9 @@ int test_is_private_global(const global int* ptr) { return __builtin_amdgcn_is_private(ptr); } + +// CHECK-LABEL: @test_groupstaticsize +// CHECK: call i32 @llvm.amdgcn.groupstaticsize() +void test_groupstaticsize(global uint* out) { + *out = __builtin_amdgcn_groupstaticsize(); +} diff --git a/clang/test/CodeGenOpenCL/builtins-amdgcn-gfx10.cl b/clang/test/CodeGenOpenCL/builtins-amdgcn-gfx10.cl --- a/clang/test/CodeGenOpenCL/builtins-amdgcn-gfx10.cl +++ b/clang/test/CodeGenOpenCL/builtins-amdgcn-gfx10.cl @@ -30,3 +30,10 @@ { *out = __builtin_amdgcn_s_memtime(); } + +// CHECK-LABEL: @test_groupstaticsize +// CHECK: call i32 @llvm.amdgcn.groupstaticsize() +void test_groupstaticsize(global uint* out) +{ + *out = __builtin_amdgcn_groupstaticsize(); +} diff --git a/clang/test/CodeGenOpenCL/builtins-amdgcn-gfx9.cl b/clang/test/CodeGenOpenCL/builtins-amdgcn-gfx9.cl --- a/clang/test/CodeGenOpenCL/builtins-amdgcn-gfx9.cl +++ b/clang/test/CodeGenOpenCL/builtins-amdgcn-gfx9.cl @@ -3,6 +3,7 @@ // RUN: %clang_cc1 -triple amdgcn-unknown-unknown -target-cpu gfx1010 -S -emit-llvm -o - %s | FileCheck %s #pragma OPENCL EXTENSION cl_khr_fp16 : enable +typedef unsigned int uint; typedef unsigned long ulong; // CHECK-LABEL: @test_fmed3_f16 @@ -18,3 +19,10 @@ { *out = __builtin_amdgcn_s_memtime(); } + +// CHECK-LABEL: @test_groupstaticsize +// CHECK: call i32 @llvm.amdgcn.groupstaticsize() +void test_groupstaticsize(global uint* out) +{ + *out = __builtin_amdgcn_groupstaticsize(); +} diff --git a/clang/test/CodeGenOpenCL/builtins-amdgcn-vi.cl b/clang/test/CodeGenOpenCL/builtins-amdgcn-vi.cl --- a/clang/test/CodeGenOpenCL/builtins-amdgcn-vi.cl +++ b/clang/test/CodeGenOpenCL/builtins-amdgcn-vi.cl @@ -145,3 +145,10 @@ { *out = __builtin_amdgcn_perm(a, b, s); } + +// CHECK-LABEL: @test_groupstaticsize +// CHECK: call i32 @llvm.amdgcn.groupstaticsize() +void test_groupstaticsize(global uint* out) +{ + *out = __builtin_amdgcn_groupstaticsize(); +}