]> granicus.if.org Git - clang/commitdiff
AMDGPU: Add builtin for fmed3 intrinsic
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Tue, 31 Jan 2017 03:42:07 +0000 (03:42 +0000)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Tue, 31 Jan 2017 03:42:07 +0000 (03:42 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@293600 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/BuiltinsAMDGPU.def
lib/CodeGen/CGBuiltin.cpp
test/CodeGenOpenCL/builtins-amdgcn.cl

index 309dc91cd74fe894ac818b71c1783cd6c1297ecb..2c4efe92dc87015815da833db83346fe8046ead1 100644 (file)
@@ -81,6 +81,7 @@ BUILTIN(__builtin_amdgcn_sicmpl, "LUiLiLiIi", "nc")
 BUILTIN(__builtin_amdgcn_fcmp, "LUiddIi", "nc")
 BUILTIN(__builtin_amdgcn_fcmpf, "LUiffIi", "nc")
 BUILTIN(__builtin_amdgcn_ds_swizzle, "iiIi", "nc")
+BUILTIN(__builtin_amdgcn_fmed3f, "ffff", "nc")
 
 //===----------------------------------------------------------------------===//
 // VI+ only builtins.
index c70a447303f49e9a101bfe1d1203ace33873c1e1..9ecf118ed9eccc325b598bd1f1b926239fdaf6cf 100644 (file)
@@ -8397,7 +8397,8 @@ Value *CodeGenFunction::EmitAMDGPUBuiltinExpr(unsigned BuiltinID,
   case AMDGPU::BI__builtin_amdgcn_classf:
   case AMDGPU::BI__builtin_amdgcn_classh:
     return emitFPIntBuiltin(*this, E, Intrinsic::amdgcn_class);
-
+  case AMDGPU::BI__builtin_amdgcn_fmed3f:
+    return emitTernaryBuiltin(*this, E, Intrinsic::amdgcn_fmed3);
   case AMDGPU::BI__builtin_amdgcn_read_exec: {
     CallInst *CI = cast<CallInst>(
       EmitSpecialRegisterBuiltin(*this, E, Int64Ty, Int64Ty, true, "exec"));
index 69f6ab304b7a9e98d060c6f248031b3e9a79fcbb..0f6eaef50b17ccf63784141bfdee099b51df3701 100644 (file)
@@ -396,6 +396,13 @@ void test_get_local_id(int d, global int *out)
        }
 }
 
+// CHECK-LABEL: @test_fmed3_f32
+// CHECK: call float @llvm.amdgcn.fmed3.f32(
+void test_fmed3_f32(global float* out, float a, float b, float c)
+{
+  *out = __builtin_amdgcn_fmed3f(a, b, c);
+}
+
 // CHECK-DAG: [[WI_RANGE]] = !{i32 0, i32 1024}
 // CHECK-DAG: attributes #[[NOUNWIND_READONLY:[0-9]+]] = { nounwind readonly }
 // CHECK-DAG: attributes #[[READ_EXEC_ATTRS]] = { convergent }