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

const std::map<llvm::StringRef, cudaAPIversions> CUDA_DEVICE_FUNCTION_VER_MAP {
  {"__shfl",              {CUDA_75,  CUDA_90,  CUDA_0  }},
  {"__shfl_up",           {CUDA_75,  CUDA_90,  CUDA_0  }},
  {"__shfl_down",         {CUDA_75,  CUDA_90,  CUDA_0  }},
  {"__shfl_xor",          {CUDA_75,  CUDA_90,  CUDA_0  }},
};

const std::map<llvm::StringRef, hipAPIversions> HIP_DEVICE_FUNCTION_VER_MAP {
  {"abs",                 {HIP_1060, HIP_0,    HIP_0   }},
  {"labs",                {HIP_1090, HIP_0,    HIP_0   }},
  {"llabs",               {HIP_1090, HIP_0,    HIP_0   }},
  {"fabs",                {HIP_1060, HIP_0,    HIP_0   }},
  {"fabsf",               {HIP_1060, HIP_0,    HIP_0   }},
  {"min",                 {HIP_1060, HIP_0,    HIP_0   }},
  {"fminf",               {HIP_1060, HIP_0,    HIP_0   }},
  {"fmin",                {HIP_1060, HIP_0,    HIP_0   }},
  {"max",                 {HIP_1060, HIP_0,    HIP_0   }},
  {"fmaxf",               {HIP_1060, HIP_0,    HIP_0   }},
  {"fmax",                {HIP_1060, HIP_0,    HIP_0   }},
  {"sin",                 {HIP_1060, HIP_0,    HIP_0   }},
  {"cos",                 {HIP_1060, HIP_0,    HIP_0   }},
  {"sincos",              {HIP_1060, HIP_0,    HIP_0   }},
  {"sincosf",             {HIP_1060, HIP_0,    HIP_0   }},
  {"tan",                 {HIP_1060, HIP_0,    HIP_0   }},
  {"sqrt",                {HIP_1060, HIP_0,    HIP_0   }},
  {"rsqrt",               {HIP_1060, HIP_0,    HIP_0   }},
  {"rsqrtf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"log2",                {HIP_1060, HIP_0,    HIP_0   }},
  {"exp2",                {HIP_1060, HIP_0,    HIP_0   }},
  {"exp2f",               {HIP_1060, HIP_0,    HIP_0   }},
  {"exp10",               {HIP_1060, HIP_0,    HIP_0   }},
  {"exp10f",              {HIP_1060, HIP_0,    HIP_0   }},
  {"expm1",               {HIP_1060, HIP_0,    HIP_0   }},
  {"expm1f",              {HIP_1060, HIP_0,    HIP_0   }},
  {"log2f",               {HIP_1060, HIP_0,    HIP_0   }},
  {"log10",               {HIP_1060, HIP_0,    HIP_0   }},
  {"log",                 {HIP_1060, HIP_0,    HIP_0   }},
  {"log1p",               {HIP_1060, HIP_0,    HIP_0   }},
  {"log1pf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"floor",               {HIP_1060, HIP_0,    HIP_0   }},
  {"exp",                 {HIP_1060, HIP_0,    HIP_0   }},
  {"cosh",                {HIP_1060, HIP_0,    HIP_0   }},
  {"sinh",                {HIP_1060, HIP_0,    HIP_0   }},
  {"tanh",                {HIP_1060, HIP_0,    HIP_0   }},
  {"acosh",               {HIP_1060, HIP_0,    HIP_0   }},
  {"acoshf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"asinh",               {HIP_1060, HIP_0,    HIP_0   }},
  {"asinhf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"atanh",               {HIP_1060, HIP_0,    HIP_0   }},
  {"atanhf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"ldexp",               {HIP_1060, HIP_0,    HIP_0   }},
  {"ldexpf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"logb",                {HIP_1060, HIP_0,    HIP_0   }},
  {"logbf",               {HIP_1060, HIP_0,    HIP_0   }},
  {"ilogb",               {HIP_1060, HIP_0,    HIP_0   }},
  {"ilogbf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"scalbn",              {HIP_1060, HIP_0,    HIP_0   }},
  {"scalbnf",             {HIP_1060, HIP_0,    HIP_0   }},
  {"scalbln",             {HIP_1060, HIP_0,    HIP_0   }},
  {"scalblnf",            {HIP_1060, HIP_0,    HIP_0   }},
  {"frexp",               {HIP_1060, HIP_0,    HIP_0   }},
  {"frexpf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"round",               {HIP_1060, HIP_0,    HIP_0   }},
  {"roundf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"lround",              {HIP_1060, HIP_0,    HIP_0   }},
  {"lroundf",             {HIP_1060, HIP_0,    HIP_0   }},
  {"llround",             {HIP_1060, HIP_0,    HIP_0   }},
  {"llroundf",            {HIP_1060, HIP_0,    HIP_0   }},
  {"rint",                {HIP_1060, HIP_0,    HIP_0   }},
  {"rintf",               {HIP_1060, HIP_0,    HIP_0   }},
  {"lrint",               {HIP_1060, HIP_0,    HIP_0   }},
  {"lrintf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"llrint",              {HIP_1060, HIP_0,    HIP_0   }},
  {"llrintf",             {HIP_1060, HIP_0,    HIP_0   }},
  {"nearbyint",           {HIP_1060, HIP_0,    HIP_0   }},
  {"nearbyintf",          {HIP_1060, HIP_0,    HIP_0   }},
  {"ceil",                {HIP_1060, HIP_0,    HIP_0   }},
  {"trunc",               {HIP_1060, HIP_0,    HIP_0   }},
  {"truncf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"fdim",                {HIP_1060, HIP_0,    HIP_0   }},
  {"fdimf",               {HIP_1060, HIP_0,    HIP_0   }},
  {"atan2",               {HIP_1060, HIP_0,    HIP_0   }},
  {"atan",                {HIP_1060, HIP_0,    HIP_0   }},
  {"acos",                {HIP_1060, HIP_0,    HIP_0   }},
  {"asin",                {HIP_1060, HIP_0,    HIP_0   }},
  {"hypot",               {HIP_1060, HIP_0,    HIP_0   }},
  {"rhypot",              {HIP_1060, HIP_0,    HIP_0   }},
  {"hypotf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"rhypotf",             {HIP_1060, HIP_0,    HIP_0   }},
  {"norm3d",              {HIP_1060, HIP_0,    HIP_0   }},
  {"rnorm3d",             {HIP_1060, HIP_0,    HIP_0   }},
  {"norm4d",              {HIP_1060, HIP_0,    HIP_0   }},
  {"rnorm4d",             {HIP_1060, HIP_0,    HIP_0   }},
  {"norm",                {HIP_1060, HIP_0,    HIP_0   }},
  {"rnorm",               {HIP_1060, HIP_0,    HIP_0   }},
  {"rnormf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"normf",               {HIP_1060, HIP_0,    HIP_0   }},
  {"norm3df",             {HIP_1060, HIP_0,    HIP_0   }},
  {"rnorm3df",            {HIP_1060, HIP_0,    HIP_0   }},
  {"norm4df",             {HIP_1060, HIP_0,    HIP_0   }},
  {"rnorm4df",            {HIP_1060, HIP_0,    HIP_0   }},
  {"cbrt",                {HIP_1060, HIP_0,    HIP_0   }},
  {"cbrtf",               {HIP_1060, HIP_0,    HIP_0   }},
  {"rcbrt",               {HIP_1060, HIP_0,    HIP_0   }},
  {"rcbrtf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"sinpi",               {HIP_1060, HIP_0,    HIP_0   }},
  {"sinpif",              {HIP_1060, HIP_0,    HIP_0   }},
  {"cospi",               {HIP_1060, HIP_0,    HIP_0   }},
  {"cospif",              {HIP_1060, HIP_0,    HIP_0   }},
  {"sincospi",            {HIP_1060, HIP_0,    HIP_0   }},
  {"sincospif",           {HIP_1060, HIP_0,    HIP_0   }},
  {"pow",                 {HIP_1060, HIP_0,    HIP_0   }},
  {"modf",                {HIP_1090, HIP_0,    HIP_0   }},
  {"fmod",                {HIP_1060, HIP_0,    HIP_0   }},
  {"remainder",           {HIP_1060, HIP_0,    HIP_0   }},
  {"remainderf",          {HIP_1060, HIP_0,    HIP_0   }},
  {"remquo",              {HIP_1090, HIP_0,    HIP_0   }},
  {"remquof",             {HIP_1060, HIP_0,    HIP_0   }},
  {"j0",                  {HIP_1060, HIP_0,    HIP_0   }},
  {"j0f",                 {HIP_1060, HIP_0,    HIP_0   }},
  {"j1",                  {HIP_1060, HIP_0,    HIP_0   }},
  {"j1f",                 {HIP_1060, HIP_0,    HIP_0   }},
  {"jn",                  {HIP_1060, HIP_0,    HIP_0   }},
  {"jnf",                 {HIP_1060, HIP_0,    HIP_0   }},
  {"y0",                  {HIP_1060, HIP_0,    HIP_0   }},
  {"y0f",                 {HIP_1060, HIP_0,    HIP_0   }},
  {"y1",                  {HIP_1060, HIP_0,    HIP_0   }},
  {"y1f",                 {HIP_1060, HIP_0,    HIP_0   }},
  {"yn",                  {HIP_1060, HIP_0,    HIP_0   }},
  {"ynf",                 {HIP_1060, HIP_0,    HIP_0   }},
  {"cyl_bessel_i0",       {HIP_1090, HIP_0,    HIP_0   }},
  {"cyl_bessel_i0f",      {HIP_1090, HIP_0,    HIP_0   }},
  {"cyl_bessel_i1",       {HIP_1090, HIP_0,    HIP_0   }},
  {"cyl_bessel_i1f",      {HIP_1090, HIP_0,    HIP_0   }},
  {"erf",                 {HIP_1060, HIP_0,    HIP_0   }},
  {"erff",                {HIP_1060, HIP_0,    HIP_0   }},
  {"erfinv",              {HIP_1060, HIP_0,    HIP_0   }},
  {"erfinvf",             {HIP_1060, HIP_0,    HIP_0   }},
  {"erfc",                {HIP_1060, HIP_0,    HIP_0   }},
  {"erfcf",               {HIP_1060, HIP_0,    HIP_0   }},
  {"lgamma",              {HIP_1060, HIP_0,    HIP_0   }},
  {"erfcinv",             {HIP_1060, HIP_0,    HIP_0   }},
  {"erfcinvf",            {HIP_1060, HIP_0,    HIP_0   }},
  {"normcdfinv",          {HIP_1060, HIP_0,    HIP_0   }},
  {"normcdfinvf",         {HIP_1060, HIP_0,    HIP_0   }},
  {"normcdf",             {HIP_1060, HIP_0,    HIP_0   }},
  {"normcdff",            {HIP_1060, HIP_0,    HIP_0   }},
  {"erfcx",               {HIP_1060, HIP_0,    HIP_0   }},
  {"erfcxf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"lgammaf",             {HIP_1060, HIP_0,    HIP_0   }},
  {"tgamma",              {HIP_1060, HIP_0,    HIP_0   }},
  {"tgammaf",             {HIP_1060, HIP_0,    HIP_0   }},
  {"copysign",            {HIP_1060, HIP_0,    HIP_0   }},
  {"copysignf",           {HIP_1060, HIP_0,    HIP_0   }},
  {"nextafter",           {HIP_1060, HIP_0,    HIP_0   }},
  {"nextafterf",          {HIP_1090, HIP_0,    HIP_0   }},
  {"nan",                 {HIP_1060, HIP_0,    HIP_0   }},
  {"nanf",                {HIP_1060, HIP_0,    HIP_0   }},
  {"fma",                 {HIP_1060, HIP_0,    HIP_0   }},
  {"fmaf",                {HIP_1060, HIP_0,    HIP_0   }},
  {"acosf",               {HIP_1060, HIP_0,    HIP_0   }},
  {"asinf",               {HIP_1060, HIP_0,    HIP_0   }},
  {"atanf",               {HIP_1060, HIP_0,    HIP_0   }},
  {"atan2f",              {HIP_1060, HIP_0,    HIP_0   }},
  {"cosf",                {HIP_1060, HIP_0,    HIP_0   }},
  {"sinf",                {HIP_1060, HIP_0,    HIP_0   }},
  {"tanf",                {HIP_1060, HIP_0,    HIP_0   }},
  {"coshf",               {HIP_1060, HIP_0,    HIP_0   }},
  {"sinhf",               {HIP_1060, HIP_0,    HIP_0   }},
  {"tanhf",               {HIP_1060, HIP_0,    HIP_0   }},
  {"expf",                {HIP_1060, HIP_0,    HIP_0   }},
  {"logf",                {HIP_1060, HIP_0,    HIP_0   }},
  {"log10f",              {HIP_1060, HIP_0,    HIP_0   }},
  {"modff",               {HIP_1090, HIP_0,    HIP_0   }},
  {"powf",                {HIP_1060, HIP_0,    HIP_0   }},
  {"sqrtf",               {HIP_1060, HIP_0,    HIP_0   }},
  {"ceilf",               {HIP_1060, HIP_0,    HIP_0   }},
  {"floorf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"fmodf",               {HIP_1060, HIP_0,    HIP_0   }},
  {"signbit",             {HIP_1060, HIP_0,    HIP_0   }},
  {"isfinite",            {HIP_1060, HIP_0,    HIP_0   }},
  {"isnan",               {HIP_1060, HIP_0,    HIP_0   }},
  {"isinf",               {HIP_1060, HIP_0,    HIP_0   }},
  {"__mulhi",             {HIP_1060, HIP_0,    HIP_0   }},
  {"__umulhi",            {HIP_1060, HIP_0,    HIP_0   }},
  {"__mul64hi",           {HIP_1060, HIP_0,    HIP_0   }},
  {"__umul64hi",          {HIP_1060, HIP_0,    HIP_0   }},
  {"__int_as_float",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__float_as_int",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__float_as_uint",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__uint_as_float",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__syncthreads",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__syncthreads_count", {HIP_3070, HIP_0,    HIP_0   }},
  {"__syncthreads_and",   {HIP_3070, HIP_0,    HIP_0   }},
  {"__syncthreads_or",    {HIP_3070, HIP_0,    HIP_0   }},
  {"__threadfence",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__threadfence_block", {HIP_1060, HIP_0,    HIP_0   }},
  {"__threadfence_system",{HIP_1060, HIP_0,    HIP_0   }},
  {"__saturatef",         {HIP_1060, HIP_0,    HIP_0   }},
  {"__sad",               {HIP_1060, HIP_0,    HIP_0   }},
  {"__usad",              {HIP_1060, HIP_0,    HIP_0   }},
  {"__mul24",             {HIP_1060, HIP_0,    HIP_0   }},
  {"__umul24",            {HIP_1060, HIP_0,    HIP_0   }},
  {"fdividef",            {HIP_1060, HIP_0,    HIP_0   }},
  {"__fdividef",          {HIP_1060, HIP_0,    HIP_0   }},
  {"__sinf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"__cosf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"__tanf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"__sincosf",           {HIP_1060, HIP_0,    HIP_0   }},
  {"__expf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"__exp10f",            {HIP_1060, HIP_0,    HIP_0   }},
  {"__log2f",             {HIP_1060, HIP_0,    HIP_0   }},
  {"__log10f",            {HIP_1060, HIP_0,    HIP_0   }},
  {"__logf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"__powf",              {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2int_rn",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2int_rz",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2int_ru",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2int_rd",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2uint_rn",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2uint_rz",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2uint_ru",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2uint_rd",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__int2float_rn",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__int2float_rz",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__int2float_ru",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__int2float_rd",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__uint2float_rn",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__uint2float_rz",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__uint2float_ru",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__uint2float_rd",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2ll_rn",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2ll_rz",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2ll_ru",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2ll_rd",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2ull_rn",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2ull_rz",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2ull_ru",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2ull_rd",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__ll2float_rn",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__ll2float_rz",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__ll2float_ru",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__ll2float_rd",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__ull2float_rn",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__ull2float_rz",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__ull2float_ru",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__ull2float_rd",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__fadd_rn",           {HIP_1060, HIP_0,    HIP_0   }},
  {"__fsub_rn",           {HIP_1060, HIP_0,    HIP_0   }},
  {"__fmul_rn",           {HIP_1060, HIP_0,    HIP_0   }},
  {"__fmaf_rn",           {HIP_1060, HIP_0,    HIP_0   }},
  {"__frcp_rn",           {HIP_1060, HIP_0,    HIP_0   }},
  {"__fsqrt_rn",          {HIP_1060, HIP_0,    HIP_0   }},
  {"__frsqrt_rn",         {HIP_1060, HIP_0,    HIP_0   }},
  {"__fdiv_rn",           {HIP_1060, HIP_0,    HIP_0   }},
  {"__clz",               {HIP_1060, HIP_0,    HIP_0   }},
  {"__ffs",               {HIP_1060, HIP_0,    HIP_0   }},
  {"__popc",              {HIP_1060, HIP_0,    HIP_0   }},
  {"__brev",              {HIP_1060, HIP_0,    HIP_0   }},
  {"__clzll",             {HIP_1060, HIP_0,    HIP_0   }},
  {"__ffsll",             {HIP_1060, HIP_0,    HIP_0   }},
  {"__popcll",            {HIP_1060, HIP_0,    HIP_0   }},
  {"__brevll",            {HIP_1060, HIP_0,    HIP_0   }},
  {"__byte_perm",         {HIP_1060, HIP_0,    HIP_0   }},
  {"__hadd",              {HIP_1060, HIP_0,    HIP_0   }},
  {"__rhadd",             {HIP_1060, HIP_0,    HIP_0   }},
  {"__uhadd",             {HIP_1060, HIP_0,    HIP_0   }},
  {"__urhadd",            {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2float_rd",   {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2float_rn",   {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2float_ru",   {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2float_rz",   {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2hiint",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2loint",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2int_rd",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2int_rn",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2int_ru",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2int_rz",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2ll_rd",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2ll_rn",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2ll_ru",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2ll_rz",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2uint_rd",    {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2uint_rn",    {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2uint_ru",    {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2uint_rz",    {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2ull_rd",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2ull_rn",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2ull_ru",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__double2ull_rz",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__double_as_longlong",{HIP_1060, HIP_0,    HIP_0   }},
  {"__hiloint2double",    {HIP_1060, HIP_0,    HIP_0   }},
  {"__int2double_rn",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__ll2double_rd",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__ll2double_rn",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__ll2double_ru",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__ll2double_rz",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__longlong_as_double",{HIP_1060, HIP_0,    HIP_0   }},
  {"__uint2double_rn",    {HIP_1060, HIP_0,    HIP_0   }},
  {"__ull2double_rd",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__ull2double_rn",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__ull2double_ru",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__ull2double_rz",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2half",        {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2half_rn",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2half_rz",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2half_rd",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2half_ru",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2float",        {HIP_1060, HIP_0,    HIP_0   }},
  {"__float2half2_rn",    {HIP_1060, HIP_0,    HIP_0   }},
  {"__floats2half2_rn",   {HIP_1060, HIP_0,    HIP_0   }},
  {"__low2float",         {HIP_1060, HIP_0,    HIP_0   }},
  {"__high2float",        {HIP_1060, HIP_0,    HIP_0   }},
  {"__float22half2_rn",   {HIP_1060, HIP_0,    HIP_0   }},
  {"__half22float2",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2int_rn",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2int_rz",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2int_rd",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2int_ru",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__int2half_rn",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__int2half_rz",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__int2half_rd",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__int2half_ru",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2short_rn",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2short_rz",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2short_rd",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2short_ru",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__short2half_rn",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__short2half_rz",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__short2half_rd",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__short2half_ru",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2uint_rn",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2uint_rz",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2uint_rd",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2uint_ru",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__uint2half_rn",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__uint2half_rz",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__uint2half_rd",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__uint2half_ru",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2ushort_rn",    {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2ushort_rz",    {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2ushort_rd",    {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2ushort_ru",    {HIP_1060, HIP_0,    HIP_0   }},
  {"__ushort2half_rn",    {HIP_1060, HIP_0,    HIP_0   }},
  {"__ushort2half_rz",    {HIP_1060, HIP_0,    HIP_0   }},
  {"__ushort2half_rd",    {HIP_1060, HIP_0,    HIP_0   }},
  {"__ushort2half_ru",    {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2ull_rn",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2ull_rz",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2ull_rd",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2ull_ru",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__ull2half_rn",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__ull2half_rz",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__ull2half_rd",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__ull2half_ru",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2ll_rn",        {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2ll_rz",        {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2ll_rd",        {HIP_1060, HIP_0,    HIP_0   }},
  {"__half2ll_ru",        {HIP_1060, HIP_0,    HIP_0   }},
  {"__ll2half_rn",        {HIP_1060, HIP_0,    HIP_0   }},
  {"__ll2half_rz",        {HIP_1060, HIP_0,    HIP_0   }},
  {"__ll2half_rd",        {HIP_1060, HIP_0,    HIP_0   }},
  {"__ll2half_ru",        {HIP_1060, HIP_0,    HIP_0   }},
  {"htrunc",              {HIP_1060, HIP_0,    HIP_0   }},
  {"hceil",               {HIP_1060, HIP_0,    HIP_0   }},
  {"hfloor",              {HIP_1060, HIP_0,    HIP_0   }},
  {"hrint",               {HIP_1060, HIP_0,    HIP_0   }},
  {"h2trunc",             {HIP_1060, HIP_0,    HIP_0   }},
  {"h2ceil",              {HIP_1060, HIP_0,    HIP_0   }},
  {"h2floor",             {HIP_1060, HIP_0,    HIP_0   }},
  {"h2rint",              {HIP_1090, HIP_0,    HIP_0   }},
  {"__half2half2",        {HIP_1090, HIP_0,    HIP_0   }},
  {"__lowhigh2highlow",   {HIP_1060, HIP_0,    HIP_0   }},
  {"__lows2half2",        {HIP_1060, HIP_0,    HIP_0   }},
  {"__highs2half2",       {HIP_1060, HIP_0,    HIP_0   }},
  {"__high2half",         {HIP_1060, HIP_0,    HIP_0   }},
  {"__low2half",          {HIP_1060, HIP_0,    HIP_0   }},
  {"__hisinf",            {HIP_1060, HIP_0,    HIP_0   }},
  {"__halves2half2",      {HIP_1060, HIP_0,    HIP_0   }},
  {"__low2half2",         {HIP_1060, HIP_0,    HIP_0   }},
  {"__high2half2",        {HIP_1060, HIP_0,    HIP_0   }},
  {"__half_as_short",     {HIP_1060, HIP_0,    HIP_0   }},
  {"__half_as_ushort",    {HIP_1060, HIP_0,    HIP_0   }},
  {"__short_as_half",     {HIP_1090, HIP_0,    HIP_0   }},
  {"__ushort_as_half",    {HIP_1060, HIP_0,    HIP_0   }},
  {"__ldg",               {HIP_1060, HIP_0,    HIP_0   }},
  {"__ldcg",              {HIP_1090, HIP_0,    HIP_0   }},
  {"__ldca",              {HIP_1090, HIP_0,    HIP_0   }},
  {"__ldcs",              {HIP_1090, HIP_0,    HIP_0   }},
  {"__heq2",              {HIP_1060, HIP_0,    HIP_0   }},
  {"__hne2",              {HIP_1060, HIP_0,    HIP_0   }},
  {"__hle2",              {HIP_1060, HIP_0,    HIP_0   }},
  {"__hge2",              {HIP_1060, HIP_0,    HIP_0   }},
  {"__hlt2",              {HIP_1060, HIP_0,    HIP_0   }},
  {"__hgt2",              {HIP_1060, HIP_0,    HIP_0   }},
  {"__hequ2",             {HIP_1090, HIP_0,    HIP_0   }},
  {"__hneu2",             {HIP_1090, HIP_0,    HIP_0   }},
  {"__hleu2",             {HIP_1090, HIP_0,    HIP_0   }},
  {"__hgeu2",             {HIP_1090, HIP_0,    HIP_0   }},
  {"__hltu2",             {HIP_1090, HIP_0,    HIP_0   }},
  {"__hgtu2",             {HIP_1090, HIP_0,    HIP_0   }},
  {"__hisnan2",           {HIP_1060, HIP_0,    HIP_0   }},
  {"__hadd2",             {HIP_1060, HIP_0,    HIP_0   }},
  {"__hsub2",             {HIP_1060, HIP_0,    HIP_0   }},
  {"__hmul2",             {HIP_1060, HIP_0,    HIP_0   }},
  {"__h2div",             {HIP_1090, HIP_0,    HIP_0   }},
  {"__hadd2_sat",         {HIP_1060, HIP_0,    HIP_0   }},
  {"__hsub2_sat",         {HIP_1060, HIP_0,    HIP_0   }},
  {"__hmul2_sat",         {HIP_1060, HIP_0,    HIP_0   }},
  {"__hfma2",             {HIP_1060, HIP_0,    HIP_0   }},
  {"__hfma2_sat",         {HIP_1060, HIP_0,    HIP_0   }},
  {"__hneg2",             {HIP_1060, HIP_0,    HIP_0   }},
  {"__hsub",              {HIP_1060, HIP_0,    HIP_0   }},
  {"__hmul",              {HIP_1060, HIP_0,    HIP_0   }},
  {"__hdiv",              {HIP_1090, HIP_0,    HIP_0   }},
  {"__hadd_sat",          {HIP_1060, HIP_0,    HIP_0   }},
  {"__hsub_sat",          {HIP_1060, HIP_0,    HIP_0   }},
  {"__hmul_sat",          {HIP_1060, HIP_0,    HIP_0   }},
  {"__hfma",              {HIP_1060, HIP_0,    HIP_0   }},
  {"__hfma_sat",          {HIP_1060, HIP_0,    HIP_0   }},
  {"__hneg",              {HIP_1060, HIP_0,    HIP_0   }},
  {"__habs2",             {HIP_3050, HIP_0,    HIP_0   }},
  {"__habs",              {HIP_3050, HIP_0,    HIP_0   }},
  {"__hbeq2",             {HIP_1060, HIP_0,    HIP_0   }},
  {"__hbne2",             {HIP_1060, HIP_0,    HIP_0   }},
  {"__hble2",             {HIP_1060, HIP_0,    HIP_0   }},
  {"__hbge2",             {HIP_1060, HIP_0,    HIP_0   }},
  {"__hblt2",             {HIP_1060, HIP_0,    HIP_0   }},
  {"__hbgt2",             {HIP_1060, HIP_0,    HIP_0   }},
  {"__hbequ2",            {HIP_1090, HIP_0,    HIP_0   }},
  {"__hbneu2",            {HIP_1090, HIP_0,    HIP_0   }},
  {"__hbleu2",            {HIP_1090, HIP_0,    HIP_0   }},
  {"__hbgeu2",            {HIP_1090, HIP_0,    HIP_0   }},
  {"__hbltu2",            {HIP_1090, HIP_0,    HIP_0   }},
  {"__hbgtu2",            {HIP_1090, HIP_0,    HIP_0   }},
  {"__heq",               {HIP_1060, HIP_0,    HIP_0   }},
  {"__hne",               {HIP_1060, HIP_0,    HIP_0   }},
  {"__hle",               {HIP_1060, HIP_0,    HIP_0   }},
  {"__hge",               {HIP_1060, HIP_0,    HIP_0   }},
  {"__hlt",               {HIP_1060, HIP_0,    HIP_0   }},
  {"__hgt",               {HIP_1060, HIP_0,    HIP_0   }},
  {"__hequ",              {HIP_1090, HIP_0,    HIP_0   }},
  {"__hneu",              {HIP_1090, HIP_0,    HIP_0   }},
  {"__hleu",              {HIP_1090, HIP_0,    HIP_0   }},
  {"__hgeu",              {HIP_1090, HIP_0,    HIP_0   }},
  {"__hltu",              {HIP_1090, HIP_0,    HIP_0   }},
  {"__hgtu",              {HIP_1090, HIP_0,    HIP_0   }},
  {"__hisnan",            {HIP_1060, HIP_0,    HIP_0   }},
  {"hsqrt",               {HIP_1060, HIP_0,    HIP_0   }},
  {"hrsqrt",              {HIP_1060, HIP_0,    HIP_0   }},
  {"hrcp",                {HIP_1090, HIP_0,    HIP_0   }},
  {"hlog",                {HIP_1060, HIP_0,    HIP_0   }},
  {"hlog2",               {HIP_1060, HIP_0,    HIP_0   }},
  {"hlog10",              {HIP_1060, HIP_0,    HIP_0   }},
  {"hexp",                {HIP_1060, HIP_0,    HIP_0   }},
  {"hexp2",               {HIP_1060, HIP_0,    HIP_0   }},
  {"hexp10",              {HIP_1060, HIP_0,    HIP_0   }},
  {"hcos",                {HIP_1060, HIP_0,    HIP_0   }},
  {"hsin",                {HIP_1060, HIP_0,    HIP_0   }},
  {"h2sqrt",              {HIP_1060, HIP_0,    HIP_0   }},
  {"h2rsqrt",             {HIP_1060, HIP_0,    HIP_0   }},
  {"h2rcp",               {HIP_1060, HIP_0,    HIP_0   }},
  {"h2log",               {HIP_1060, HIP_0,    HIP_0   }},
  {"h2log2",              {HIP_1060, HIP_0,    HIP_0   }},
  {"h2log10",             {HIP_1060, HIP_0,    HIP_0   }},
  {"h2exp",               {HIP_1060, HIP_0,    HIP_0   }},
  {"h2exp2",              {HIP_1060, HIP_0,    HIP_0   }},
  {"h2exp10",             {HIP_1060, HIP_0,    HIP_0   }},
  {"h2cos",               {HIP_1060, HIP_0,    HIP_0   }},
  {"h2sin",               {HIP_1060, HIP_0,    HIP_0   }},
  {"__shfl",              {HIP_1060, HIP_0,    HIP_0   }},
  {"__shfl_up",           {HIP_1060, HIP_0,    HIP_0   }},
  {"__shfl_down",         {HIP_1060, HIP_0,    HIP_0   }},
  {"__shfl_xor",          {HIP_1060, HIP_0,    HIP_0   }},
  {"atomicAdd",           {HIP_1060, HIP_0,    HIP_0   }},
  {"atomicSub",           {HIP_1060, HIP_0,    HIP_0   }},
  {"atomicExch",          {HIP_1060, HIP_0,    HIP_0   }},
  {"atomicMin",           {HIP_1060, HIP_0,    HIP_0   }},
  {"atomicMax",           {HIP_1060, HIP_0,    HIP_0   }},
  {"atomicInc",           {HIP_1060, HIP_0,    HIP_0   }},
  {"atomicDec",           {HIP_1060, HIP_0,    HIP_0   }},
  {"atomicAnd",           {HIP_1060, HIP_0,    HIP_0   }},
  {"atomicOr",            {HIP_1060, HIP_0,    HIP_0   }},
  {"atomicXor",           {HIP_1060, HIP_0,    HIP_0   }},
  {"atomicCAS",           {HIP_1060, HIP_0,    HIP_0   }},
  {"__all",               {HIP_1060, HIP_0,    HIP_0   }},
  {"__any",               {HIP_1060, HIP_0,    HIP_0   }},
  {"__ballot",            {HIP_1060, HIP_0,    HIP_0   }},
  {"clock64",             {HIP_1060, HIP_0,    HIP_0   }},
  {"clock",               {HIP_1060, HIP_0,    HIP_0   }},
  {"__dadd_rn",           {HIP_1060, HIP_0,    HIP_0   }},
  {"__ddiv_rn",           {HIP_1060, HIP_0,    HIP_0   }},
  {"__dmul_rn",           {HIP_1060, HIP_0,    HIP_0   }},
  {"__drcp_rn",           {HIP_1060, HIP_0,    HIP_0   }},
  {"__dsqrt_rn",          {HIP_1060, HIP_0,    HIP_0   }},
  {"__dsub_rn",           {HIP_1060, HIP_0,    HIP_0   }},
  {"__fma_rn",            {HIP_1060, HIP_0,    HIP_0   }},
  {"__assert_fail",       {HIP_1090, HIP_0,    HIP_0   }},
  {"__assertfail",        {HIP_1090, HIP_0,    HIP_0   }},
  {"atomicCAS_system",    {HIP_4030, HIP_0,    HIP_0   }},
  {"atomicSub_system",    {HIP_4030, HIP_0,    HIP_0   }},
  {"atomicAdd_system",    {HIP_4030, HIP_0,    HIP_0   }},
  {"atomicExch_system",   {HIP_4030, HIP_0,    HIP_0   }},
  {"atomicMin_system",    {HIP_4030, HIP_0,    HIP_0   }},
  {"atomicMax_system",    {HIP_4030, HIP_0,    HIP_0   }},
  {"atomicAnd_system",    {HIP_4030, HIP_0,    HIP_0   }},
  {"atomicOr_system",     {HIP_4030, HIP_0,    HIP_0   }},
  {"atomicXor_system",    {HIP_4030, HIP_0,    HIP_0   }},
  {"__funnelshift_l",     {HIP_4040, HIP_0,    HIP_0   }},
  {"__funnelshift_lc",    {HIP_4040, HIP_0,    HIP_0   }},
  {"__funnelshift_r",     {HIP_4040, HIP_0,    HIP_0   }},
  {"__funnelshift_rc",    {HIP_4040, HIP_0,    HIP_0   }},
};

const std::map<llvm::StringRef, hipCounter> CUDA_DEVICE_TYPE_NAME_MAP {
};

const std::map<llvm::StringRef, cudaAPIversions> CUDA_DEVICE_TYPE_NAME_VER_MAP {
};

const std::map<llvm::StringRef, hipAPIversions> HIP_DEVICE_TYPE_NAME_VER_MAP {
};

const std::map<unsigned int, llvm::StringRef> CUDA_DEVICE_FUNCTION_API_SECTION_MAP {
  {1, "Device Functions"},
};
