/*
Copyright (c) 2015 - present Advanced Micro Devices, Inc. All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/

#include "CUDA2HIP.h"

// Maps CUDA header names to HIP header names
const std::map<llvm::StringRef, hipCounter> CUDA_DEVICE_FUNC_MAP{
  // math functions
  {"abs",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"labs",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"llabs",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"fabs",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"fabsf",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"min",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"fminf",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"fmin",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"max",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"fmaxf",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"fmax",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"sin",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"cos",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"sincos",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"sincosf",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"tan",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"sqrt",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"rsqrt",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"rsqrtf",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"log2",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"exp2",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"exp2f",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"exp10",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"exp10f",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"expm1",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"expm1f",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"log2f",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"log10",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"log",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"log1p",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"log1pf",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"floor",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"exp",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"cosh",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"sinh",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"tanh",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"acosh",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"acoshf",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"asinh",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"asinhf",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"atanh",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"atanhf",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"ldexp",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"ldexpf",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"logb",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"logbf",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"ilogb",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"ilogbf",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"scalbn",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"scalbnf",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"scalbln",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"scalblnf",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"frexp",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"frexpf",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"round",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"roundf",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"lround",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"lroundf",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"llround",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"llroundf",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"rint",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"rintf",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"lrint",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"lrintf",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"llrint",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"llrintf",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"nearbyint",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"nearbyintf",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"ceil",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"trunc",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"truncf",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"fdim",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"fdimf",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"atan2",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"atan",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"acos",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"asin",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"hypot",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"rhypot",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"hypotf",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"rhypotf",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"norm3d",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"rnorm3d",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"norm4d",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"rnorm4d",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"norm",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"rnorm",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"rnormf",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"normf",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"norm3df",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"rnorm3df",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"norm4df",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"rnorm4df",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"cbrt",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"cbrtf",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"rcbrt",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"rcbrtf",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"sinpi",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"sinpif",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"cospi",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"cospif",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"sincospi",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"sincospif",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"pow",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"modf",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"fmod",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"remainder",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"remainderf",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"remquo",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"remquof",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"j0",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"j0f",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"j1",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"j1f",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"jn",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"jnf",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"y0",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"y0f",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"y1",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"y1f",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"yn",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"ynf",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"cyl_bessel_i0",   {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"cyl_bessel_i0f",  {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"cyl_bessel_i1",   {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"cyl_bessel_i1f",  {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"erf",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"erff",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"erfinv",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"erfinvf",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"erfc",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"erfcf",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"lgamma",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"erfcinv",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"erfcinvf",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"normcdfinv",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"normcdfinvf",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"normcdf",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"normcdff",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"erfcx",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"erfcxf",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"lgammaf",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"tgamma",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"tgammaf",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"copysign",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"copysignf",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"nextafter",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"nextafterf",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"nan",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"nanf",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"fma",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"fmaf",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"acosf",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"asinf",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"atanf",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"atan2f",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"cosf",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"sinf",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"tanf",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"coshf",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"sinhf",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"tanhf",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"expf",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"logf",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"log10f",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"modff",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"powf",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"sqrtf",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"ceilf",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"floorf",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"fmodf",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"signbit",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"isfinite",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"isnan",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"isinf",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"umin",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"llmin",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"ullmin",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"umax",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"llmax",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"ullmax",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__isinff",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__isnanf",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__finite",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__finitef",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__signbit",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__isnan",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__isinf",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__signbitf",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__signbitl",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__finitel",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__isinfl",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__isnanl",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"_ldsign",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"_fdsign",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"_Pow_int",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  // static math functions declared in device-functions.h
  {"mulhi",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"mul64hi",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"float_as_int",    {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"int_as_float",    {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"float_as_uint",   {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"uint_as_float",   {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"saturate",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"mul24",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"umul24",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"float2int",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"int2float",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"uint2float",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  // device functions
  {"__mulhi",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__umulhi",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__mul64hi",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__umul64hi",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__int_as_float",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float_as_int",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__uint_as_float",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float_as_uint",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__syncthreads",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__threadfence",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__threadfence_block", {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__saturatef",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__sad",               {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__usad",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__mul24",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__umul24",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"fdividef",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fdividef",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"fdivide",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__sinf",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__cosf",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__tanf",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__sincosf",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__expf",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__exp10f",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__log2f",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__log10f",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__logf",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__powf",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float2int_rn",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float2int_rz",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float2int_ru",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float2int_rd",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float2uint_rn",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float2uint_rz",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float2uint_ru",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float2uint_rd",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__int2float_rn",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__int2float_rz",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__int2float_ru",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__int2float_rd",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__uint2float_rn",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__uint2float_rz",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__uint2float_ru",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__uint2float_rd",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float2ll_rn",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float2ll_rz",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float2ll_ru",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float2ll_rd",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float2ull_rn",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float2ull_rz",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float2ull_ru",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float2ull_rd",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ll2float_rn",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ll2float_rz",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ll2float_ru",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ll2float_rd",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ull2float_rn",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ull2float_rz",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ull2float_ru",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ull2float_rd",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fadd_rn",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fadd_rz",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fadd_ru",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fadd_rd",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fsub_rn",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fsub_rz",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fsub_ru",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fsub_rd",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fmul_rn",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fmul_rz",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fmul_ru",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fmul_rd",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fmaf_rn",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fmaf_rz",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fmaf_ru",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fmaf_rd",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__frcp_rn",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__frcp_rz",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__frcp_ru",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__frcp_rd",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fsqrt_rn",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fsqrt_rz",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fsqrt_ru",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fsqrt_rd",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__frsqrt_rn",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fdiv_rn",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fdiv_rz",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fdiv_ru",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__fdiv_rd",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__clz",               {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ffs",               {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__popc",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__brev",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__clzll",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ffsll",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__popcll",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__brevll",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__byte_perm",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hadd",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__rhadd",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__uhadd",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__urhadd",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__double2int_rz",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__double2uint_rz",    {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__double2ll_rz",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__double2ull_rz",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__prof_trigger",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__trap",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__brkpt",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__pm0",               {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__pm1",               {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__pm2",               {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__pm3",               {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  // SIMD functions
  {"__vabs2",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vabsss2",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vadd2",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vaddss2",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vaddus2",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vavgs2",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vavgu2",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vhaddu2",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vcmpeq2",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vcmpges2",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vcmpgeu2",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vcmpgts2",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vcmpgtu2",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vcmples2",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vcmplts2",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vcmpltu2",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vcmpne2",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vabsdiffu2",    {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vmaxs2",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vmaxu2",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vmins2",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vminu2",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vseteq2",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsetges2",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsetgeu2",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsetgts2",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsetles2",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsetleu2",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsetlts2",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsetltu2",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsetne2",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsadu2",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsub2",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsubss2",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsubus2",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vneg2",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vnegss2",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vabsdiffs2",    {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsads2",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vabs4",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vabsss4",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vadd4",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vaddss4",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vaddus4",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vavgs4",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vavgu4",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vhaddu4",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vcmpeq4",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vcmpges4",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vcmpgeu4",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vcmpgts4",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vcmpgtu4",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vcmples4",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vcmpleu4",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vcmplts4",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vcmpltu4",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vcmpne4",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vabsdiffu4",    {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vmaxs4",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vmaxu4",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vmins4",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vminu4",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vseteq4",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsetles4",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsetleu4",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsetlts4",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsetltu4",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsetges4",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsetgeu4",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsetgts4",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsetgtu4",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsetne4",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsadu4",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsub4",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsubss4",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsubus4",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vneg4",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vnegss4",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vabsdiffs4",    {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__vsads4",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  // fp16 functions
  {"__float2half",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float2half_rn",   {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float2half_rz",   {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float2half_rd",   {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float2half_ru",   {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2float",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float2half2_rn",  {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__floats2half2_rn", {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__low2float",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__high2float",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__float22half2_rn", {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half22float2",    {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2int_rn",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2int_rz",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2int_rd",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2int_ru",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__int2half_rn",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__int2half_rz",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__int2half_ru",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2short_rn",   {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2short_rz",   {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2short_rd",   {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2short_ru",   {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__short2half_rn",   {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__short2half_rz",   {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__short2half_rd",   {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__short2half_ru",   {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2uint_rn",    {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2uint_rz",    {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2uint_rd",    {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2uint_ru",    {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__uint2half_rn",    {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__uint2half_rz",    {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__uint2half_rd",    {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__uint2half_ru",    {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2ushort_rn",  {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2ushort_rz",  {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2ushort_rd",  {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2ushort_ru",  {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ushort2half_rn",  {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ushort2half_rz",  {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ushort2half_rd",  {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ushort2half_ru",  {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2ull_rn",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2ull_rz",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2ull_rd",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2ull_ru",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ull2half_rn",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ull2half_rz",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ull2half_rd",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ull2half_ru",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2ll_rn",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2ll_rz",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2ll_rd",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2ll_ru",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ll2half_rn",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ll2half_rz",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ll2half_rd",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ll2half_ru",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"htrunc",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"hceil",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"hfloor",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"hrint",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"h2trunc",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"h2ceil",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"h2floor",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"h2rint",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half2half2",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__lowhigh2highlow", {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__lows2half2",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__highs2half2",     {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__high2half",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__low2half",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hisinf",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__halves2half2",    {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__low2half2",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__high2half2",      {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half_as_short",   {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__half_as_ushort",  {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__short_as_half",   {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ushort_as_half",  {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ldg",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ldcg",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ldca",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__ldcs",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__heq2",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hne2",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hle2",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hge2",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hlt2",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hgt2",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hequ2",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hneu2",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hleu2",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hgeu2",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hltu2",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hgtu2",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hisnan2",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hadd2",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hsub2",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hmul2",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__h2div",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hadd2_sat",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hsub2_sat",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hmul2_sat",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hfma2",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hfma2_sat",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hneg2",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hsub",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hmul",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hdiv",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hadd_sat",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hsub_sat",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hmul_sat",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hfma",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hfma_sat",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hneg",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__habs2",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__habs",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__hbeq2",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hbne2",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hble2",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hbge2",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hblt2",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hbgt2",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hbequ2",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hbneu2",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hbleu2",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hbgeu2",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hbltu2",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hbgtu2",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__heq",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hne",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hle",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hge",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hlt",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hgt",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hequ",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hneu",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hleu",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hgeu",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hltu",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hgtu",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__hisnan",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"hsqrt",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"hrsqrt",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"hrcp",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"hlog",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"hlog2",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"hlog10",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"hexp",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"hexp2",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"hexp10",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"hcos",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"hsin",              {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"h2sqrt",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"h2rsqrt",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"h2rcp",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"h2log",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"h2log2",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"h2log10",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"h2exp",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"h2exp2",            {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"h2exp10",           {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"h2cos",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"h2sin",             {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"__shfl_sync",       {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__shfl_up_sync",    {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__shfl_down_sync",  {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  {"__shfl_xor_sync",   {"", "", CONV_DEVICE_FUNC, API_RUNTIME, UNSUPPORTED}},
  // atomic functions
  {"atomicAdd",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"atomicSub",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"atomicExch",        {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"atomicMin",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"atomicMax",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"atomicInc",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"atomicDec",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"atomicAnd",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"atomicOr",          {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"atomicXor",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
  {"atomicCAS",         {"", "", CONV_DEVICE_FUNC, API_RUNTIME}},
};
