diff options
| author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2016-02-27 09:54:43 +0000 |
|---|---|---|
| committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2016-02-27 09:54:43 +0000 |
| commit | 39edcd0e1d0e700b65e98e48788d8ca391c004f6 (patch) | |
| tree | e33020b65ce50f04bd1e079d1e97e4a74d65faa7 | |
| parent | 360d244d5befb9b8270d93a4aa0e3f0744c796e1 (diff) | |
| download | bcm5719-llvm-39edcd0e1d0e700b65e98e48788d8ca391c004f6.tar.gz bcm5719-llvm-39edcd0e1d0e700b65e98e48788d8ca391c004f6.zip | |
AMDGPU: Add builtins for recently added intrinsics
llvm-svn: 262126
| -rw-r--r-- | clang/include/clang/Basic/BuiltinsAMDGPU.def | 10 | ||||
| -rw-r--r-- | clang/test/CodeGenOpenCL/builtins-amdgcn.cl | 25 | ||||
| -rw-r--r-- | clang/test/SemaOpenCL/builtins-amdgcn.cl | 6 |
3 files changed, 41 insertions, 0 deletions
diff --git a/clang/include/clang/Basic/BuiltinsAMDGPU.def b/clang/include/clang/Basic/BuiltinsAMDGPU.def index 180d7a3f9c9..95b3d814a55 100644 --- a/clang/include/clang/Basic/BuiltinsAMDGPU.def +++ b/clang/include/clang/Basic/BuiltinsAMDGPU.def @@ -40,8 +40,18 @@ BUILTIN(__builtin_amdgcn_cubeid, "ffff", "nc") BUILTIN(__builtin_amdgcn_cubesc, "ffff", "nc") BUILTIN(__builtin_amdgcn_cubetc, "ffff", "nc") BUILTIN(__builtin_amdgcn_cubema, "ffff", "nc") +BUILTIN(__builtin_amdgcn_s_memtime, "LUi", "n") +BUILTIN(__builtin_amdgcn_s_sleep, "vIi", "n") +//===----------------------------------------------------------------------===// +// VI+ only builtins. +//===----------------------------------------------------------------------===// +BUILTIN(__builtin_amdgcn_s_memrealtime, "LUi", "n") + +//===----------------------------------------------------------------------===// // Legacy names with amdgpu prefix +//===----------------------------------------------------------------------===// + BUILTIN(__builtin_amdgpu_rsq, "dd", "nc") BUILTIN(__builtin_amdgpu_rsqf, "ff", "nc") BUILTIN(__builtin_amdgpu_ldexp, "ddi", "nc") diff --git a/clang/test/CodeGenOpenCL/builtins-amdgcn.cl b/clang/test/CodeGenOpenCL/builtins-amdgcn.cl index 78741b6d914..c8085311bab 100644 --- a/clang/test/CodeGenOpenCL/builtins-amdgcn.cl +++ b/clang/test/CodeGenOpenCL/builtins-amdgcn.cl @@ -3,6 +3,8 @@ #pragma OPENCL EXTENSION cl_khr_fp64 : enable +typedef unsigned long ulong; + // CHECK-LABEL: @test_div_scale_f64 // CHECK: call { double, i1 } @llvm.amdgcn.div.scale.f64(double %a, double %b, i1 true) // CHECK-DAG: [[FLAG:%.+]] = extractvalue { double, i1 } %{{.+}}, 1 @@ -169,6 +171,29 @@ void test_s_barrier() __builtin_amdgcn_s_barrier(); } +// CHECK-LABEL: @test_s_memtime +// CHECK: call i64 @llvm.amdgcn.s.memtime() +void test_s_memtime(global ulong* out) +{ + *out = __builtin_amdgcn_s_memtime(); +} + +// CHECK-LABEL: @test_s_memrealtime +// CHECK: call i64 @llvm.amdgcn.s.memrealtime() +void test_s_memrealtime(global ulong* out) +{ + *out = __builtin_amdgcn_s_memrealtime(); +} + +// CHECK-LABEL: @test_s_sleep +// CHECK: call void @llvm.amdgcn.s.sleep(i32 1) +// CHECK: call void @llvm.amdgcn.s.sleep(i32 15) +void test_s_sleep() +{ + __builtin_amdgcn_s_sleep(1); + __builtin_amdgcn_s_sleep(15); +} + // CHECK-LABEL: @test_cubeid( // CHECK: call float @llvm.amdgcn.cubeid(float %a, float %b, float %c) void test_cubeid(global float* out, float a, float b, float c) { diff --git a/clang/test/SemaOpenCL/builtins-amdgcn.cl b/clang/test/SemaOpenCL/builtins-amdgcn.cl new file mode 100644 index 00000000000..bb342d058cb --- /dev/null +++ b/clang/test/SemaOpenCL/builtins-amdgcn.cl @@ -0,0 +1,6 @@ +// RUN: %clang_cc1 -triple amdgcn-unknown-amdhsa -fsyntax-only -verify %s + +void test_s_sleep(int x) +{ + __builtin_amdgcn_s_sleep(x); // expected-error {{argument to '__builtin_amdgcn_s_sleep' must be a constant integer}} +} |

