Skip to content

Commit 4c65787

Browse files
authored
[AMDGPU] Add GFX12 __builtin_amdgcn_s_sleep_var (#77926)
1 parent c111dc7 commit 4c65787

File tree

4 files changed

+30
-6
lines changed

4 files changed

+30
-6
lines changed

clang/include/clang/Basic/BuiltinsAMDGPU.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,7 @@ TARGET_BUILTIN(__builtin_amdgcn_cvt_sr_fp8_f32, "ifiiIi", "nc", "fp8-conversion-
410410
// GFX12+ only builtins.
411411
//===----------------------------------------------------------------------===//
412412

413+
TARGET_BUILTIN(__builtin_amdgcn_s_sleep_var, "vUi", "n", "gfx12-insts")
413414
TARGET_BUILTIN(__builtin_amdgcn_permlane16_var, "UiUiUiUiIbIb", "nc", "gfx12-insts")
414415
TARGET_BUILTIN(__builtin_amdgcn_permlanex16_var, "UiUiUiUiIbIb", "nc", "gfx12-insts")
415416
TARGET_BUILTIN(__builtin_amdgcn_s_barrier_signal, "vIi", "n", "gfx12-insts")

clang/test/CodeGenOpenCL/builtins-amdgcn-gfx11-err.cl

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@
22

33
// RUN: %clang_cc1 -triple amdgcn-unknown-unknown -target-cpu gfx1100 -verify -S -emit-llvm -o - %s
44

5-
typedef unsigned int uint;
6-
typedef uint uint2 __attribute__((ext_vector_type(2)));
7-
typedef uint uint4 __attribute__((ext_vector_type(4)));
8-
9-
kernel void builtins_amdgcn_bvh_err(global uint2* out, uint addr, uint data, uint4 data1, uint offset) {
10-
*out = __builtin_amdgcn_ds_bvh_stack_rtn(addr, data, data1, offset); // expected-error {{'__builtin_amdgcn_ds_bvh_stack_rtn' must be a constant integer}}
5+
void test_s_sleep_var(int d)
6+
{
7+
__builtin_amdgcn_s_sleep_var(d); // expected-error {{'__builtin_amdgcn_s_sleep_var' needs target feature gfx12-insts}}
118
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// REQUIRES: amdgpu-registered-target
2+
3+
// RUN: %clang_cc1 -triple amdgcn-unknown-unknown -target-cpu gfx1100 -verify -S -emit-llvm -o - %s
4+
5+
typedef unsigned int uint;
6+
typedef uint uint2 __attribute__((ext_vector_type(2)));
7+
typedef uint uint4 __attribute__((ext_vector_type(4)));
8+
9+
kernel void builtins_amdgcn_bvh_err(global uint2* out, uint addr, uint data, uint4 data1, uint offset) {
10+
*out = __builtin_amdgcn_ds_bvh_stack_rtn(addr, data, data1, offset); // expected-error {{'__builtin_amdgcn_ds_bvh_stack_rtn' must be a constant integer}}
11+
}

clang/test/CodeGenOpenCL/builtins-amdgcn-gfx12.cl

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,21 @@
55

66
typedef unsigned int uint;
77

8+
// CHECK-LABEL: @test_s_sleep_var(
9+
// CHECK-NEXT: entry:
10+
// CHECK-NEXT: [[D_ADDR:%.*]] = alloca i32, align 4, addrspace(5)
11+
// CHECK-NEXT: store i32 [[D:%.*]], ptr addrspace(5) [[D_ADDR]], align 4
12+
// CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr addrspace(5) [[D_ADDR]], align 4
13+
// CHECK-NEXT: call void @llvm.amdgcn.s.sleep.var(i32 [[TMP0]])
14+
// CHECK-NEXT: call void @llvm.amdgcn.s.sleep.var(i32 15)
15+
// CHECK-NEXT: ret void
16+
//
17+
void test_s_sleep_var(int d)
18+
{
19+
__builtin_amdgcn_s_sleep_var(d);
20+
__builtin_amdgcn_s_sleep_var(15);
21+
}
22+
823
// CHECK-LABEL: @test_permlane16_var(
924
// CHECK-NEXT: entry:
1025
// CHECK-NEXT: [[OUT_ADDR:%.*]] = alloca ptr addrspace(1), align 8, addrspace(5)

0 commit comments

Comments
 (0)