diff --git a/clang/include/clang/Basic/BuiltinsAMDGPU.def b/clang/include/clang/Basic/BuiltinsAMDGPU.def index c660582cc98e6..3e21a2fe2ac6b 100644 --- a/clang/include/clang/Basic/BuiltinsAMDGPU.def +++ b/clang/include/clang/Basic/BuiltinsAMDGPU.def @@ -61,6 +61,7 @@ BUILTIN(__builtin_amdgcn_s_waitcnt, "vIi", "n") BUILTIN(__builtin_amdgcn_s_sendmsg, "vIiUi", "n") BUILTIN(__builtin_amdgcn_s_sendmsghalt, "vIiUi", "n") BUILTIN(__builtin_amdgcn_s_barrier, "v", "n") +BUILTIN(__builtin_amdgcn_s_ttracedata, "vi", "n") BUILTIN(__builtin_amdgcn_wave_barrier, "v", "n") BUILTIN(__builtin_amdgcn_sched_barrier, "vIi", "n") BUILTIN(__builtin_amdgcn_sched_group_barrier, "vIiIiIi", "n") @@ -267,6 +268,7 @@ TARGET_BUILTIN(__builtin_amdgcn_dot4_f32_bf8_bf8, "fUiUif", "nc", "dot11-insts") TARGET_BUILTIN(__builtin_amdgcn_permlane16, "UiUiUiUiUiIbIb", "nc", "gfx10-insts") TARGET_BUILTIN(__builtin_amdgcn_permlanex16, "UiUiUiUiUiIbIb", "nc", "gfx10-insts") TARGET_BUILTIN(__builtin_amdgcn_mov_dpp8, "UiUiIUi", "nc", "gfx10-insts") +TARGET_BUILTIN(__builtin_amdgcn_s_ttracedata_imm, "vIs", "n", "gfx10-insts") //===----------------------------------------------------------------------===// // Raytracing builtins. diff --git a/clang/test/CodeGenOpenCL/builtins-amdgcn-gfx12.cl b/clang/test/CodeGenOpenCL/builtins-amdgcn-gfx12.cl index ebd367bba0cdc..26c0ee4830623 100644 --- a/clang/test/CodeGenOpenCL/builtins-amdgcn-gfx12.cl +++ b/clang/test/CodeGenOpenCL/builtins-amdgcn-gfx12.cl @@ -235,3 +235,25 @@ unsigned test_s_get_barrier_state(int a) unsigned State = __builtin_amdgcn_s_get_barrier_state(a); return State; } + +// CHECK-LABEL: @test_s_ttracedata( +// CHECK-NEXT: entry: +// CHECK-NEXT: call void @llvm.amdgcn.s.ttracedata(i32 1) +// CHECK-NEXT: ret void +// +void test_s_ttracedata() +{ + __builtin_amdgcn_s_ttracedata(1); +} + +// CHECK-LABEL: @test_s_ttracedata_imm( +// CHECK-NEXT: entry: +// CHECK-NEXT: call void @llvm.amdgcn.s.ttracedata.imm(i16 1) +// CHECK-NEXT: ret void +// +void test_s_ttracedata_imm() +{ + __builtin_amdgcn_s_ttracedata_imm(1); +} + + diff --git a/llvm/include/llvm/IR/IntrinsicsAMDGPU.td b/llvm/include/llvm/IR/IntrinsicsAMDGPU.td index 6bbc13f1de86e..ee9a5d7a34398 100644 --- a/llvm/include/llvm/IR/IntrinsicsAMDGPU.td +++ b/llvm/include/llvm/IR/IntrinsicsAMDGPU.td @@ -1887,9 +1887,12 @@ def int_amdgcn_s_setprio : IntrHasSideEffects]>; def int_amdgcn_s_ttracedata : + ClangBuiltin<"__builtin_amdgcn_s_ttracedata">, DefaultAttrsIntrinsic<[], [llvm_i32_ty], [IntrNoMem, IntrHasSideEffects]>; + def int_amdgcn_s_ttracedata_imm : + ClangBuiltin<"__builtin_amdgcn_s_ttracedata_imm">, DefaultAttrsIntrinsic<[], [llvm_i16_ty], [IntrNoMem, IntrHasSideEffects, ImmArg>]>;