From: Matt Arsenault Date: Fri, 15 Jul 2016 21:33:02 +0000 (+0000) Subject: AMDGPU: Update for rsq intrinsic changes X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=34f54fad6b3739eebd879572dcc0261dc7e52eda;p=clang AMDGPU: Update for rsq intrinsic changes git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@275622 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/BuiltinsAMDGPU.def b/include/clang/Basic/BuiltinsAMDGPU.def index 0c8bce8e68..4656677e7c 100644 --- a/include/clang/Basic/BuiltinsAMDGPU.def +++ b/include/clang/Basic/BuiltinsAMDGPU.def @@ -96,12 +96,13 @@ BUILTIN(__builtin_r600_read_tidig_x, "Ui", "nc") BUILTIN(__builtin_r600_read_tidig_y, "Ui", "nc") BUILTIN(__builtin_r600_read_tidig_z, "Ui", "nc") +BUILTIN(__builtin_r600_recipsqrt_ieee, "dd", "nc") +BUILTIN(__builtin_r600_recipsqrt_ieeef, "ff", "nc") + //===----------------------------------------------------------------------===// // Legacy names with amdgpu prefix //===----------------------------------------------------------------------===// -BUILTIN(__builtin_amdgpu_rsq, "dd", "nc") -BUILTIN(__builtin_amdgpu_rsqf, "ff", "nc") BUILTIN(__builtin_amdgpu_ldexp, "ddi", "nc") BUILTIN(__builtin_amdgpu_ldexpf, "ffi", "nc") diff --git a/lib/CodeGen/CGBuiltin.cpp b/lib/CodeGen/CGBuiltin.cpp index 7a869f203e..dbff809ab5 100644 --- a/lib/CodeGen/CGBuiltin.cpp +++ b/lib/CodeGen/CGBuiltin.cpp @@ -7671,19 +7671,6 @@ Value *CodeGenFunction::EmitAMDGPUBuiltinExpr(unsigned BuiltinID, CI->setConvergent(); return CI; } - // Legacy amdgpu prefix - case AMDGPU::BI__builtin_amdgpu_rsq: - case AMDGPU::BI__builtin_amdgpu_rsqf: { - if (getTarget().getTriple().getArch() == Triple::amdgcn) - return emitUnaryBuiltin(*this, E, Intrinsic::amdgcn_rsq); - return emitUnaryBuiltin(*this, E, Intrinsic::r600_rsq); - } - case AMDGPU::BI__builtin_amdgpu_ldexp: - case AMDGPU::BI__builtin_amdgpu_ldexpf: { - if (getTarget().getTriple().getArch() == Triple::amdgcn) - return emitFPIntBuiltin(*this, E, Intrinsic::amdgcn_ldexp); - return emitFPIntBuiltin(*this, E, Intrinsic::AMDGPU_ldexp); - } // amdgcn workitem case AMDGPU::BI__builtin_amdgcn_workitem_id_x: @@ -7693,13 +7680,24 @@ Value *CodeGenFunction::EmitAMDGPUBuiltinExpr(unsigned BuiltinID, case AMDGPU::BI__builtin_amdgcn_workitem_id_z: return emitRangedBuiltin(*this, Intrinsic::amdgcn_workitem_id_z, 0, 1024); - // r600 workitem + // r600 intrinsics + case AMDGPU::BI__builtin_r600_recipsqrt_ieee: + case AMDGPU::BI__builtin_r600_recipsqrt_ieeef: + return emitUnaryBuiltin(*this, E, Intrinsic::r600_recipsqrt_ieee); case AMDGPU::BI__builtin_r600_read_tidig_x: return emitRangedBuiltin(*this, Intrinsic::r600_read_tidig_x, 0, 1024); case AMDGPU::BI__builtin_r600_read_tidig_y: return emitRangedBuiltin(*this, Intrinsic::r600_read_tidig_y, 0, 1024); case AMDGPU::BI__builtin_r600_read_tidig_z: return emitRangedBuiltin(*this, Intrinsic::r600_read_tidig_z, 0, 1024); + + // Legacy amdgpu prefix + case AMDGPU::BI__builtin_amdgpu_ldexp: + case AMDGPU::BI__builtin_amdgpu_ldexpf: { + if (getTarget().getTriple().getArch() == Triple::amdgcn) + return emitFPIntBuiltin(*this, E, Intrinsic::amdgcn_ldexp); + return emitFPIntBuiltin(*this, E, Intrinsic::AMDGPU_ldexp); + } default: return nullptr; } diff --git a/test/CodeGenOpenCL/builtins-amdgcn.cl b/test/CodeGenOpenCL/builtins-amdgcn.cl index 2066f0b1da..51f1586607 100644 --- a/test/CodeGenOpenCL/builtins-amdgcn.cl +++ b/test/CodeGenOpenCL/builtins-amdgcn.cl @@ -270,20 +270,6 @@ void test_read_exec(global ulong* out) { // Legacy intrinsics with AMDGPU prefix -// CHECK-LABEL: @test_legacy_rsq_f32 -// CHECK: call float @llvm.amdgcn.rsq.f32 -void test_legacy_rsq_f32(global float* out, float a) -{ - *out = __builtin_amdgpu_rsqf(a); -} - -// CHECK-LABEL: @test_legacy_rsq_f64 -// CHECK: call double @llvm.amdgcn.rsq.f64 -void test_legacy_rsq_f64(global double* out, double a) -{ - *out = __builtin_amdgpu_rsq(a); -} - // CHECK-LABEL: @test_legacy_ldexp_f32 // CHECK: call float @llvm.amdgcn.ldexp.f32 void test_legacy_ldexp_f32(global float* out, float a, int b) diff --git a/test/CodeGenOpenCL/builtins-r600.cl b/test/CodeGenOpenCL/builtins-r600.cl index 0af663e6db..0951ff8182 100644 --- a/test/CodeGenOpenCL/builtins-r600.cl +++ b/test/CodeGenOpenCL/builtins-r600.cl @@ -1,19 +1,19 @@ // REQUIRES: amdgpu-registered-target // RUN: %clang_cc1 -triple r600-unknown-unknown -target-cpu cypress -S -emit-llvm -o - %s | FileCheck %s -// CHECK-LABEL: @test_rsq_f32 -// CHECK: call float @llvm.r600.rsq.f32 -void test_rsq_f32(global float* out, float a) +// CHECK-LABEL: @test_recipsqrt_ieee_f32 +// CHECK: call float @llvm.r600.recipsqrt.ieee.f32 +void test_recipsqrt_ieee_f32(global float* out, float a) { - *out = __builtin_amdgpu_rsqf(a); + *out = __builtin_r600_recipsqrt_ieeef(a); } #if cl_khr_fp64 -// XCHECK-LABEL: @test_rsq_f64 -// XCHECK: call double @llvm.r600.rsq.f64 -void test_rsq_f64(global double* out, double a) +// XCHECK-LABEL: @test_recipsqrt_ieee_f64 +// XCHECK: call double @llvm.r600.recipsqrt.ieee.f64 +void test_recipsqrt_ieee_f64(global double* out, double a) { - *out = __builtin_amdgpu_rsq(a); + *out = __builtin_r600_recipsqrt_ieee(a); } #endif