From: Matt Arsenault Date: Tue, 6 Jan 2015 23:14:57 +0000 (+0000) Subject: Add __builtin_amdgpu_class X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6365ffea3e002a658a00d6c31d4bc00692c38146;p=platform%2Fupstream%2Fllvm.git Add __builtin_amdgpu_class llvm-svn: 225314 --- diff --git a/clang/include/clang/Basic/BuiltinsR600.def b/clang/include/clang/Basic/BuiltinsR600.def index 79a82f7..84fc4fa 100644 --- a/clang/include/clang/Basic/BuiltinsR600.def +++ b/clang/include/clang/Basic/BuiltinsR600.def @@ -30,5 +30,7 @@ BUILTIN(__builtin_amdgpu_rsq_clamped, "dd", "nc") BUILTIN(__builtin_amdgpu_rsq_clampedf, "ff", "nc") BUILTIN(__builtin_amdgpu_ldexp, "ddi", "nc") BUILTIN(__builtin_amdgpu_ldexpf, "ffi", "nc") +BUILTIN(__builtin_amdgpu_class, "bdi", "nc") +BUILTIN(__builtin_amdgpu_classf, "bfi", "nc") #undef BUILTIN diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index 707b910..635e342 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -6393,6 +6393,9 @@ Value *CodeGenFunction::EmitR600BuiltinExpr(unsigned BuiltinID, case R600::BI__builtin_amdgpu_ldexp: case R600::BI__builtin_amdgpu_ldexpf: return emitFPIntBuiltin(*this, E, Intrinsic::AMDGPU_ldexp); + case R600::BI__builtin_amdgpu_class: + case R600::BI__builtin_amdgpu_classf: + return emitFPIntBuiltin(*this, E, Intrinsic::AMDGPU_class); default: return nullptr; } diff --git a/clang/test/CodeGenOpenCL/builtins-r600.cl b/clang/test/CodeGenOpenCL/builtins-r600.cl index 8b2470d..3e416b0 100644 --- a/clang/test/CodeGenOpenCL/builtins-r600.cl +++ b/clang/test/CodeGenOpenCL/builtins-r600.cl @@ -127,3 +127,17 @@ void test_ldexp_f64(global double* out, double a, int b) { *out = __builtin_amdgpu_ldexp(a, b); } + +// CHECK-LABEL: @test_class_f32 +// CHECK: call i1 @llvm.AMDGPU.class.f32 +void test_class_f32(global float* out, float a, int b) +{ + *out = __builtin_amdgpu_classf(a, b); +} + +// CHECK-LABEL: @test_class_f64 +// CHECK: call i1 @llvm.AMDGPU.class.f64 +void test_class_f64(global double* out, double a, int b) +{ + *out = __builtin_amdgpu_class(a, b); +}