Index: clang/include/clang/Basic/Builtins.def =================================================================== --- clang/include/clang/Basic/Builtins.def +++ clang/include/clang/Basic/Builtins.def @@ -322,6 +322,7 @@ BUILTIN(__builtin_lroundf128, "LiLLd", "Fne") BUILTIN(__builtin_nearbyint , "dd", "Fnc") BUILTIN(__builtin_nearbyintf, "ff", "Fnc") +BUILTIN(__builtin_nearbyintf16, "hh" , "Fnc") BUILTIN(__builtin_nearbyintl, "LdLd", "Fnc") BUILTIN(__builtin_nearbyintf128, "LLdLLd", "Fnc") BUILTIN(__builtin_nextafter , "ddd", "Fne") Index: clang/lib/CodeGen/CGBuiltin.cpp =================================================================== --- clang/lib/CodeGen/CGBuiltin.cpp +++ clang/lib/CodeGen/CGBuiltin.cpp @@ -2419,6 +2419,7 @@ case Builtin::BInearbyintl: case Builtin::BI__builtin_nearbyint: case Builtin::BI__builtin_nearbyintf: + case Builtin::BI__builtin_nearbyintf16: case Builtin::BI__builtin_nearbyintl: case Builtin::BI__builtin_nearbyintf128: return RValue::get(emitUnaryMaybeConstrainedFPBuiltin(*this, E, Index: clang/test/CodeGenOpenCL/builtins-f16.cl =================================================================== --- clang/test/CodeGenOpenCL/builtins-f16.cl +++ clang/test/CodeGenOpenCL/builtins-f16.cl @@ -51,6 +51,9 @@ // CHECK: call half @llvm.log.f16(half %h0) res = __builtin_logf16(h0); + // CHECK: call half @llvm.nearbyint.f16(half %h0) + res = __builtin_nearbyintf16(h0); + // CHECK: call half @llvm.rint.f16(half %h0) res = __builtin_rintf16(h0);