| // REQUIRES: amdgpu-registered-target |
| // RUN: %clang_cc1 -std=c++20 -triple amdgcn -target-cpu tahiti -emit-llvm -fcuda-is-device -verify=no-memrealtime -o - %s |
| // RUN: %clang_cc1 -std=c++20 -triple amdgcn -target-cpu gfx950 -emit-llvm -fcuda-is-device -o - %s |
| |
| #define __device__ __attribute__((device)) |
| #define __shared__ __attribute__((shared)) |
| |
| struct S { |
| static constexpr auto memrealtime_lambda = []() { |
| __builtin_amdgcn_s_memrealtime(); // no-memrealtime-error{{'__builtin_amdgcn_s_memrealtime' needs target feature s-memrealtime}} |
| }; |
| }; |
| |
| __attribute__((target("s-memrealtime"))) |
| __device__ void test_target_dependant_builtin_attr_fail() { |
| S::memrealtime_lambda(); |
| } |
| |
| constexpr auto memrealtime_lambda = []() { |
| __builtin_amdgcn_s_memrealtime(); // no-memrealtime-error{{'__builtin_amdgcn_s_memrealtime' needs target feature s-memrealtime}} |
| }; |
| |
| __attribute__((target("s-memrealtime"))) |
| __device__ void global_test_target_dependant_builtin_attr_fail() { |
| memrealtime_lambda(); |
| } |
| |
| __attribute__((target("s-memrealtime"))) |
| __device__ void local_test_target_dependant_builtin_attr_fail() { |
| static constexpr auto f = []() { |
| __builtin_amdgcn_s_memrealtime(); // no-memrealtime-error{{'__builtin_amdgcn_s_memrealtime' needs target feature s-memrealtime}} |
| }; |
| f(); |
| } |