2016-03-02 19:58:45 +03:00
/*
2016-12-19 14:38:19 +03:00
Copyright (c) 2015-2017 Advanced Micro Devices, Inc. All rights reserved.
2016-03-02 19:58:45 +03:00
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.
*/
/**
* @file Cuda2Hip.cpp
*
* This file is compiled and linked into clang based hipify tool.
*/
#include "clang/ASTMatchers/ASTMatchFinder.h"
2016-03-24 14:54:14 +03:00
#include "clang/ASTMatchers/ASTMatchers.h"
2016-03-02 19:58:45 +03:00
#include "clang/Basic/SourceManager.h"
2016-03-24 14:54:14 +03:00
#include "clang/Frontend/CompilerInstance.h"
2016-03-02 19:58:45 +03:00
#include "clang/Frontend/FrontendActions.h"
2016-03-24 14:54:14 +03:00
#include "clang/Frontend/TextDiagnosticPrinter.h"
2016-03-02 19:58:45 +03:00
#include "clang/Lex/Lexer.h"
2016-03-24 14:54:14 +03:00
#include "clang/Lex/MacroArgs.h"
#include "clang/Lex/MacroInfo.h"
#include "clang/Lex/PPCallbacks.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Rewrite/Core/Rewriter.h"
2016-03-02 19:58:45 +03:00
#include "clang/Tooling/CommonOptionsParser.h"
#include "clang/Tooling/Refactoring.h"
#include "clang/Tooling/Tooling.h"
#include "llvm/Support/CommandLine.h"
2016-03-24 14:54:14 +03:00
#include "llvm/Support/Debug.h"
2016-03-02 19:58:45 +03:00
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/Signals.h"
#include <cstdio>
2016-03-24 14:54:14 +03:00
#include <fstream>
2016-07-01 19:58:14 +03:00
#include <set>
2016-12-21 23:08:01 +03:00
#include <cmath>
2016-12-28 20:44:05 +03:00
#include <chrono>
#include <iomanip>
#include <sstream>
2016-03-02 19:58:45 +03:00
using namespace clang ;
using namespace clang :: ast_matchers ;
using namespace clang :: tooling ;
using namespace llvm ;
#define DEBUG_TYPE "cuda2hip"
2016-12-19 14:38:19 +03:00
#define HIP_UNSUPPORTED -1
2016-03-02 19:58:45 +03:00
2016-03-24 19:31:42 +03:00
enum ConvTypes {
2016-09-09 11:10:19 +03:00
CONV_DRIVER = 0 ,
CONV_DEV ,
2016-03-24 19:31:42 +03:00
CONV_MEM ,
CONV_KERN ,
CONV_COORD_FUNC ,
CONV_MATH_FUNC ,
CONV_SPECIAL_FUNC ,
CONV_STREAM ,
CONV_EVENT ,
2016-12-19 14:38:19 +03:00
CONV_OCCUPANCY ,
2016-09-05 20:26:21 +03:00
CONV_CONTEXT ,
2016-09-09 11:31:50 +03:00
CONV_MODULE ,
2016-09-05 20:26:21 +03:00
CONV_CACHE ,
2017-03-03 21:59:05 +03:00
CONV_EXEC ,
2016-03-24 19:31:42 +03:00
CONV_ERR ,
CONV_DEF ,
CONV_TEX ,
2017-02-20 21:19:34 +03:00
CONV_GL ,
CONV_GRAPHICS ,
CONV_SURFACE ,
2016-03-24 19:31:42 +03:00
CONV_OTHER ,
2016-03-25 18:28:37 +03:00
CONV_INCLUDE ,
2016-08-18 20:59:51 +03:00
CONV_INCLUDE_CUDA_MAIN_H ,
2016-08-25 19:36:37 +03:00
CONV_TYPE ,
2016-03-25 18:28:37 +03:00
CONV_LITERAL ,
2016-08-25 19:36:37 +03:00
CONV_NUMERIC_LITERAL ,
2016-03-24 19:31:42 +03:00
CONV_LAST
2016-03-25 18:28:37 +03:00
};
2016-08-25 19:36:37 +03:00
const char * counterNames [ CONV_LAST ] = {
2017-03-03 21:59:05 +03:00
"driver" , "dev" , "mem" , "kern" , "coord_func" , "math_func" ,
"special_func" , "stream" , "event" , "occupancy" , "ctx" , "module" ,
"cache" , "exec" , "err" , "def" , "tex" , "gl" ,
"graphics" , "surface" , "other" , "include" , "include_cuda_main_header" ,
"type" , "literal" , "numeric_literal" };
2016-12-13 18:01:08 +03:00
2016-08-25 19:36:37 +03:00
enum ApiTypes {
API_DRIVER = 0 ,
API_RUNTIME ,
API_BLAS ,
API_LAST
};
const char * apiNames [ API_LAST ] = {
2016-12-21 23:08:01 +03:00
"CUDA Driver API" , "CUDA RT API" , "CUBLAS API" };
// Set up the command line options
static cl :: OptionCategory ToolTemplateCategory ( "CUDA to HIP source translator options" );
static cl :: opt < std :: string > OutputFilename ( "o" ,
cl :: desc ( "Output filename" ),
cl :: value_desc ( "filename" ),
cl :: cat ( ToolTemplateCategory ));
static cl :: opt < bool > Inplace ( "inplace" ,
2016-12-23 17:40:06 +03:00
cl :: desc ( "Modify input file inplace, replacing input with hipified output, save backup in .prehip file" ),
2016-12-21 23:08:01 +03:00
cl :: value_desc ( "inplace" ),
cl :: cat ( ToolTemplateCategory ));
static cl :: opt < bool > NoBackup ( "no-backup" ,
cl :: desc ( "Don't create a backup file for the hipified source" ),
cl :: value_desc ( "no-backup" ),
cl :: cat ( ToolTemplateCategory ));
static cl :: opt < bool > NoOutput ( "no-output" ,
cl :: desc ( "Don't write any translated output to stdout" ),
cl :: value_desc ( "no-output" ),
cl :: cat ( ToolTemplateCategory ));
static cl :: opt < bool > PrintStats ( "print-stats" ,
cl :: desc ( "Print translation statistics" ),
cl :: value_desc ( "print-stats" ),
cl :: cat ( ToolTemplateCategory ));
2016-12-23 17:40:06 +03:00
static cl :: opt < std :: string > OutputStatsFilename ( "o-stats" ,
cl :: desc ( "Output filename for statistics" ),
cl :: value_desc ( "filename" ),
cl :: cat ( ToolTemplateCategory ));
2016-12-21 23:08:01 +03:00
static cl :: opt < bool > Examine ( "examine" ,
cl :: desc ( "Combines -no-output and -print-stats options" ),
2016-12-23 17:40:06 +03:00
cl :: value_desc ( "examine" ),
2016-12-21 23:08:01 +03:00
cl :: cat ( ToolTemplateCategory ));
static cl :: extrahelp CommonHelp ( CommonOptionsParser :: HelpMessage );
2016-03-25 18:28:37 +03:00
namespace {
2016-03-24 19:31:42 +03:00
2016-12-21 23:08:01 +03:00
uint64_t countRepsTotal [ CONV_LAST ] = { 0 };
uint64_t countApiRepsTotal [ API_LAST ] = { 0 };
uint64_t countRepsTotalUnsupported [ CONV_LAST ] = { 0 };
uint64_t countApiRepsTotalUnsupported [ API_LAST ] = { 0 };
std :: map < std :: string , uint64_t > cuda2hipConvertedTotal ;
std :: map < std :: string , uint64_t > cuda2hipUnconvertedTotal ;
2016-12-13 18:01:08 +03:00
struct hipCounter {
StringRef hipName ;
ConvTypes countType ;
ApiTypes countApiType ;
2016-12-19 14:38:19 +03:00
int unsupported ;
2016-12-13 18:01:08 +03:00
};
2016-03-24 19:31:42 +03:00
struct cuda2hipMap {
2016-12-21 23:08:01 +03:00
std :: map < StringRef , hipCounter > cuda2hipRename ;
2016-12-19 14:38:19 +03:00
std :: set < StringRef > cudaExcludes ;
2016-03-24 19:31:42 +03:00
cuda2hipMap () {
2016-07-01 19:58:14 +03:00
// Replacement Excludes
cudaExcludes = { "CHECK_CUDA_ERROR" , "CUDA_SAFE_CALL" };
2016-06-28 15:33:38 +03:00
// Defines
2016-08-25 19:36:37 +03:00
cuda2hipRename [ "__CUDACC__" ] = { "__HIPCC__" , CONV_DEF , API_RUNTIME };
2016-03-24 14:54:14 +03:00
2016-06-28 15:33:38 +03:00
// CUDA includes
2016-10-04 22:18:55 +05:30
cuda2hipRename [ "cuda.h" ] = { "hip/hip_runtime.h" , CONV_INCLUDE_CUDA_MAIN_H , API_DRIVER };
cuda2hipRename [ "cuda_runtime.h" ] = { "hip/hip_runtime.h" , CONV_INCLUDE_CUDA_MAIN_H , API_RUNTIME };
cuda2hipRename [ "cuda_runtime_api.h" ] = { "hip/hip_runtime_api.h" , CONV_INCLUDE , API_RUNTIME };
2016-03-24 14:54:14 +03:00
2016-07-01 19:58:14 +03:00
// HIP includes
2016-07-07 18:01:41 +03:00
// TODO: uncomment this when hip/cudacommon.h will be renamed to hip/hipcommon.h
2016-08-25 19:36:37 +03:00
//cuda2hipRename["cudacommon.h"] = {"hipcommon.h", CONV_INCLUDE, API_RUNTIME};
2016-07-01 19:58:14 +03:00
2016-06-28 15:33:38 +03:00
// CUBLAS includes
2016-08-25 19:36:37 +03:00
cuda2hipRename [ "cublas.h" ] = { "hipblas.h" , CONV_INCLUDE , API_BLAS };
cuda2hipRename [ "cublas_v2.h" ] = { "hipblas.h" , CONV_INCLUDE , API_BLAS };
2016-06-28 15:33:38 +03:00
// Error codes and return types
2017-01-13 14:59:15 +03:00
cuda2hipRename [ "CUresult" ] = { "hipError_t" , CONV_TYPE , API_DRIVER };
cuda2hipRename [ "cudaError_t" ] = { "hipError_t" , CONV_TYPE , API_RUNTIME };
2017-02-20 18:28:59 +03:00
cuda2hipRename [ "cudaError" ] = { "hipError_t" , CONV_TYPE , API_RUNTIME };
2016-09-01 18:54:03 +03:00
// CUDA Driver API error code only
2017-01-13 14:59:15 +03:00
cuda2hipRename [ "CUDA_ERROR_INVALID_CONTEXT" ] = { "hipErrorInvalidContext" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "CUDA_ERROR_CONTEXT_ALREADY_CURRENT" ] = { "hipErrorContextAlreadyCurrent" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "CUDA_ERROR_MAP_FAILED" ] = { "hipErrorMapFailed" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "CUDA_ERROR_UNMAP_FAILED" ] = { "hipErrorUnmapFailed" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "CUDA_ERROR_ARRAY_IS_MAPPED" ] = { "hipErrorArrayIsMapped" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "CUDA_ERROR_ALREADY_MAPPED" ] = { "hipErrorAlreadyMapped" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "CUDA_ERROR_ALREADY_ACQUIRED" ] = { "hipErrorAlreadyAcquired" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "CUDA_ERROR_NOT_MAPPED" ] = { "hipErrorNotMapped" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "CUDA_ERROR_NOT_MAPPED_AS_ARRAY" ] = { "hipErrorNotMappedAsArray" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "CUDA_ERROR_NOT_MAPPED_AS_POINTER" ] = { "hipErrorNotMappedAsPointer" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "CUDA_ERROR_CONTEXT_ALREADY_IN_USE" ] = { "hipErrorContextAlreadyInUse" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "CUDA_ERROR_INVALID_SOURCE" ] = { "hipErrorInvalidSource" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "CUDA_ERROR_FILE_NOT_FOUND" ] = { "hipErrorFileNotFound" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "CUDA_ERROR_NOT_FOUND" ] = { "hipErrorNotFound" , CONV_ERR , API_DRIVER };
2016-09-01 18:54:03 +03:00
// CUDA RT API error code only
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaErrorMissingConfiguration" ] = { "hipErrorMissingConfiguration" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 1
cuda2hipRename [ "cudaErrorPriorLaunchFailure" ] = { "hipErrorPriorLaunchFailure" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 5
cuda2hipRename [ "cudaErrorInvalidDeviceFunction" ] = { "hipErrorInvalidDeviceFunction" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 8
cuda2hipRename [ "cudaErrorInvalidConfiguration" ] = { "hipErrorInvalidConfiguration" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 9
cuda2hipRename [ "cudaErrorInvalidPitchValue" ] = { "hipErrorInvalidPitchValue" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 12
cuda2hipRename [ "cudaErrorInvalidSymbol" ] = { "hipErrorInvalidSymbol" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 13
cuda2hipRename [ "cudaErrorMapBufferObjectFailed" ] = { "hipErrorMapBufferObjectFailed" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 14
cuda2hipRename [ "cudaErrorUnmapBufferObjectFailed" ] = { "hipErrorUnmapBufferObjectFailed" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 15
cuda2hipRename [ "cudaErrorInvalidHostPointer" ] = { "hipErrorInvalidHostPointer" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 16
cuda2hipRename [ "cudaErrorInvalidDevicePointer" ] = { "hipErrorInvalidDevicePointer" , CONV_ERR , API_RUNTIME }; // 17
cuda2hipRename [ "cudaErrorInvalidTexture" ] = { "hipErrorInvalidTexture" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 18
cuda2hipRename [ "cudaErrorInvalidTextureBinding" ] = { "hipErrorInvalidTextureBinding" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 19
cuda2hipRename [ "cudaErrorInvalidChannelDescriptor" ] = { "hipErrorInvalidChannelDescriptor" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 20
cuda2hipRename [ "cudaErrorInvalidMemcpyDirection" ] = { "hipErrorInvalidMemcpyDirection" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 21
cuda2hipRename [ "cudaErrorAddressOfConstant" ] = { "hipErrorAddressOfConstant" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 22
cuda2hipRename [ "cudaErrorTextureFetchFailed" ] = { "hipErrorTextureFetchFailed" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 23
cuda2hipRename [ "cudaErrorTextureNotBound" ] = { "hipErrorTextureNotBound" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 24
cuda2hipRename [ "cudaErrorSynchronizationError" ] = { "hipErrorSynchronizationError" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 25
cuda2hipRename [ "cudaErrorInvalidFilterSetting" ] = { "hipErrorInvalidFilterSetting" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 26
cuda2hipRename [ "cudaErrorInvalidNormSetting" ] = { "hipErrorInvalidNormSetting" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 27
cuda2hipRename [ "cudaErrorMixedDeviceExecution" ] = { "hipErrorMixedDeviceExecution" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 28
// Deprecated as of CUDA 4.1
cuda2hipRename [ "cudaErrorNotYetImplemented" ] = { "hipErrorNotYetImplemented" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 31
// Deprecated as of CUDA 3.1
cuda2hipRename [ "cudaErrorMemoryValueTooLarge" ] = { "hipErrorMemoryValueTooLarge" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 32
cuda2hipRename [ "cudaErrorInsufficientDriver" ] = { "hipErrorInsufficientDriver" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 35
cuda2hipRename [ "cudaErrorSetOnActiveProcess" ] = { "hipErrorSetOnActiveProcess" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 36
cuda2hipRename [ "cudaErrorInvalidSurface" ] = { "hipErrorInvalidSurface" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 37
cuda2hipRename [ "cudaErrorDuplicateVariableName" ] = { "hipErrorDuplicateVariableName" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 43
cuda2hipRename [ "cudaErrorDuplicateTextureName" ] = { "hipErrorDuplicateTextureName" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 44
cuda2hipRename [ "cudaErrorDuplicateSurfaceName" ] = { "hipErrorDuplicateSurfaceName" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 45
cuda2hipRename [ "cudaErrorDevicesUnavailable" ] = { "hipErrorDevicesUnavailable" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 46
cuda2hipRename [ "cudaErrorIncompatibleDriverContext" ] = { "hipErrorIncompatibleDriverContext" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 49
cuda2hipRename [ "cudaErrorDeviceAlreadyInUse" ] = { "hipErrorDeviceAlreadyInUse" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 54
cuda2hipRename [ "cudaErrorAssert" ] = { "hipErrorAssert" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 59
cuda2hipRename [ "cudaErrorTooManyPeers" ] = { "hipErrorTooManyPeers" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 60
cuda2hipRename [ "cudaErrorLaunchMaxDepthExceeded" ] = { "hipErrorLaunchMaxDepthExceeded" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 65
cuda2hipRename [ "cudaErrorLaunchFileScopedTex" ] = { "hipErrorLaunchFileScopedTex" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 66
cuda2hipRename [ "cudaErrorLaunchFileScopedSurf" ] = { "hipErrorLaunchFileScopedSurf" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 67
cuda2hipRename [ "cudaErrorSyncDepthExceeded" ] = { "hipErrorSyncDepthExceeded" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 68
cuda2hipRename [ "cudaErrorLaunchPendingCountExceeded" ] = { "hipErrorLaunchPendingCountExceeded" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 69
cuda2hipRename [ "cudaErrorNotPermitted" ] = { "hipErrorNotPermitted" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 70
cuda2hipRename [ "cudaErrorNotSupported" ] = { "hipErrorNotSupported" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 71
cuda2hipRename [ "cudaErrorHardwareStackError" ] = { "hipErrorHardwareStackError" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 72
cuda2hipRename [ "cudaErrorIllegalInstruction" ] = { "hipErrorIllegalInstruction" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 73
cuda2hipRename [ "cudaErrorMisalignedAddress" ] = { "hipErrorMisalignedAddress" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 74
cuda2hipRename [ "cudaErrorInvalidAddressSpace" ] = { "hipErrorInvalidAddressSpace" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 75
cuda2hipRename [ "cudaErrorInvalidPc" ] = { "hipErrorInvalidPc" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 76
cuda2hipRename [ "cudaErrorStartupFailure" ] = { "hipErrorStartupFailure" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 0x7f
// Deprecated as of CUDA 4.1
cuda2hipRename [ "cudaErrorApiFailureBase" ] = { "hipErrorApiFailureBase" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 10000
2016-09-01 18:54:03 +03:00
2017-01-13 14:59:15 +03:00
cuda2hipRename [ "CUDA_SUCCESS" ] = { "hipSuccess" , CONV_ERR , API_DRIVER };
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaSuccess" ] = { "hipSuccess" , CONV_ERR , API_RUNTIME }; // 0
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_OUT_OF_MEMORY" ] = { "hipErrorMemoryAllocation" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "cudaErrorMemoryAllocation" ] = { "hipErrorMemoryAllocation" , CONV_ERR , API_RUNTIME }; // 2
2016-09-01 18:54:03 +03:00
2017-01-13 14:59:15 +03:00
cuda2hipRename [ "CUDA_ERROR_NOT_INITIALIZED" ] = { "hipErrorNotInitialized" , CONV_ERR , API_DRIVER };
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaErrorInitializationError" ] = { "hipErrorInitializationError" , CONV_ERR , API_RUNTIME }; // 3
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_LAUNCH_FAILED" ] = { "hipErrorLaunchFailure" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "cudaErrorLaunchFailure" ] = { "hipErrorLaunchFailure" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 4
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_LAUNCH_TIMEOUT" ] = { "hipErrorLaunchTimeOut" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "cudaErrorLaunchTimeout" ] = { "hipErrorLaunchTimeOut" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 6
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES" ] = { "hipErrorLaunchOutOfResources" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "cudaErrorLaunchOutOfResources" ] = { "hipErrorLaunchOutOfResources" , CONV_ERR , API_RUNTIME }; // 7
2016-09-01 18:54:03 +03:00
2017-01-13 14:59:15 +03:00
cuda2hipRename [ "CUDA_ERROR_INVALID_DEVICE" ] = { "hipErrorInvalidDevice" , CONV_ERR , API_DRIVER };
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaErrorInvalidDevice" ] = { "hipErrorInvalidDevice" , CONV_ERR , API_RUNTIME }; // 10
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_INVALID_VALUE" ] = { "hipErrorInvalidValue" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "cudaErrorInvalidValue" ] = { "hipErrorInvalidValue" , CONV_ERR , API_RUNTIME }; // 11
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_DEINITIALIZED" ] = { "hipErrorDeinitialized" , CONV_ERR , API_DRIVER };
// TODO: double check, that this error matches to hipErrorDeinitialized
cuda2hipRename [ "cudaErrorCudartUnloading" ] = { "hipErrorDeinitialized" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 29
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_UNKNOWN" ] = { "hipErrorUnknown" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "cudaErrorUnknown" ] = { "hipErrorUnknown" , CONV_ERR , API_RUNTIME }; // 30
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_INVALID_HANDLE" ] = { "hipErrorInvalidResourceHandle" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "cudaErrorInvalidResourceHandle" ] = { "hipErrorInvalidResourceHandle" , CONV_ERR , API_RUNTIME }; // 33
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
// cuda2hipRename["CUDA_ERROR_NOT_INITIALIZED"] = {"hipErrorInitializationError", CONV_ERR, API_DRIVER};
// cuda2hipRename["cudaErrorInitializationError"] = {"hipErrorInitializationError", CONV_ERR, API_RUNTIME};
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_NOT_READY" ] = { "hipErrorNotReady" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "cudaErrorNotReady" ] = { "hipErrorNotReady" , CONV_ERR , API_RUNTIME }; // 34
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_NO_DEVICE" ] = { "hipErrorNoDevice" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "cudaErrorNoDevice" ] = { "hipErrorNoDevice" , CONV_ERR , API_RUNTIME }; // 38
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_ECC_UNCORRECTABLE" ] = { "hipErrorECCNotCorrectable" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "cudaErrorECCUncorrectable" ] = { "hipErrorECCNotCorrectable" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 39
2016-09-01 18:54:03 +03:00
cuda2hipRename [ "CUDA_ERROR_SHARED_OBJECT_SYMBOL_NOT_FOUND" ] = { "hipErrorSharedObjectSymbolNotFound" , CONV_ERR , API_DRIVER };
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaErrorSharedObjectSymbolNotFound" ] = { "hipErrorSharedObjectSymbolNotFound" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 40
2016-09-01 18:54:03 +03:00
2017-01-13 14:59:15 +03:00
cuda2hipRename [ "CUDA_ERROR_SHARED_OBJECT_INIT_FAILED" ] = { "hipErrorSharedObjectInitFailed" , CONV_ERR , API_DRIVER };
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaErrorSharedObjectInitFailed" ] = { "hipErrorSharedObjectInitFailed" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 41
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_UNSUPPORTED_LIMIT" ] = { "hipErrorUnsupportedLimit" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "cudaErrorUnsupportedLimit" ] = { "hipErrorUnsupportedLimit" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 42
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_INVALID_IMAGE" ] = { "hipErrorInvalidImage" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "cudaErrorInvalidKernelImage" ] = { "hipErrorInvalidImage" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 47
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_NO_BINARY_FOR_GPU" ] = { "hipErrorNoBinaryForGpu" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "cudaErrorNoKernelImageForDevice" ] = { "hipErrorNoBinaryForGpu" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 48
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_PEER_ACCESS_ALREADY_ENABLED" ] = { "hipErrorPeerAccessAlreadyEnabled" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "cudaErrorPeerAccessAlreadyEnabled" ] = { "hipErrorPeerAccessAlreadyEnabled" , CONV_ERR , API_RUNTIME }; // 50
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_PEER_ACCESS_NOT_ENABLED" ] = { "hipErrorPeerAccessNotEnabled" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "cudaErrorPeerAccessNotEnabled" ] = { "hipErrorPeerAccessNotEnabled" , CONV_ERR , API_RUNTIME }; // 51
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_PROFILER_DISABLED" ] = { "hipErrorProfilerDisabled" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "cudaErrorProfilerDisabled" ] = { "hipErrorProfilerDisabled" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 55
cuda2hipRename [ "CUDA_ERROR_PROFILER_NOT_INITIALIZED" ] = { "hipErrorProfilerNotInitialized" , CONV_ERR , API_DRIVER };
// Deprecated as of CUDA 5.0
cuda2hipRename [ "cudaErrorProfilerNotInitialized" ] = { "hipErrorProfilerNotInitialized" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 56
cuda2hipRename [ "CUDA_ERROR_PROFILER_ALREADY_STARTED" ] = { "hipErrorProfilerAlreadyStarted" , CONV_ERR , API_DRIVER };
// Deprecated as of CUDA 5.0
cuda2hipRename [ "cudaErrorProfilerAlreadyStarted" ] = { "hipErrorProfilerAlreadyStarted" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 57
cuda2hipRename [ "CUDA_ERROR_PROFILER_ALREADY_STOPPED" ] = { "hipErrorProfilerAlreadyStopped" , CONV_ERR , API_DRIVER };
// Deprecated as of CUDA 5.0
cuda2hipRename [ "cudaErrorProfilerAlreadyStopped" ] = { "hipErrorProfilerAlreadyStopped" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 58
2016-09-01 18:54:03 +03:00
cuda2hipRename [ "CUDA_ERROR_HOST_MEMORY_ALREADY_REGISTERED" ] = { "hipErrorHostMemoryAlreadyRegistered" , CONV_ERR , API_DRIVER };
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaErrorHostMemoryAlreadyRegistered" ] = { "hipErrorHostMemoryAlreadyRegistered" , CONV_ERR , API_RUNTIME }; // 61
2016-09-01 18:54:03 +03:00
2017-01-13 14:59:15 +03:00
cuda2hipRename [ "CUDA_ERROR_HOST_MEMORY_NOT_REGISTERED" ] = { "hipErrorHostMemoryNotRegistered" , CONV_ERR , API_DRIVER };
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaErrorHostMemoryNotRegistered" ] = { "hipErrorHostMemoryNotRegistered" , CONV_ERR , API_RUNTIME }; // 62
2016-06-28 15:33:38 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_OPERATING_SYSTEM" ] = { "hipErrorOperatingSystem" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "cudaErrorOperatingSystem" ] = { "hipErrorOperatingSystem" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 63
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_PEER_ACCESS_UNSUPPORTED" ] = { "hipErrorPeerAccessUnsupported" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "cudaErrorPeerAccessUnsupported" ] = { "hipErrorPeerAccessUnsupported" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 64
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_ILLEGAL_ADDRESS" ] = { "hipErrorIllegalAddress" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "cudaErrorIllegalAddress" ] = { "hipErrorIllegalAddress" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 77
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_INVALID_PTX" ] = { "hipErrorInvalidKernelFile" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "cudaErrorInvalidPtx" ] = { "hipErrorInvalidKernelFile" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 78
2016-09-01 18:54:03 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "CUDA_ERROR_INVALID_GRAPHICS_CONTEXT" ] = { "hipErrorInvalidGraphicsContext" , CONV_ERR , API_DRIVER };
cuda2hipRename [ "cudaErrorInvalidGraphicsContext" ] = { "hipErrorInvalidGraphicsContext" , CONV_ERR , API_RUNTIME , HIP_UNSUPPORTED }; // 79
2016-09-01 18:54:03 +03:00
2016-09-02 16:31:46 +03:00
///////////////////////////// CUDA DRIVER API /////////////////////////////
2017-02-16 20:00:36 +03:00
// Defines
cuda2hipRename [ "CU_LAUNCH_PARAM_BUFFER_POINTER" ] = { "HIP_LAUNCH_PARAM_BUFFER_POINTER" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_LAUNCH_PARAM_BUFFER_SIZE" ] = { "HIP_LAUNCH_PARAM_BUFFER_SIZE" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_LAUNCH_PARAM_END" ] = { "HIP_LAUNCH_PARAM_END" , CONV_DEV , API_DRIVER };
2016-09-02 16:31:46 +03:00
// Types
// NOTE: CUdevice might be changed to typedef int in the future.
2016-09-02 22:23:13 +03:00
cuda2hipRename [ "CUdevice" ] = { "hipDevice_t" , CONV_TYPE , API_DRIVER };
cuda2hipRename [ "CUdevice_attribute_enum" ] = { "hipDeviceAttribute_t" , CONV_TYPE , API_DRIVER };
cuda2hipRename [ "CUdevice_attribute" ] = { "hipDeviceAttribute_t" , CONV_TYPE , API_DRIVER };
2017-01-10 17:54:22 +03:00
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_BLOCK" ] = { "hipDeviceAttributeMaxThreadsPerBlock" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_X" ] = { "hipDeviceAttributeMaxBlockDimX" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Y" ] = { "hipDeviceAttributeMaxBlockDimY" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Z" ] = { "hipDeviceAttributeMaxBlockDimZ" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X" ] = { "hipDeviceAttributeMaxGridDimX" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Y" ] = { "hipDeviceAttributeMaxGridDimY" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Z" ] = { "hipDeviceAttributeMaxGridDimZ" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK" ] = { "hipDeviceAttributeMaxSharedMemoryPerBlock" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_SHARED_MEMORY_PER_BLOCK" ] = { "hipDeviceAttributeMaxSharedMemoryPerBlock" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_TOTAL_CONSTANT_MEMORY" ] = { "hipDeviceAttributeTotalConstantMemory" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_WARP_SIZE" ] = { "hipDeviceAttributeWarpSize" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_BLOCK" ] = { "hipDeviceAttributeMaxRegistersPerBlock" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_REGISTERS_PER_BLOCK" ] = { "hipDeviceAttributeMaxRegistersPerBlock" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_CLOCK_RATE" ] = { "hipDeviceAttributeClockRate" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MEMORY_CLOCK_RATE" ] = { "hipDeviceAttributeMemoryClockRate" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_GLOBAL_MEMORY_BUS_WIDTH" ] = { "hipDeviceAttributeMemoryBusWidth" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_COMPUTE_MODE" ] = { "hipDeviceAttributeComputeMode" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_L2_CACHE_SIZE" ] = { "hipDeviceAttributeL2CacheSize" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_MULTIPROCESSOR" ] = { "hipDeviceAttributeMaxThreadsPerMultiProcessor" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR" ] = { "hipDeviceAttributeComputeCapabilityMajor" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR" ] = { "hipDeviceAttributeComputeCapabilityMinor" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_CONCURRENT_KERNELS" ] = { "hipDeviceAttributeConcurrentKernels" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_PCI_BUS_ID" ] = { "hipDeviceAttributePciBusId" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_PCI_DEVICE_ID" ] = { "hipDeviceAttributePciDeviceId" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_MULTIPROCESSOR" ] = { "hipDeviceAttributeMaxSharedMemoryPerMultiprocessor" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD" ] = { "hipDeviceAttributeIsMultiGpuBoard" , CONV_DEV , API_DRIVER };
// unsupported yet by HIP
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAX_PITCH" ] = { "hipDeviceAttributeMaxPitch" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
2017-01-10 19:29:33 +03:00
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_TEXTURE_ALIGNMENT" ] = { "hipDeviceAttributeTextureAlignment" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
2017-01-10 17:54:22 +03:00
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT" ] = { "hipDeviceAttributeAsyncEngineCount" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
2017-01-10 19:29:33 +03:00
// Deprecated. Use instead CU_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT
2017-01-10 17:54:22 +03:00
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_GPU_OVERLAP" ] = { "hipDeviceAttributeAsyncEngineCount" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT" ] = { "hipDeviceAttributeMultiprocessorCount" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT" ] = { "hipDeviceAttributeKernelExecTimeout" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_INTEGRATED" ] = { "hipDeviceAttributeIntegrated" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY" ] = { "hipDeviceAttributeCanMapHostMemory" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_WIDTH" ] = { "hipDeviceAttributeMaxTexture1DWidth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_WIDTH" ] = { "hipDeviceAttributeMaxTexture2DWidth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_HEIGHT" ] = { "hipDeviceAttributeMaxTexture2DHeight" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_WIDTH" ] = { "hipDeviceAttributeMaxTexture3DWidth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_HEIGHT" ] = { "hipDeviceAttributeMaxTexture3DHeight" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_DEPTH" ] = { "hipDeviceAttributeMaxTexture3DDepth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_WIDTH" ] = { "hipDeviceAttributeMaxTexture2DLayeredWidth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_HEIGHT" ] = { "hipDeviceAttributeMaxTexture2DLayeredHeight" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_LAYERS" ] = { "hipDeviceAttributeMaxTexture2DLayeredLayers" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_WIDTH" ] = { "hipDeviceAttributeMaxTexture2DLayeredWidth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_HEIGHT" ] = { "hipDeviceAttributeMaxTexture2DLayeredHeight" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_NUMSLICES" ] = { "hipDeviceAttributeMaxTexture2DLayeredLayers" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_SURFACE_ALIGNMENT" ] = { "hipDeviceAttributeSurfaceAlignment" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_ECC_ENABLED" ] = { "hipDeviceAttributeEccEnabled" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_TCC_DRIVER" ] = { "hipDeviceAttributeTccDriver" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_UNIFIED_ADDRESSING" ] = { "hipDeviceAttributeUnifiedAddressing" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LAYERED_WIDTH" ] = { "hipDeviceAttributeMaxTexture1DLayeredWidth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LAYERED_LAYERS" ] = { "hipDeviceAttributeMaxTexture1DLayeredLayers" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_GATHER_WIDTH" ] = { "hipDeviceAttributeMaxTexture2DGatherWidth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_GATHER_HEIGHT" ] = { "hipDeviceAttributeMaxTexture2DGatherHeight" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_WIDTH_ALTERNATE" ] = { "hipDeviceAttributeMaxTexture3DWidthAlternate" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_HEIGHT_ALTERNATE" ] = { "hipDeviceAttributeMaxTexture3DHeightAlternate" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_DEPTH_ALTERNATE" ] = { "hipDeviceAttributeMaxTexture3DDepthAlternate" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_PCI_DOMAIN_ID" ] = { "hipDeviceAttributePciDomainId" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_TEXTURE_PITCH_ALIGNMENT" ] = { "hipDeviceAttributeTexturePitchAlignment" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_WIDTH" ] = { "hipDeviceAttributeMaxTextureCubemapWidth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_WIDTH" ] = { "hipDeviceAttributeMaxTextureCubemapLayeredWidth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_LAYERS" ] = { "hipDeviceAttributeMaxTextureCubemapLayeredLayers" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_WIDTH" ] = { "hipDeviceAttributeMaxSurface1DWidth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_WIDTH" ] = { "hipDeviceAttributeMaxSurface2DWidth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_HEIGHT" ] = { "hipDeviceAttributeMaxSurface2DHeight" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_WIDTH" ] = { "hipDeviceAttributeMaxSurface3DWidth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_HEIGHT" ] = { "hipDeviceAttributeMaxSurface3DHeight" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_DEPTH" ] = { "hipDeviceAttributeMaxSurface3DDepth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_WIDTH" ] = { "hipDeviceAttributeMaxSurface1DLayeredWidth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_LAYERS" ] = { "hipDeviceAttributeMaxSurface1DLayeredLayers" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_WIDTH" ] = { "hipDeviceAttributeMaxSurface2DLayeredWidth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_HEIGHT" ] = { "hipDeviceAttributeMaxSurface2DLayeredHeight" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_LAYERS" ] = { "hipDeviceAttributeMaxSurface2DLayeredLayers" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
2017-01-10 19:29:33 +03:00
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_WIDTH" ] = { "hipDeviceAttributeMaxSurfaceCubemapWidth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_LAYERED_WIDTH" ] = { "hipDeviceAttributeMaxSurfaceCubemapLayeredWidth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_LAYERED_LAYERS" ] = { "hipDeviceAttributeMaxSurfaceCubemapLayeredLayers" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
2017-01-10 17:54:22 +03:00
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LINEAR_WIDTH" ] = { "hipDeviceAttributeMaxTexture1DLinearWidth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_WIDTH" ] = { "hipDeviceAttributeMaxTexture2DLinearWidth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_HEIGHT" ] = { "hipDeviceAttributeMaxTexture2DLinearHeight" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_PITCH" ] = { "hipDeviceAttributeMaxTexture2DLinearPitch" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_WIDTH" ] = { "hipDeviceAttributeMaxTexture2DMipmappedWidth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_HEIGHT" ] = { "hipDeviceAttributeMaxTexture2DMipmappedHeight" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_MIPMAPPED_WIDTH" ] = { "hipDeviceAttributeMaxTexture1DMipmappedWidth" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_STREAM_PRIORITIES_SUPPORTED" ] = { "hipDeviceAttributeStreamPrioritiesSupported" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_GLOBAL_L1_CACHE_SUPPORTED" ] = { "hipDeviceAttributeGlobalL1CacheSupported" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_LOCAL_L1_CACHE_SUPPORTED" ] = { "hipDeviceAttributeLocalL1CacheSupported" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_MULTIPROCESSOR" ] = { "hipDeviceAttributeMaxRegistersPerMultiprocessor" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MANAGED_MEMORY" ] = { "hipDeviceAttributeManagedMemory" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD_GROUP_ID" ] = { "hipDeviceAttributeMultiGpuBoardGroupId" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_MAX" ] = { "hipDeviceAttributeMax" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
// deprecated, do not use
// cuda2hipRename["CU_DEVICE_ATTRIBUTE_CAN_TEX2D_GATHER"] = {"hipDeviceAttributeCanTex2DGather", CONV_DEV, API_DRIVER, HIP_UNSUPPORTED};
// unsupported yet by HIP [CUDA 8.0.44]
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_HOST_NATIVE_ATOMIC_SUPPORTED" ] = { "hipDeviceAttributeHostNativeAtomicSupported" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_SINGLE_TO_DOUBLE_PRECISION_PERF_RATIO" ] = { "hipDeviceAttributeSingleToDoublePrecisionPerfRatio" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS" ] = { "hipDeviceAttributePageableMemoryAccess" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_CONCURRENT_MANAGED_ACCESS" ] = { "hipDeviceAttributeConcurrentManagedAccess" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_COMPUTE_PREEMPTION_SUPPORTED" ] = { "hipDeviceAttributeComputePreemptionSupported" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CU_DEVICE_ATTRIBUTE_CAN_USE_HOST_POINTER_FOR_REGISTERED_MEM" ] = { "hipDeviceAttributeCanUseHostPointerForRegisteredMem" , CONV_DEV , API_DRIVER , HIP_UNSUPPORTED };
2016-09-02 22:23:13 +03:00
cuda2hipRename [ "CUdevprop_st" ] = { "hipDeviceProp_t" , CONV_TYPE , API_DRIVER };
cuda2hipRename [ "CUdevprop" ] = { "hipDeviceProp_t" , CONV_TYPE , API_DRIVER };
2016-09-02 16:31:46 +03:00
// TODO: Analogues enum is needed in HIP. Couldn't map enum to struct hipPointerAttribute_t.
// TODO: Do for Pointer Attributes the same as for Device Attributes.
2016-09-02 22:23:13 +03:00
// cuda2hipRename["CUpointer_attribute_enum"] = {"hipPointerAttribute_t", CONV_TYPE, API_DRIVER};
// cuda2hipRename["CUpointer_attribute"] = {"hipPointerAttribute_t", CONV_TYPE, API_DRIVER};
2016-09-02 16:31:46 +03:00
2017-02-20 18:28:59 +03:00
// pointer to CUfunc_st
2016-09-02 22:23:13 +03:00
cuda2hipRename [ "CUfunction" ] = { "hipFunction_t" , CONV_TYPE , API_DRIVER };
2017-02-20 18:28:59 +03:00
// TODO: in HIP ihipModuleSymbol_t should be declared in hip_runtime_api.h, not in hcc_detail/hip_runtime_api.h, as it's analogue CUfunc_st is declared also in cuda.h
// ToDO: examples are needed with CUfunc_st
// cuda2hipRename["CUfunc_st"] = {"ihipModuleSymbol_t", CONV_TYPE, API_DRIVER};
2016-09-02 16:31:46 +03:00
// unsupported yet by HIP
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "CUfunction_attribute_enum" ] = { "hipFuncAttribute_t" , CONV_TYPE , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "CUfunction_attribute" ] = { "hipFuncAttribute_t" , CONV_TYPE , API_DRIVER , HIP_UNSUPPORTED };
2016-09-02 22:23:13 +03:00
cuda2hipRename [ "CUfunc_cache_enum" ] = { "hipFuncCache" , CONV_TYPE , API_DRIVER };
cuda2hipRename [ "CUfunc_cache" ] = { "hipFuncCache" , CONV_TYPE , API_DRIVER };
2016-09-05 20:26:21 +03:00
cuda2hipRename [ "CU_FUNC_CACHE_PREFER_NONE" ] = { "hipFuncCachePreferNone" , CONV_CACHE , API_DRIVER };
cuda2hipRename [ "CU_FUNC_CACHE_PREFER_SHARED" ] = { "hipFuncCachePreferShared" , CONV_CACHE , API_DRIVER };
cuda2hipRename [ "CU_FUNC_CACHE_PREFER_L1" ] = { "hipFuncCachePreferL1" , CONV_CACHE , API_DRIVER };
cuda2hipRename [ "CU_FUNC_CACHE_PREFER_EQUAL" ] = { "hipFuncCachePreferEqual" , CONV_CACHE , API_DRIVER };
2016-09-02 22:23:13 +03:00
cuda2hipRename [ "CUsharedconfig_enum" ] = { "hipSharedMemConfig" , CONV_TYPE , API_DRIVER };
cuda2hipRename [ "CUsharedconfig" ] = { "hipSharedMemConfig" , CONV_TYPE , API_DRIVER };
cuda2hipRename [ "CU_SHARED_MEM_CONFIG_DEFAULT_BANK_SIZE" ] = { "hipSharedMemBankSizeDefault" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_SHARED_MEM_CONFIG_FOUR_BYTE_BANK_SIZE" ] = { "hipSharedMemBankSizeFourByte" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CU_SHARED_MEM_CONFIG_EIGHT_BYTE_BANK_SIZE" ] = { "hipSharedMemBankSizeEightByte" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "CUcontext" ] = { "hipCtx_t" , CONV_TYPE , API_DRIVER };
2017-02-20 18:28:59 +03:00
// TODO:
// cuda2hipRename["CUctx_st"] = {"XXXX", CONV_TYPE, API_DRIVER};
2016-09-02 22:23:13 +03:00
cuda2hipRename [ "CUmodule" ] = { "hipModule_t" , CONV_TYPE , API_DRIVER };
2017-02-20 18:28:59 +03:00
// TODO:
// cuda2hipRename["CUmod_st"] = {"XXXX", CONV_TYPE, API_DRIVER};
2016-09-02 22:23:13 +03:00
cuda2hipRename [ "CUstream" ] = { "hipStream_t" , CONV_TYPE , API_DRIVER };
2017-02-20 18:28:59 +03:00
// TODO:
// cuda2hipRename["CUstream_st"] = {"XXXX", CONV_TYPE, API_DRIVER};
2016-09-09 11:46:35 +03:00
// Stream Flags
cuda2hipRename [ "CU_STREAM_DEFAULT" ] = { "hipStreamDefault" , CONV_STREAM , API_DRIVER };
cuda2hipRename [ "CU_STREAM_NON_BLOCKING" ] = { "hipStreamNonBlocking" , CONV_STREAM , API_DRIVER };
2016-09-02 16:31:46 +03:00
2016-09-13 15:11:21 +03:00
// Init
cuda2hipRename [ "cuInit" ] = { "hipInit" , CONV_DRIVER , API_DRIVER };
// Driver
cuda2hipRename [ "cuDriverGetVersion" ] = { "hipDriverGetVersion" , CONV_DRIVER , API_DRIVER };
2016-09-05 13:15:49 +03:00
// Context
2016-09-05 20:26:21 +03:00
cuda2hipRename [ "cuCtxCreate_v2" ] = { "hipCtxCreate" , CONV_CONTEXT , API_DRIVER };
cuda2hipRename [ "cuCtxDestroy_v2" ] = { "hipCtxDestroy" , CONV_CONTEXT , API_DRIVER };
cuda2hipRename [ "cuCtxPopCurrent_v2" ] = { "hipCtxPopCurrent" , CONV_CONTEXT , API_DRIVER };
cuda2hipRename [ "cuCtxPushCurrent_v2" ] = { "hipCtxPushCurrent" , CONV_CONTEXT , API_DRIVER };
cuda2hipRename [ "cuCtxSetCurrent" ] = { "hipCtxSetCurrent" , CONV_CONTEXT , API_DRIVER };
cuda2hipRename [ "cuCtxGetCurrent" ] = { "hipCtxGetCurrent" , CONV_CONTEXT , API_DRIVER };
cuda2hipRename [ "cuCtxGetDevice" ] = { "hipCtxGetDevice" , CONV_CONTEXT , API_DRIVER };
cuda2hipRename [ "cuCtxGetApiVersion" ] = { "hipCtxGetApiVersion" , CONV_CONTEXT , API_DRIVER };
cuda2hipRename [ "cuCtxGetCacheConfig" ] = { "hipCtxGetCacheConfig" , CONV_CONTEXT , API_DRIVER };
cuda2hipRename [ "cuCtxSetCacheConfig" ] = { "hipCtxSetCacheConfig" , CONV_CONTEXT , API_DRIVER };
cuda2hipRename [ "cuCtxSetSharedMemConfig" ] = { "hipCtxSetSharedMemConfig" , CONV_CONTEXT , API_DRIVER };
cuda2hipRename [ "cuCtxGetSharedMemConfig" ] = { "hipCtxGetSharedMemConfig" , CONV_CONTEXT , API_DRIVER };
cuda2hipRename [ "cuCtxSynchronize" ] = { "hipCtxSynchronize" , CONV_CONTEXT , API_DRIVER };
cuda2hipRename [ "cuCtxGetFlags" ] = { "hipCtxGetFlags" , CONV_CONTEXT , API_DRIVER };
cuda2hipRename [ "cuCtxEnablePeerAccess" ] = { "hipCtxEnablePeerAccess" , CONV_CONTEXT , API_DRIVER };
cuda2hipRename [ "cuCtxDisablePeerAccess" ] = { "hipCtxDisablePeerAccess" , CONV_CONTEXT , API_DRIVER };
2016-09-05 13:15:49 +03:00
// unsupported yet by HIP
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cuCtxSetLimit" ] = { "hipCtxSetLimit" , CONV_CONTEXT , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "cuCtxGetLimit" ] = { "hipCtxGetLimit" , CONV_CONTEXT , API_DRIVER , HIP_UNSUPPORTED };
2016-09-05 18:05:16 +03:00
// Device
2016-09-05 20:26:21 +03:00
cuda2hipRename [ "cuDeviceGet" ] = { "hipGetDevice" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "cuDeviceGetName" ] = { "hipDeviceGetName" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "cuDeviceGetCount" ] = { "hipGetDeviceCount" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "cuDeviceGetAttribute" ] = { "hipDeviceGetAttribute" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "cuDeviceGetProperties" ] = { "hipGetDeviceProperties" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "cuDeviceGetPCIBusId" ] = { "hipDeviceGetPCIBusId" , CONV_DEV , API_DRIVER };
2017-02-20 21:19:34 +03:00
cuda2hipRename [ "cuDeviceGetByPCIBusId" ] = { "hipDeviceGetByPCIBusId" , CONV_DEV , API_DRIVER };
2016-12-19 14:38:19 +03:00
2016-09-05 20:26:21 +03:00
cuda2hipRename [ "cuDeviceTotalMem_v2" ] = { "hipDeviceTotalMem" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "cuDeviceComputeCapability" ] = { "hipDeviceComputeCapability" , CONV_DEV , API_DRIVER };
cuda2hipRename [ "cuDeviceCanAccessPeer" ] = { "hipDeviceCanAccessPeer" , CONV_DEV , API_DRIVER };
2016-09-05 13:15:49 +03:00
2016-09-09 11:15:11 +03:00
// Events
2017-02-20 18:28:59 +03:00
// pointer to CUevent_st
2017-01-13 14:59:15 +03:00
cuda2hipRename [ "CUevent" ] = { "hipEvent_t" , CONV_TYPE , API_DRIVER };
2017-02-20 18:28:59 +03:00
// ToDO:
// cuda2hipRename["CUevent_st"] = {"XXXX", CONV_TYPE, API_DRIVER};
2017-01-13 14:59:15 +03:00
// Event Flags
cuda2hipRename [ "CU_EVENT_DEFAULT" ] = { "hipEventDefault" , CONV_EVENT , API_DRIVER };
cuda2hipRename [ "CU_EVENT_BLOCKING_SYNC" ] = { "hipEventBlockingSync" , CONV_EVENT , API_DRIVER };
cuda2hipRename [ "CU_EVENT_DISABLE_TIMING" ] = { "hipEventDisableTiming" , CONV_EVENT , API_DRIVER };
cuda2hipRename [ "CU_EVENT_INTERPROCESS" ] = { "hipEventInterprocess" , CONV_EVENT , API_DRIVER };
2016-09-09 11:15:11 +03:00
cuda2hipRename [ "cuEventCreate" ] = { "hipEventCreate" , CONV_EVENT , API_DRIVER };
cuda2hipRename [ "cuEventDestroy_v2" ] = { "hipEventDestroy" , CONV_EVENT , API_DRIVER };
cuda2hipRename [ "cuEventElapsedTime" ] = { "hipEventElapsedTime" , CONV_EVENT , API_DRIVER };
cuda2hipRename [ "cuEventQuery" ] = { "hipEventQuery" , CONV_EVENT , API_DRIVER };
cuda2hipRename [ "cuEventRecord" ] = { "hipEventRecord" , CONV_EVENT , API_DRIVER };
cuda2hipRename [ "cuEventSynchronize" ] = { "hipEventSynchronize" , CONV_EVENT , API_DRIVER };
2016-09-09 11:31:50 +03:00
// Module
cuda2hipRename [ "cuModuleGetFunction" ] = { "hipModuleGetFunction" , CONV_MODULE , API_DRIVER };
cuda2hipRename [ "cuModuleGetGlobal_v2" ] = { "hipModuleGetGlobal" , CONV_MODULE , API_DRIVER };
cuda2hipRename [ "cuModuleLoad" ] = { "hipModuleLoad" , CONV_MODULE , API_DRIVER };
cuda2hipRename [ "cuModuleLoadData" ] = { "hipModuleLoadData" , CONV_MODULE , API_DRIVER };
// unsupported yet by HIP
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cuModuleLoadDataEx" ] = { "hipModuleLoadDataEx" , CONV_MODULE , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "cuModuleLoadFatBinary" ] = { "hipModuleLoadFatBinary" , CONV_MODULE , API_DRIVER , HIP_UNSUPPORTED };
2016-09-09 11:31:50 +03:00
cuda2hipRename [ "cuModuleUnload" ] = { "hipModuleUnload" , CONV_MODULE , API_DRIVER };
cuda2hipRename [ "cuLaunchKernel" ] = { "hipModuleLaunchKernel" , CONV_MODULE , API_DRIVER };
2016-09-09 11:46:35 +03:00
// Streams
// unsupported yet by HIP
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cuStreamAddCallback" ] = { "hipStreamAddCallback" , CONV_STREAM , API_DRIVER , HIP_UNSUPPORTED };
2016-09-09 11:46:35 +03:00
cuda2hipRename [ "cuStreamCreate" ] = { "hipStreamCreate" , CONV_STREAM , API_DRIVER };
cuda2hipRename [ "cuStreamDestroy_v2" ] = { "hipStreamDestroy" , CONV_STREAM , API_DRIVER };
cuda2hipRename [ "cuStreamQuery" ] = { "hipStreamQuery" , CONV_STREAM , API_DRIVER };
cuda2hipRename [ "cuStreamSynchronize" ] = { "hipStreamSynchronize" , CONV_STREAM , API_DRIVER };
cuda2hipRename [ "cuStreamWaitEvent" ] = { "hipStreamWaitEvent" , CONV_STREAM , API_DRIVER };
2016-09-13 15:11:21 +03:00
// Memory management
cuda2hipRename [ "cuMemAlloc_v2" ] = { "hipMalloc" , CONV_MEM , API_DRIVER };
cuda2hipRename [ "cuMemFree_v2" ] = { "hipFree" , CONV_MEM , API_DRIVER };
cuda2hipRename [ "cuMemHostAlloc" ] = { "hipHostMalloc" , CONV_MEM , API_DRIVER };
cuda2hipRename [ "cuMemFreeHost" ] = { "hipHostFree" , CONV_MEM , API_DRIVER };
cuda2hipRename [ "cuMemcpyDtoD_v2" ] = { "hipMemcpyDtoD" , CONV_MEM , API_DRIVER };
cuda2hipRename [ "cuMemcpyDtoDAsync_v2" ] = { "hipMemcpyDtoDAsync" , CONV_MEM , API_DRIVER };
cuda2hipRename [ "cuMemcpyDtoH_v2" ] = { "hipMemcpyDtoH" , CONV_MEM , API_DRIVER };
cuda2hipRename [ "cuMemcpyDtoHAsync_v2" ] = { "hipMemcpyDtoHAsync" , CONV_MEM , API_DRIVER };
cuda2hipRename [ "cuMemcpyHtoD_v2" ] = { "hipMemcpyHtoD" , CONV_MEM , API_DRIVER };
cuda2hipRename [ "cuMemcpyHtoDAsync_v2" ] = { "hipMemcpyHtoDAsync" , CONV_MEM , API_DRIVER };
// unsupported yet by HIP
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cuMemsetD8_v2" ] = { "hipMemsetD8" , CONV_STREAM , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "cuMemsetD8Async" ] = { "hipMemsetD8Async" , CONV_STREAM , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "cuMemsetD2D8_v2" ] = { "hipMemsetD2D8" , CONV_STREAM , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "cuMemsetD2D8Async" ] = { "hipMemsetD2D8Async" , CONV_STREAM , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "cuMemsetD16_v2" ] = { "hipMemsetD16" , CONV_STREAM , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "cuMemsetD16Async" ] = { "hipMemsetD16Async" , CONV_STREAM , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "cuMemsetD2D16_v2" ] = { "hipMemsetD2D16" , CONV_STREAM , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "cuMemsetD2D16Async" ] = { "hipMemsetD2D16Async" , CONV_STREAM , API_DRIVER , HIP_UNSUPPORTED };
2016-09-13 15:11:21 +03:00
cuda2hipRename [ "cuMemsetD32_v2" ] = { "hipMemset" , CONV_MEM , API_DRIVER };
cuda2hipRename [ "cuMemsetD32Async" ] = { "hipMemsetAsync" , CONV_MEM , API_DRIVER };
// unsupported yet by HIP
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cuMemsetD2D32_v2" ] = { "hipMemsetD2D32" , CONV_STREAM , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "cuMemsetD2D32Async" ] = { "hipMemsetD2D32Async" , CONV_STREAM , API_DRIVER , HIP_UNSUPPORTED };
2016-09-13 15:11:21 +03:00
cuda2hipRename [ "cuMemGetInfo_v2" ] = { "hipMemGetInfo" , CONV_MEM , API_DRIVER };
cuda2hipRename [ "cuMemHostRegister_v2" ] = { "hipHostRegister" , CONV_MEM , API_DRIVER };
cuda2hipRename [ "cuMemHostUnregister" ] = { "hipHostUnregister" , CONV_MEM , API_DRIVER };
2016-10-28 18:32:13 +03:00
// Profiler
// unsupported yet by HIP
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cuProfilerInitialize" ] = { "hipProfilerInitialize" , CONV_OTHER , API_DRIVER , HIP_UNSUPPORTED };
2016-10-28 18:32:13 +03:00
cuda2hipRename [ "cuProfilerStart" ] = { "hipProfilerStart" , CONV_OTHER , API_DRIVER };
cuda2hipRename [ "cuProfilerStop" ] = { "hipProfilerStop" , CONV_OTHER , API_DRIVER };
2016-09-13 15:11:21 +03:00
2016-09-02 16:31:46 +03:00
/////////////////////////////// CUDA RT API ///////////////////////////////
2017-01-10 20:24:27 +03:00
// Data types
// unsupported yet by HIP [CUDA 8.0.44]
cuda2hipRename [ "cudaDataType_t" ] = { "hipDataType_t" , CONV_TYPE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDataType" ] = { "hipDataType_t" , CONV_TYPE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "CUDA_R_16F" ] = { "hipR16F" , CONV_TYPE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "CUDA_C_16F" ] = { "hipC16F" , CONV_TYPE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "CUDA_R_32F" ] = { "hipR32F" , CONV_TYPE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "CUDA_C_32F" ] = { "hipC32F" , CONV_TYPE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "CUDA_R_64F" ] = { "hipR64F" , CONV_TYPE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "CUDA_C_64F" ] = { "hipC64F" , CONV_TYPE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "CUDA_R_8I" ] = { "hipR8I" , CONV_TYPE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "CUDA_C_8I" ] = { "hipC8I" , CONV_TYPE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "CUDA_R_8U" ] = { "hipR8U" , CONV_TYPE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "CUDA_C_8U" ] = { "hipC8U" , CONV_TYPE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "CUDA_R_32I" ] = { "hipR32I" , CONV_TYPE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "CUDA_C_32I" ] = { "hipC32I" , CONV_TYPE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "CUDA_R_32U" ] = { "hipR32U" , CONV_TYPE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "CUDA_C_32U" ] = { "hipC32U" , CONV_TYPE , API_RUNTIME , HIP_UNSUPPORTED };
// Library property types
// IMPORTANT: no cuda prefix
// TO_DO: new matcher is needed
// unsupported yet by HIP [CUDA 8.0.44]
cuda2hipRename [ "libraryPropertyType_t" ] = { "hipLibraryPropertyType_t" , CONV_TYPE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "libraryPropertyType" ] = { "hipLibraryPropertyType_t" , CONV_TYPE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "MAJOR_VERSION" ] = { "hipLibraryMajorVersion" , CONV_TYPE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "MINOR_VERSION" ] = { "hipLibraryMinorVersion" , CONV_TYPE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "PATCH_LEVEL" ] = { "hipLibraryPatchVersion" , CONV_TYPE , API_RUNTIME , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// Error API
2017-02-16 21:26:44 +03:00
cuda2hipRename [ "cudaGetLastError" ] = { "hipGetLastError" , CONV_ERR , API_RUNTIME };
cuda2hipRename [ "cudaPeekAtLastError" ] = { "hipPeekAtLastError" , CONV_ERR , API_RUNTIME };
cuda2hipRename [ "cudaGetErrorName" ] = { "hipGetErrorName" , CONV_ERR , API_RUNTIME };
cuda2hipRename [ "cudaGetErrorString" ] = { "hipGetErrorString" , CONV_ERR , API_RUNTIME };
2016-03-24 14:54:14 +03:00
2017-02-20 18:28:59 +03:00
// Arrays
cuda2hipRename [ "cudaArray" ] = { "hipArray" , CONV_MEM , API_RUNTIME };
// typedef struct cudaArray *cudaArray_t;
cuda2hipRename [ "cudaArray_t" ] = { "hipArray *" , CONV_MEM , API_RUNTIME };
// typedef const struct cudaArray *cudaArray_const_t;
cuda2hipRename [ "cudaArray_const_t" ] = { "const hipArray *" , CONV_MEM , API_RUNTIME };
// unsupported yet by HIP
cuda2hipRename [ "cudaMipmappedArray_t" ] = { "hipMipmappedArray *" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaMipmappedArray_const_t" ] = { "const hipMipmappedArray *" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
2017-02-20 21:19:34 +03:00
// memcpy
2017-03-03 21:59:05 +03:00
// memcpy structs
// unsupported yet by HIP
cuda2hipRename [ "cudaMemcpy3DParms" ] = { "hipMemcpy3DParms" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaMemcpy3DPeerParms" ] = { "hipMemcpy3DPeerParms" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
// memcpy functions
2017-02-16 21:26:44 +03:00
cuda2hipRename [ "cudaMemcpy" ] = { "hipMemcpy" , CONV_MEM , API_RUNTIME };
2017-02-16 23:03:01 +03:00
cuda2hipRename [ "cudaMemcpyToArray" ] = { "hipMemcpyToArray" , CONV_MEM , API_RUNTIME };
2017-02-16 21:26:44 +03:00
cuda2hipRename [ "cudaMemcpyToSymbol" ] = { "hipMemcpyToSymbol" , CONV_MEM , API_RUNTIME };
2017-02-16 23:03:01 +03:00
cuda2hipRename [ "cudaMemcpyToSymbolAsync" ] = { "hipMemcpyToSymbolAsync" , CONV_MEM , API_RUNTIME };
2017-02-16 21:26:44 +03:00
cuda2hipRename [ "cudaMemcpyAsync" ] = { "hipMemcpyAsync" , CONV_MEM , API_RUNTIME };
2017-02-16 23:03:01 +03:00
cuda2hipRename [ "cudaMemcpy2D" ] = { "hipMemcpy2D" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaMemcpy2DToArray" ] = { "hipMemcpy2DToArray" , CONV_MEM , API_RUNTIME };
2017-02-20 21:19:34 +03:00
// unsupported yet by HIP
cuda2hipRename [ "cudaMemcpy2DArrayToArray" ] = { "hipMemcpy2DArrayToArray" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaMemcpy2DAsync" ] = { "hipMemcpy2DAsync" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaMemcpy2DFromArray" ] = { "hipMemcpy2DFromArray" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaMemcpy2DFromArrayAsync" ] = { "hipMemcpy2DFromArrayAsync" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaMemcpy2DToArrayAsync" ] = { "hipMemcpy2DToArrayAsync" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaMemcpy3D" ] = { "hipMemcpy3D" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaMemcpy3DAsync" ] = { "hipMemcpy3DAsync" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaMemcpy3DPeer" ] = { "hipMemcpy3DPeer" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaMemcpy3DPeerAsync" ] = { "hipMemcpy3DPeerAsync" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaMemcpyArrayToArray" ] = { "hipMemcpyArrayToArray" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaMemcpyFromArrayAsync" ] = { "hipMemcpyFromArrayAsync" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaMemcpyFromSymbolAsync" ] = { "hipMemcpyFromSymbolAsync" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
// memcpy kind
2017-02-16 21:26:44 +03:00
cuda2hipRename [ "cudaMemcpyKind" ] = { "hipMemcpyKind" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaMemcpyHostToHost" ] = { "hipMemcpyHostToHost" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaMemcpyHostToDevice" ] = { "hipMemcpyHostToDevice" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaMemcpyDeviceToHost" ] = { "hipMemcpyDeviceToHost" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaMemcpyDeviceToDevice" ] = { "hipMemcpyDeviceToDevice" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaMemcpyDefault" ] = { "hipMemcpyDefault" , CONV_MEM , API_RUNTIME };
2016-06-28 15:33:38 +03:00
2017-02-20 21:19:34 +03:00
// memset
cuda2hipRename [ "cudaMemset" ] = { "hipMemset" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaMemsetAsync" ] = { "hipMemsetAsync" , CONV_MEM , API_RUNTIME };
// unsupported yet by HIP
cuda2hipRename [ "cudaMemset2D" ] = { "hipMemset2D" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaMemset2DAsync" ] = { "hipMemset2DAsync" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaMemset3D" ] = { "hipMemset3D" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaMemset3DAsync" ] = { "hipMemset3DAsync" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// Memory management
2017-02-20 21:19:34 +03:00
cuda2hipRename [ "cudaMemGetInfo" ] = { "hipMemGetInfo" , CONV_MEM , API_RUNTIME };
// unsupported yet by HIP
cuda2hipRename [ "cudaArrayGetInfo" ] = { "hipArrayGetInfo" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaFreeMipmappedArray" ] = { "hipFreeMipmappedArray" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGetMipmappedArrayLevel" ] = { "hipGetMipmappedArrayLevel" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGetSymbolAddress" ] = { "hipGetSymbolAddress" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGetSymbolSize" ] = { "hipGetSymbolSize" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
// malloc
2017-02-16 21:26:44 +03:00
cuda2hipRename [ "cudaMalloc" ] = { "hipMalloc" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaMallocHost" ] = { "hipHostMalloc" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaMallocArray" ] = { "hipMallocArray" , CONV_MEM , API_RUNTIME };
2017-02-20 21:19:34 +03:00
// unsupported yet by HIP
cuda2hipRename [ "cudaMalloc3D" ] = { "hipMalloc3D" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaMalloc3DArray" ] = { "hipMalloc3DArray" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaMallocManaged" ] = { "hipMallocManaged" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaMallocMipmappedArray" ] = { "hipMallocMipmappedArray" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaMallocPitch" ] = { "hipMallocPitch" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
2017-02-16 21:26:44 +03:00
cuda2hipRename [ "cudaFree" ] = { "hipFree" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaFreeHost" ] = { "hipHostFree" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaFreeArray" ] = { "hipFreeArray" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaHostRegister" ] = { "hipHostRegister" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaHostUnregister" ] = { "hipHostUnregister" , CONV_MEM , API_RUNTIME };
// hipHostAlloc deprecated - use hipHostMalloc instead
cuda2hipRename [ "cudaHostAlloc" ] = { "hipHostMalloc" , CONV_MEM , API_RUNTIME };
2016-07-07 18:01:41 +03:00
// Memory types
2017-02-16 21:26:44 +03:00
cuda2hipRename [ "cudaMemoryType" ] = { "hipMemoryType" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaMemoryTypeHost" ] = { "hipMemoryTypeHost" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaMemoryTypeDevice" ] = { "hipMemoryTypeDevice" , CONV_MEM , API_RUNTIME };
2016-07-07 18:01:41 +03:00
2017-02-20 21:19:34 +03:00
// make memory functions
// unsupported yet by HIP
cuda2hipRename [ "make_cudaExtent" ] = { "make_hipExtent" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "make_cudaPitchedPtr" ] = { "make_hipPitchedPtr" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "make_cudaPos" ] = { "make_hipPos" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaExtent" ] = { "hipExtent" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaPitchedPtr" ] = { "hipPitchedPtr" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaPos" ] = { "hipPos" , CONV_MEM , API_RUNTIME , HIP_UNSUPPORTED };
2016-07-07 18:01:41 +03:00
// Host Malloc Flags
2017-02-16 21:26:44 +03:00
cuda2hipRename [ "cudaHostAllocDefault" ] = { "hipHostMallocDefault" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaHostAllocPortable" ] = { "hipHostMallocPortable" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaHostAllocMapped" ] = { "hipHostMallocMapped" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaHostAllocWriteCombined" ] = { "hipHostMallocWriteCombined" , CONV_MEM , API_RUNTIME };
2016-07-07 18:01:41 +03:00
// Host Register Flags
2017-02-16 21:26:44 +03:00
cuda2hipRename [ "cudaHostGetFlags" ] = { "hipHostGetFlags" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaHostRegisterDefault" ] = { "hipHostRegisterDefault" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaHostRegisterPortable" ] = { "hipHostRegisterPortable" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaHostRegisterMapped" ] = { "hipHostRegisterMapped" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaHostRegisterIoMemory" ] = { "hipHostRegisterIoMemory" , CONV_MEM , API_RUNTIME };
2016-03-24 14:54:14 +03:00
2016-06-28 15:33:38 +03:00
// Coordinate Indexing and Dimensions
2016-08-25 19:36:37 +03:00
cuda2hipRename [ "threadIdx.x" ] = { "hipThreadIdx_x" , CONV_COORD_FUNC , API_RUNTIME };
cuda2hipRename [ "threadIdx.y" ] = { "hipThreadIdx_y" , CONV_COORD_FUNC , API_RUNTIME };
cuda2hipRename [ "threadIdx.z" ] = { "hipThreadIdx_z" , CONV_COORD_FUNC , API_RUNTIME };
2016-03-24 14:54:14 +03:00
2016-08-25 19:36:37 +03:00
cuda2hipRename [ "blockIdx.x" ] = { "hipBlockIdx_x" , CONV_COORD_FUNC , API_RUNTIME };
cuda2hipRename [ "blockIdx.y" ] = { "hipBlockIdx_y" , CONV_COORD_FUNC , API_RUNTIME };
cuda2hipRename [ "blockIdx.z" ] = { "hipBlockIdx_z" , CONV_COORD_FUNC , API_RUNTIME };
2016-03-24 14:54:14 +03:00
2016-08-25 19:36:37 +03:00
cuda2hipRename [ "blockDim.x" ] = { "hipBlockDim_x" , CONV_COORD_FUNC , API_RUNTIME };
cuda2hipRename [ "blockDim.y" ] = { "hipBlockDim_y" , CONV_COORD_FUNC , API_RUNTIME };
cuda2hipRename [ "blockDim.z" ] = { "hipBlockDim_z" , CONV_COORD_FUNC , API_RUNTIME };
2016-03-24 14:54:14 +03:00
2016-08-25 19:36:37 +03:00
cuda2hipRename [ "gridDim.x" ] = { "hipGridDim_x" , CONV_COORD_FUNC , API_RUNTIME };
cuda2hipRename [ "gridDim.y" ] = { "hipGridDim_y" , CONV_COORD_FUNC , API_RUNTIME };
cuda2hipRename [ "gridDim.z" ] = { "hipGridDim_z" , CONV_COORD_FUNC , API_RUNTIME };
2016-03-24 14:54:14 +03:00
2016-08-25 19:36:37 +03:00
cuda2hipRename [ "blockIdx.x" ] = { "hipBlockIdx_x" , CONV_COORD_FUNC , API_RUNTIME };
cuda2hipRename [ "blockIdx.y" ] = { "hipBlockIdx_y" , CONV_COORD_FUNC , API_RUNTIME };
cuda2hipRename [ "blockIdx.z" ] = { "hipBlockIdx_z" , CONV_COORD_FUNC , API_RUNTIME };
2016-03-24 14:54:14 +03:00
2016-08-25 19:36:37 +03:00
cuda2hipRename [ "blockDim.x" ] = { "hipBlockDim_x" , CONV_COORD_FUNC , API_RUNTIME };
cuda2hipRename [ "blockDim.y" ] = { "hipBlockDim_y" , CONV_COORD_FUNC , API_RUNTIME };
cuda2hipRename [ "blockDim.z" ] = { "hipBlockDim_z" , CONV_COORD_FUNC , API_RUNTIME };
2016-03-24 14:54:14 +03:00
2016-08-25 19:36:37 +03:00
cuda2hipRename [ "gridDim.x" ] = { "hipGridDim_x" , CONV_COORD_FUNC , API_RUNTIME };
cuda2hipRename [ "gridDim.y" ] = { "hipGridDim_y" , CONV_COORD_FUNC , API_RUNTIME };
cuda2hipRename [ "gridDim.z" ] = { "hipGridDim_z" , CONV_COORD_FUNC , API_RUNTIME };
2016-03-24 14:54:14 +03:00
2016-08-25 19:36:37 +03:00
cuda2hipRename [ "warpSize" ] = { "hipWarpSize" , CONV_SPECIAL_FUNC , API_RUNTIME };
2016-03-24 14:54:14 +03:00
// Events
2017-02-20 21:19:34 +03:00
cuda2hipRename [ "cudaEvent_t" ] = { "hipEvent_t" , CONV_TYPE , API_RUNTIME };
cuda2hipRename [ "cudaEventCreate" ] = { "hipEventCreate" , CONV_EVENT , API_RUNTIME };
cuda2hipRename [ "cudaEventCreateWithFlags" ] = { "hipEventCreateWithFlags" , CONV_EVENT , API_RUNTIME };
cuda2hipRename [ "cudaEventDestroy" ] = { "hipEventDestroy" , CONV_EVENT , API_RUNTIME };
cuda2hipRename [ "cudaEventRecord" ] = { "hipEventRecord" , CONV_EVENT , API_RUNTIME };
cuda2hipRename [ "cudaEventElapsedTime" ] = { "hipEventElapsedTime" , CONV_EVENT , API_RUNTIME };
cuda2hipRename [ "cudaEventSynchronize" ] = { "hipEventSynchronize" , CONV_EVENT , API_RUNTIME };
cuda2hipRename [ "cudaEventQuery" ] = { "hipEventQuery" , CONV_EVENT , API_RUNTIME };
2016-07-07 18:01:41 +03:00
// Event Flags
2017-02-20 21:19:34 +03:00
cuda2hipRename [ "cudaEventDefault" ] = { "hipEventDefault" , CONV_EVENT , API_RUNTIME };
cuda2hipRename [ "cudaEventBlockingSync" ] = { "hipEventBlockingSync" , CONV_EVENT , API_RUNTIME };
cuda2hipRename [ "cudaEventDisableTiming" ] = { "hipEventDisableTiming" , CONV_EVENT , API_RUNTIME };
cuda2hipRename [ "cudaEventInterprocess" ] = { "hipEventInterprocess" , CONV_EVENT , API_RUNTIME };
2016-03-24 14:54:14 +03:00
// Streams
2017-02-20 21:19:34 +03:00
cuda2hipRename [ "cudaStream_t" ] = { "hipStream_t" , CONV_TYPE , API_RUNTIME };
cuda2hipRename [ "cudaStreamCreate" ] = { "hipStreamCreate" , CONV_STREAM , API_RUNTIME };
cuda2hipRename [ "cudaStreamCreateWithFlags" ] = { "hipStreamCreateWithFlags" , CONV_STREAM , API_RUNTIME };
// unsupported yet by HIP
cuda2hipRename [ "cudaStreamCreateWithPriority" ] = { "hipStreamCreateWithPriority" , CONV_STREAM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaStreamDestroy" ] = { "hipStreamDestroy" , CONV_STREAM , API_RUNTIME };
cuda2hipRename [ "cudaStreamWaitEvent" ] = { "hipStreamWaitEvent" , CONV_STREAM , API_RUNTIME };
cuda2hipRename [ "cudaStreamSynchronize" ] = { "hipStreamSynchronize" , CONV_STREAM , API_RUNTIME };
cuda2hipRename [ "cudaStreamGetFlags" ] = { "hipStreamGetFlags" , CONV_STREAM , API_RUNTIME };
cuda2hipRename [ "cudaStreamQuery" ] = { "hipStreamQuery" , CONV_STREAM , API_RUNTIME };
cuda2hipRename [ "cudaStreamAddCallback" ] = { "hipStreamAddCallback" , CONV_STREAM , API_RUNTIME };
// unsupported yet by HIP
cuda2hipRename [ "cudaStreamAttachMemAsync" ] = { "hipStreamAttachMemAsync" , CONV_STREAM , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaStreamGetPriority" ] = { "hipStreamGetPriority" , CONV_STREAM , API_RUNTIME , HIP_UNSUPPORTED };
2017-02-17 15:04:15 +03:00
2016-09-09 11:46:35 +03:00
// Stream Flags
2017-02-20 21:19:34 +03:00
cuda2hipRename [ "cudaStreamDefault" ] = { "hipStreamDefault" , CONV_STREAM , API_RUNTIME };
cuda2hipRename [ "cudaStreamNonBlocking" ] = { "hipStreamNonBlocking" , CONV_STREAM , API_RUNTIME };
2016-03-24 14:54:14 +03:00
// Other synchronization
2017-02-20 21:19:34 +03:00
cuda2hipRename [ "cudaDeviceSynchronize" ] = { "hipDeviceSynchronize" , CONV_DEV , API_RUNTIME };
2016-06-28 15:33:38 +03:00
// translate deprecated cudaThreadSynchronize
2017-02-20 21:19:34 +03:00
cuda2hipRename [ "cudaThreadSynchronize" ] = { "hipDeviceSynchronize" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDeviceReset" ] = { "hipDeviceReset" , CONV_DEV , API_RUNTIME };
2016-06-28 15:33:38 +03:00
// translate deprecated cudaThreadExit
2017-02-20 21:19:34 +03:00
cuda2hipRename [ "cudaThreadExit" ] = { "hipDeviceReset" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaSetDevice" ] = { "hipSetDevice" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaGetDevice" ] = { "hipGetDevice" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaGetDeviceCount" ] = { "hipGetDeviceCount" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaChooseDevice" ] = { "hipChooseDevice" , CONV_DEV , API_RUNTIME };
2016-03-24 19:31:42 +03:00
2016-06-29 20:32:05 +03:00
// Attributes
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaDeviceGetAttribute" ] = { "hipDeviceGetAttribute" , CONV_DEV , API_RUNTIME };
2016-08-25 19:36:37 +03:00
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaDeviceAttr" ] = { "hipDeviceAttribute_t" , CONV_TYPE , API_RUNTIME };
2017-01-10 19:29:33 +03:00
cuda2hipRename [ "cudaDevAttrMaxThreadsPerBlock" ] = { "hipDeviceAttributeMaxThreadsPerBlock" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrMaxBlockDimX" ] = { "hipDeviceAttributeMaxBlockDimX" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrMaxBlockDimY" ] = { "hipDeviceAttributeMaxBlockDimY" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrMaxBlockDimZ" ] = { "hipDeviceAttributeMaxBlockDimZ" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrMaxGridDimX" ] = { "hipDeviceAttributeMaxGridDimX" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrMaxGridDimY" ] = { "hipDeviceAttributeMaxGridDimY" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrMaxGridDimZ" ] = { "hipDeviceAttributeMaxGridDimZ" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrMaxSharedMemoryPerBlock" ] = { "hipDeviceAttributeMaxSharedMemoryPerBlock" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrTotalConstantMemory" ] = { "hipDeviceAttributeTotalConstantMemory" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrWarpSize" ] = { "hipDeviceAttributeWarpSize" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrMaxRegistersPerBlock" ] = { "hipDeviceAttributeMaxRegistersPerBlock" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrClockRate" ] = { "hipDeviceAttributeClockRate" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrMemoryClockRate" ] = { "hipDeviceAttributeMemoryClockRate" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrGlobalMemoryBusWidth" ] = { "hipDeviceAttributeMemoryBusWidth" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrMultiProcessorCount" ] = { "hipDeviceAttributeMultiprocessorCount" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrComputeMode" ] = { "hipDeviceAttributeComputeMode" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrL2CacheSize" ] = { "hipDeviceAttributeL2CacheSize" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrMaxThreadsPerMultiProcessor" ] = { "hipDeviceAttributeMaxThreadsPerMultiProcessor" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrComputeCapabilityMajor" ] = { "hipDeviceAttributeComputeCapabilityMajor" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrComputeCapabilityMinor" ] = { "hipDeviceAttributeComputeCapabilityMinor" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrConcurrentKernels" ] = { "hipDeviceAttributeConcurrentKernels" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrPciBusId" ] = { "hipDeviceAttributePciBusId" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrPciDeviceId" ] = { "hipDeviceAttributePciDeviceId" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrMaxSharedMemoryPerMultiprocessor" ] = { "hipDeviceAttributeMaxSharedMemoryPerMultiprocessor" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDevAttrIsMultiGpuBoard" ] = { "hipDeviceAttributeIsMultiGpuBoard" , CONV_DEV , API_RUNTIME };
// unsupported yet by HIP
cuda2hipRename [ "cudaDevAttrMaxPitch" ] = { "hipDeviceAttributeMaxPitch" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrTextureAlignment" ] = { "hipDeviceAttributeTextureAlignment" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
// Is not deprecated as CUDA Driver's API analogue CU_DEVICE_ATTRIBUTE_GPU_OVERLAP
cuda2hipRename [ "cudaDevAttrGpuOverlap" ] = { "hipDeviceAttributeGpuOverlap" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrKernelExecTimeout" ] = { "hipDeviceAttributeKernelExecTimeout" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrIntegrated" ] = { "hipDeviceAttributeIntegrated" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrCanMapHostMemory" ] = { "hipDeviceAttributeCanMapHostMemory" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture1DWidth" ] = { "hipDeviceAttributeMaxTexture1DWidth" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture2DWidth" ] = { "hipDeviceAttributeMaxTexture2DWidth" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture2DHeight" ] = { "hipDeviceAttributeMaxTexture2DHeight" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture3DWidth" ] = { "hipDeviceAttributeMaxTexture3DWidth" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture3DHeight" ] = { "hipDeviceAttributeMaxTexture3DHeight" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture3DDepth" ] = { "hipDeviceAttributeMaxTexture3DDepth" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture2DLayeredWidth" ] = { "hipDeviceAttributeMaxTexture2DLayeredWidth" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture2DLayeredHeight" ] = { "hipDeviceAttributeMaxTexture2DLayeredHeight" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture2DLayeredLayers" ] = { "hipDeviceAttributeMaxTexture2DLayeredLayers" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrSurfaceAlignment" ] = { "hipDeviceAttributeSurfaceAlignment" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrEccEnabled" ] = { "hipDeviceAttributeEccEnabled" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrTccDriver" ] = { "hipDeviceAttributeTccDriver" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaDevAttrAsyncEngineCount" ] = { "hipDevAttrAsyncEngineCount" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
2017-01-10 19:29:33 +03:00
cuda2hipRename [ "cudaDevAttrUnifiedAddressing" ] = { "hipDeviceAttributeUnifiedAddressing" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture1DLayeredWidth" ] = { "hipDeviceAttributeMaxTexture1DLayeredWidth" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture1DLayeredLayers" ] = { "hipDeviceAttributeMaxTexture1DLayeredLayers" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture2DGatherWidth" ] = { "hipDeviceAttributeMaxTexture2DGatherWidth" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture2DGatherHeight" ] = { "hipDeviceAttributeMaxTexture2DGatherHeight" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture3DWidthAlt" ] = { "hipDeviceAttributeMaxTexture3DWidthAlternate" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture3DHeightAlt" ] = { "hipDeviceAttributeMaxTexture3DHeightAlternate" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture3DDepthAlt" ] = { "hipDeviceAttributeMaxTexture3DDepthAlternate" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrPciDomainId" ] = { "hipDeviceAttributePciDomainId" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrTexturePitchAlignment" ] = { "hipDeviceAttributeTexturePitchAlignment" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTextureCubemapWidth" ] = { "hipDeviceAttributeMaxTextureCubemapWidth" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTextureCubemapLayeredWidth" ] = { "hipDeviceAttributeMaxTextureCubemapLayeredWidth" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTextureCubemapLayeredLayers" ] = { "hipDeviceAttributeMaxTextureCubemapLayeredLayers" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxSurface1DWidth" ] = { "hipDeviceAttributeMaxSurface1DWidth" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxSurface2DWidth" ] = { "hipDeviceAttributeMaxSurface2DWidth" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxSurface2DHeight" ] = { "hipDeviceAttributeMaxSurface2DHeight" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxSurface3DWidth" ] = { "hipDeviceAttributeMaxSurface3DWidth" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxSurface3DHeight" ] = { "hipDeviceAttributeMaxSurface3DHeight" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxSurface3DDepth" ] = { "hipDeviceAttributeMaxSurface3DDepth" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxSurface1DLayeredWidth" ] = { "hipDeviceAttributeMaxSurface1DLayeredWidth" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxSurface1DLayeredLayers" ] = { "hipDeviceAttributeMaxSurface1DLayeredLayers" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxSurface2DLayeredWidth" ] = { "hipDeviceAttributeMaxSurface2DLayeredWidth" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxSurface2DLayeredHeight" ] = { "hipDeviceAttributeMaxSurface2DLayeredHeight" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxSurface2DLayeredLayers" ] = { "hipDeviceAttributeMaxSurface2DLayeredLayers" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxSurfaceCubemapWidth" ] = { "hipDeviceAttributeMaxSurfaceCubemapWidth" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxSurfaceCubemapLayeredWidth" ] = { "hipDeviceAttributeMaxSurfaceCubemapLayeredWidth" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxSurfaceCubemapLayeredLayers" ] = { "hipDeviceAttributeMaxSurfaceCubemapLayeredLayers" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture1DLinearWidth" ] = { "hipDeviceAttributeMaxTexture1DLinearWidth" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture2DLinearWidth" ] = { "hipDeviceAttributeMaxTexture2DLinearWidth" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture2DLinearHeight" ] = { "hipDeviceAttributeMaxTexture2DLinearHeight" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture2DLinearPitch" ] = { "hipDeviceAttributeMaxTexture2DLinearPitch" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture2DMipmappedWidth" ] = { "hipDeviceAttributeMaxTexture2DMipmappedWidth" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture2DMipmappedHeight" ] = { "hipDeviceAttributeMaxTexture2DMipmappedHeight" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxTexture1DMipmappedWidth" ] = { "hipDeviceAttributeMaxTexture1DMipmappedWidth" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrStreamPrioritiesSupported" ] = { "hipDeviceAttributeStreamPrioritiesSupported" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrGlobalL1CacheSupported" ] = { "hipDeviceAttributeGlobalL1CacheSupported" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrLocalL1CacheSupported" ] = { "hipDeviceAttributeLocalL1CacheSupported" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMaxRegistersPerMultiprocessor" ] = { "hipDeviceAttributeMaxRegistersPerMultiprocessor" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrManagedMemory" ] = { "hipDeviceAttributeManagedMemory" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrMultiGpuBoardGroupID" ] = { "hipDeviceAttributeMultiGpuBoardGroupID" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
// unsupported yet by HIP [CUDA 8.0.44]
cuda2hipRename [ "cudaDevAttrHostNativeAtomicSupported" ] = { "hipDeviceAttributeHostNativeAtomicSupported" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrSingleToDoublePrecisionPerfRatio" ] = { "hipDeviceAttributeSingleToDoublePrecisionPerfRatio" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrPageableMemoryAccess" ] = { "hipDeviceAttributePageableMemoryAccess" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrConcurrentManagedAccess" ] = { "hipDeviceAttributeConcurrentManagedAccess" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrComputePreemptionSupported" ] = { "hipDeviceAttributeComputePreemptionSupported" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDevAttrCanUseHostPointerForRegisteredMem" ] = { "hipDeviceAttributeCanUseHostPointerForRegisteredMem" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
2016-03-25 18:28:37 +03:00
2016-07-07 18:01:41 +03:00
// Pointer Attributes
2016-08-25 19:36:37 +03:00
cuda2hipRename [ "cudaPointerAttributes" ] = { "hipPointerAttribute_t" , CONV_TYPE , API_RUNTIME };
cuda2hipRename [ "cudaPointerGetAttributes" ] = { "hipPointerGetAttributes" , CONV_MEM , API_RUNTIME };
2016-07-07 18:01:41 +03:00
2016-08-25 19:36:37 +03:00
cuda2hipRename [ "cudaHostGetDevicePointer" ] = { "hipHostGetDevicePointer" , CONV_MEM , API_RUNTIME };
2016-07-07 18:01:41 +03:00
2016-03-24 14:54:14 +03:00
// Device
2017-02-20 21:19:34 +03:00
cuda2hipRename [ "cudaDeviceProp" ] = { "hipDeviceProp_t" , CONV_TYPE , API_RUNTIME };
cuda2hipRename [ "cudaGetDeviceProperties" ] = { "hipGetDeviceProperties" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDeviceGetPCIBusId" ] = { "hipDeviceGetPCIBusId" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDeviceGetByPCIBusId" ] = { "hipDeviceGetByPCIBusId" , CONV_DEV , API_RUNTIME };
// unsupported yet by HIP
cuda2hipRename [ "cudaDeviceGetStreamPriorityRange" ] = { "hipDeviceGetStreamPriorityRange" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaSetValidDevices" ] = { "hipSetValidDevices" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
2016-03-24 14:54:14 +03:00
2017-03-03 21:59:05 +03:00
// Compute mode
cuda2hipRename [ "cudaComputeMode" ] = { "hipComputeMode" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaComputeModeDefault" ] = { "hipComputeModeDefault" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaComputeModeExclusive" ] = { "hipComputeModeExclusive" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaComputeModeProhibited" ] = { "hipComputeModeProhibited" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaComputeModeExclusiveProcess" ] = { "hipComputeModeExclusiveProcess" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
2016-07-07 18:01:41 +03:00
// Device Flags
2017-02-20 21:19:34 +03:00
// unsupported yet by HIP
cuda2hipRename [ "cudaGetDeviceFlags" ] = { "hipGetDeviceFlags" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
2016-08-25 19:36:37 +03:00
cuda2hipRename [ "cudaSetDeviceFlags" ] = { "hipSetDeviceFlags" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDeviceScheduleAuto" ] = { "hipDeviceScheduleAuto" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDeviceScheduleSpin" ] = { "hipDeviceScheduleSpin" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDeviceScheduleYield" ] = { "hipDeviceScheduleYield" , CONV_DEV , API_RUNTIME };
2016-07-07 18:01:41 +03:00
// deprecated as of CUDA 4.0 and replaced with cudaDeviceScheduleBlockingSync
2017-02-20 18:28:59 +03:00
cuda2hipRename [ "cudaDeviceBlockingSync" ] = { "hipDeviceScheduleBlockingSync" , CONV_DEV , API_RUNTIME };
2016-12-19 14:38:19 +03:00
// unsupported yet by HIP
2017-02-20 18:28:59 +03:00
cuda2hipRename [ "cudaDeviceScheduleBlockingSync" ] = { "hipDeviceScheduleBlockingSync" , CONV_DEV , API_RUNTIME };
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cudaDeviceScheduleMask" ] = { "hipDeviceScheduleMask" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
2016-08-25 19:36:37 +03:00
cuda2hipRename [ "cudaDeviceMapHost" ] = { "hipDeviceMapHost" , CONV_DEV , API_RUNTIME };
2016-12-19 14:38:19 +03:00
// unsupported yet by HIP
cuda2hipRename [ "cudaDeviceLmemResizeToMax" ] = { "hipDeviceLmemResizeToMax" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDeviceMask" ] = { "hipDeviceMask" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
2016-07-07 18:01:41 +03:00
2016-03-24 14:54:14 +03:00
// Cache config
2017-02-20 21:19:34 +03:00
cuda2hipRename [ "cudaDeviceSetCacheConfig" ] = { "hipDeviceSetCacheConfig" , CONV_CACHE , API_RUNTIME };
2016-06-28 15:33:38 +03:00
// translate deprecated
2017-02-20 21:19:34 +03:00
cuda2hipRename [ "cudaThreadSetCacheConfig" ] = { "hipDeviceSetCacheConfig" , CONV_CACHE , API_RUNTIME };
cuda2hipRename [ "cudaDeviceGetCacheConfig" ] = { "hipDeviceGetCacheConfig" , CONV_CACHE , API_RUNTIME };
2016-06-28 15:33:38 +03:00
// translate deprecated
2017-02-20 21:19:34 +03:00
cuda2hipRename [ "cudaThreadGetCacheConfig" ] = { "hipDeviceGetCacheConfig" , CONV_CACHE , API_RUNTIME };
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaFuncSetCacheConfig" ] = { "hipFuncSetCacheConfig" , CONV_CACHE , API_RUNTIME };
2017-02-20 21:19:34 +03:00
// Execution control
// CUDA function cache configurations
cuda2hipRename [ "cudaFuncCache" ] = { "hipFuncCache_t" , CONV_CACHE , API_RUNTIME };
cuda2hipRename [ "cudaFuncCachePreferNone" ] = { "hipFuncCachePreferNone" , CONV_CACHE , API_RUNTIME };
cuda2hipRename [ "cudaFuncCachePreferShared" ] = { "hipFuncCachePreferShared" , CONV_CACHE , API_RUNTIME };
cuda2hipRename [ "cudaFuncCachePreferL1" ] = { "hipFuncCachePreferL1" , CONV_CACHE , API_RUNTIME };
cuda2hipRename [ "cudaFuncCachePreferEqual" ] = { "hipFuncCachePreferEqual" , CONV_CACHE , API_RUNTIME };
2017-03-03 21:59:05 +03:00
2017-02-20 21:19:34 +03:00
// Execution control functions
// unsupported yet by HIP
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaFuncAttributes" ] = { "hipFuncAttributes" , CONV_EXEC , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaFuncGetAttributes" ] = { "hipFuncGetAttributes" , CONV_EXEC , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaFuncSetSharedMemConfig" ] = { "hipFuncSetSharedMemConfig" , CONV_EXEC , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGetParameterBuffer" ] = { "hipGetParameterBuffer" , CONV_EXEC , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaSetDoubleForDevice" ] = { "hipSetDoubleForDevice" , CONV_EXEC , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaSetDoubleForHost" ] = { "hipSetDoubleForHost" , CONV_EXEC , API_RUNTIME , HIP_UNSUPPORTED };
2017-02-20 21:19:34 +03:00
// Execution Control [deprecated since 7.0]
// unsupported yet by HIP
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaConfigureCall" ] = { "hipConfigureCall" , CONV_EXEC , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaLaunch" ] = { "hipLaunch" , CONV_EXEC , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaSetupArgument" ] = { "hipSetupArgument" , CONV_EXEC , API_RUNTIME , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// Driver/Runtime
2016-09-09 11:10:19 +03:00
cuda2hipRename [ "cudaDriverGetVersion" ] = { "hipDriverGetVersion" , CONV_DRIVER , API_RUNTIME };
2016-12-19 14:38:19 +03:00
// unsupported yet by HIP
cuda2hipRename [ "cudaRuntimeGetVersion" ] = { "hipRuntimeGetVersion" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
2016-03-24 14:54:14 +03:00
2017-01-13 14:59:15 +03:00
// Occupancy
2017-02-17 15:04:15 +03:00
cuda2hipRename [ "cudaOccupancyMaxPotentialBlockSize" ] = { "hipOccupancyMaxPotentialBlockSize" , CONV_OCCUPANCY , API_DRIVER };
2017-01-13 14:59:15 +03:00
// unsupported yet by HIP
cuda2hipRename [ "cudaOccupancyMaxPotentialBlockSizeWithFlags" ] = { "hipOccupancyMaxPotentialBlockSizeWithFlags" , CONV_OCCUPANCY , API_DRIVER , HIP_UNSUPPORTED };
2017-02-17 15:04:15 +03:00
cuda2hipRename [ "cudaOccupancyMaxActiveBlocksPerMultiprocessor" ] = { "hipOccupancyMaxActiveBlocksPerMultiprocessor" , CONV_OCCUPANCY , API_DRIVER };
// unsupported yet by HIP
2017-01-13 14:59:15 +03:00
cuda2hipRename [ "cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags" ] = { "hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags" , CONV_OCCUPANCY , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaOccupancyMaxPotentialBlockSizeVariableSMem" ] = { "hipOccupancyMaxPotentialBlockSizeVariableSMem" , CONV_OCCUPANCY , API_DRIVER , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaOccupancyMaxPotentialBlockSizeVariableSMemWithFlags" ] = { "hipOccupancyMaxPotentialBlockSizeVariableSMemWithFlags" , CONV_OCCUPANCY , API_DRIVER , HIP_UNSUPPORTED };
2016-03-24 14:54:14 +03:00
// Peer2Peer
2017-01-13 14:59:15 +03:00
cuda2hipRename [ "cudaDeviceCanAccessPeer" ] = { "hipDeviceCanAccessPeer" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDeviceDisablePeerAccess" ] = { "hipDeviceDisablePeerAccess" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDeviceEnablePeerAccess" ] = { "hipDeviceEnablePeerAccess" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaMemcpyPeerAsync" ] = { "hipMemcpyPeerAsync" , CONV_MEM , API_RUNTIME };
cuda2hipRename [ "cudaMemcpyPeer" ] = { "hipMemcpyPeer" , CONV_MEM , API_RUNTIME };
2017-02-16 20:24:53 +03:00
cuda2hipRename [ "cudaIpcMemLazyEnablePeerAccess" ] = { "hipIpcMemLazyEnablePeerAccess" , CONV_ERR , API_RUNTIME };
2016-06-28 15:33:38 +03:00
// Shared memory
2016-08-25 19:36:37 +03:00
cuda2hipRename [ "cudaDeviceSetSharedMemConfig" ] = { "hipDeviceSetSharedMemConfig" , CONV_DEV , API_RUNTIME };
2016-06-28 15:33:38 +03:00
// translate deprecated
2016-08-25 19:36:37 +03:00
cuda2hipRename [ "cudaThreadSetSharedMemConfig" ] = { "hipDeviceSetSharedMemConfig" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaDeviceGetSharedMemConfig" ] = { "hipDeviceGetSharedMemConfig" , CONV_DEV , API_RUNTIME };
2016-06-28 15:33:38 +03:00
// translate deprecated
2016-08-25 19:36:37 +03:00
cuda2hipRename [ "cudaThreadGetSharedMemConfig" ] = { "hipDeviceGetSharedMemConfig" , CONV_DEV , API_RUNTIME };
2017-03-03 21:59:05 +03:00
2016-08-25 19:36:37 +03:00
cuda2hipRename [ "cudaSharedMemConfig" ] = { "hipSharedMemConfig" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaSharedMemBankSizeDefault" ] = { "hipSharedMemBankSizeDefault" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaSharedMemBankSizeFourByte" ] = { "hipSharedMemBankSizeFourByte" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaSharedMemBankSizeEightByte" ] = { "hipSharedMemBankSizeEightByte" , CONV_DEV , API_RUNTIME };
2016-03-24 14:54:14 +03:00
2016-10-13 23:32:52 +03:00
// Limits
cuda2hipRename [ "cudaLimit" ] = { "hipLimit_t" , CONV_DEV , API_RUNTIME };
2016-12-19 14:38:19 +03:00
// unsupported yet by HIP
cuda2hipRename [ "cudaLimitStackSize" ] = { "hipLimitStackSize" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaLimitPrintfFifoSize" ] = { "hipLimitPrintfFifoSize" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
2016-10-13 23:32:52 +03:00
cuda2hipRename [ "cudaLimitMallocHeapSize" ] = { "hipLimitMallocHeapSize" , CONV_DEV , API_RUNTIME };
2016-12-19 14:38:19 +03:00
// unsupported yet by HIP
cuda2hipRename [ "cudaLimitDevRuntimeSyncDepth" ] = { "hipLimitPrintfFifoSize" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaLimitDevRuntimePendingLaunchCount" ] = { "hipLimitMallocHeapSize" , CONV_DEV , API_RUNTIME , HIP_UNSUPPORTED };
2016-10-13 23:32:52 +03:00
cuda2hipRename [ "cudaDeviceGetLimit" ] = { "hipDeviceGetLimit" , CONV_DEV , API_RUNTIME };
2016-03-24 14:54:14 +03:00
// Profiler
2016-12-19 14:38:19 +03:00
// unsupported yet by HIP
2017-02-16 21:10:10 +03:00
cuda2hipRename [ "cudaProfilerInitialize" ] = { "hipProfilerInitialize" , CONV_OTHER , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaProfilerStart" ] = { "hipProfilerStart" , CONV_OTHER , API_RUNTIME };
cuda2hipRename [ "cudaProfilerStop" ] = { "hipProfilerStop" , CONV_OTHER , API_RUNTIME };
2017-03-03 21:59:05 +03:00
// unsupported yet by HIP
cuda2hipRename [ "cudaOutputMode" ] = { "hipOutputMode" , CONV_OTHER , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaKeyValuePair" ] = { "hipKeyValuePair" , CONV_OTHER , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaCSV" ] = { "hipCSV" , CONV_OTHER , API_RUNTIME , HIP_UNSUPPORTED };
2017-02-16 21:10:10 +03:00
2017-02-20 21:19:34 +03:00
// Texture Reference Management
2017-03-03 21:59:05 +03:00
// enums
2017-02-20 18:28:59 +03:00
cuda2hipRename [ "cudaTextureReadMode" ] = { "hipTextureReadMode" , CONV_TEX , API_RUNTIME };
cuda2hipRename [ "cudaReadModeElementType" ] = { "hipReadModeElementType" , CONV_TEX , API_RUNTIME };
// unsupported yet by HIP
cuda2hipRename [ "cudaReadModeNormalizedFloat" ] = { "hipReadModeNormalizedFloat" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
2017-03-03 21:59:05 +03:00
2017-02-20 18:28:59 +03:00
cuda2hipRename [ "cudaTextureFilterMode" ] = { "hipTextureFilterMode" , CONV_TEX , API_RUNTIME };
cuda2hipRename [ "cudaFilterModePoint" ] = { "hipFilterModePoint" , CONV_TEX , API_RUNTIME };
// unsupported yet by HIP
cuda2hipRename [ "cudaFilterModeLinear" ] = { "hipFilterModeLinear" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
2017-03-03 21:59:05 +03:00
2017-02-16 21:10:10 +03:00
cuda2hipRename [ "cudaBindTexture" ] = { "hipBindTexture" , CONV_TEX , API_RUNTIME };
cuda2hipRename [ "cudaUnbindTexture" ] = { "hipUnbindTexture" , CONV_TEX , API_RUNTIME };
2017-02-20 21:19:34 +03:00
// unsupported yet by HIP
cuda2hipRename [ "cudaBindTexture2D" ] = { "hipBindTexture2D" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaBindTextureToArray" ] = { "hipBindTextureToArray" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaBindTextureToMipmappedArray" ] = { "hipBindTextureToMipmappedArray" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGetTextureAlignmentOffset" ] = { "hipGetTextureAlignmentOffset" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGetTextureReference" ] = { "hipGetTextureReference" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
2017-02-16 21:10:10 +03:00
// Channel
cuda2hipRename [ "cudaChannelFormatKind" ] = { "hipChannelFormatKind" , CONV_TEX , API_RUNTIME };
cuda2hipRename [ "cudaChannelFormatKindSigned" ] = { "hipChannelFormatKindSigned" , CONV_TEX , API_RUNTIME };
cuda2hipRename [ "cudaChannelFormatKindUnsigned" ] = { "hipChannelFormatKindUnsigned" , CONV_TEX , API_RUNTIME };
cuda2hipRename [ "cudaChannelFormatKindFloat" ] = { "hipChannelFormatKindFloat" , CONV_TEX , API_RUNTIME };
cuda2hipRename [ "cudaChannelFormatKindNone" ] = { "hipChannelFormatKindNone" , CONV_TEX , API_RUNTIME };
cuda2hipRename [ "cudaChannelFormatDesc" ] = { "hipChannelFormatDesc" , CONV_TEX , API_RUNTIME };
cuda2hipRename [ "cudaCreateChannelDesc" ] = { "hipCreateChannelDesc" , CONV_TEX , API_RUNTIME };
2017-02-20 21:19:34 +03:00
// unsupported yet by HIP
cuda2hipRename [ "cudaGetChannelDesc" ] = { "hipGetChannelDesc" , CONV_TEX , API_RUNTIME };
// Texture Object Management
2017-03-03 21:59:05 +03:00
// structs
2017-02-20 21:19:34 +03:00
// unsupported yet by HIP
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaResourceDesc" ] = { "hipResourceDesc" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResourceViewDesc" ] = { "hipResourceViewDesc" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaTextureDesc" ] = { "hipTextureDesc" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
// enums
// unsupported yet by HIP
cuda2hipRename [ "cudaResourceType" ] = { "hipResourceType" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResourceTypeArray" ] = { "hipResourceTypeArray" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResourceTypeMipmappedArray" ] = { "hipResourceTypeMipmappedArray" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResourceTypeLinear" ] = { "hipResourceTypeLinear" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResourceTypePitch2D" ] = { "hipResourceTypePitch2D" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResourceViewFormat" ] = { "hipResourceViewFormat" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatNone" ] = { "hipResViewFormatNone" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatUnsignedChar1" ] = { "hipResViewFormatUnsignedChar1" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatUnsignedChar2" ] = { "hipResViewFormatUnsignedChar2" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatUnsignedChar4" ] = { "hipResViewFormatUnsignedChar4" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatSignedChar1" ] = { "hipResViewFormatSignedChar1" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatSignedChar2" ] = { "hipResViewFormatSignedChar2" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatSignedChar4" ] = { "hipResViewFormatSignedChar4" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatUnsignedShort1" ] = { "hipResViewFormatUnsignedShort1" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatUnsignedShort2" ] = { "hipResViewFormatUnsignedShort2" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatUnsignedShort4" ] = { "hipResViewFormatUnsignedShort4" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatSignedShort1" ] = { "hipResViewFormatSignedShort1" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatSignedShort2" ] = { "hipResViewFormatSignedShort2" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatSignedShort4" ] = { "hipResViewFormatSignedShort4" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatUnsignedInt1" ] = { "hipResViewFormatUnsignedInt1" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatUnsignedInt2" ] = { "hipResViewFormatUnsignedInt2" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatUnsignedInt4" ] = { "hipResViewFormatUnsignedInt4" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatSignedInt1" ] = { "hipResViewFormatSignedInt1" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatSignedInt2" ] = { "hipResViewFormatSignedInt2" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatSignedInt4" ] = { "hipResViewFormatSignedInt4" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatHalf1" ] = { "hipResViewFormatHalf1" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatHalf2" ] = { "hipResViewFormatHalf2" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatHalf4" ] = { "hipResViewFormatHalf4" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatFloat1" ] = { "hipResViewFormatFloat1" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatFloat2" ] = { "hipResViewFormatFloat2" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatFloat4" ] = { "hipResViewFormatFloat4" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatUnsignedBlockCompressed1" ] = { "hipResViewFormatUnsignedBlockCompressed1" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatUnsignedBlockCompressed2" ] = { "hipResViewFormatUnsignedBlockCompressed2" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatUnsignedBlockCompressed3" ] = { "hipResViewFormatUnsignedBlockCompressed3" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatUnsignedBlockCompressed4" ] = { "hipResViewFormatUnsignedBlockCompressed4" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatSignedBlockCompressed4" ] = { "hipResViewFormatSignedBlockCompressed4" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatUnsignedBlockCompressed5" ] = { "hipResViewFormatUnsignedBlockCompressed5" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatSignedBlockCompressed5" ] = { "hipResViewFormatSignedBlockCompressed5" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatSignedBlockCompressed6H" ] = { "hipResViewFormatSignedBlockCompressed6H" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaResViewFormatUnsignedBlockCompressed7" ] = { "hipResViewFormatUnsignedBlockCompressed7" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaTextureAddressMode" ] = { "hipTextureAddressMode" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaAddressModeWrap" ] = { "hipAddressModeWrap" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaAddressModeClamp" ] = { "hipAddressModeClamp" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaAddressModeMirror" ] = { "hipAddressModeMirror" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaAddressModeBorder" ] = { "hipAddressModeBorder" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
// functions
cuda2hipRename [ "cudaCreateTextureObject" ] = { "hipCreateTextureObject" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDestroyTextureObject" ] = { "hipDestroyTextureObject" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGetTextureObjectResourceDesc" ] = { "hipGetTextureObjectResourceDesc" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGetTextureObjectResourceViewDesc" ] = { "hipGetTextureObjectResourceViewDesc" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGetTextureObjectTextureDesc" ] = { "hipGetTextureObjectTextureDesc" , CONV_TEX , API_RUNTIME , HIP_UNSUPPORTED };
2017-02-20 21:19:34 +03:00
// Surface Reference Management
// unsupported yet by HIP
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaBindSurfaceToArray" ] = { "hipBindSurfaceToArray" , CONV_SURFACE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGetSurfaceReference" ] = { "hipGetSurfaceReference" , CONV_SURFACE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaSurfaceBoundaryMode" ] = { "hipSurfaceBoundaryMode" , CONV_SURFACE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaBoundaryModeZero" ] = { "hipBoundaryModeZero" , CONV_SURFACE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaBoundaryModeClamp" ] = { "hipBoundaryModeClamp" , CONV_SURFACE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaBoundaryModeTrap" ] = { "hipBoundaryModeTrap" , CONV_SURFACE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaSurfaceFormatMode" ] = { "hipSurfaceFormatMode" , CONV_SURFACE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaFormatModeForced" ] = { "hipFormatModeForced" , CONV_SURFACE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaFormatModeAuto" ] = { "hipFormatModeAuto" , CONV_SURFACE , API_RUNTIME , HIP_UNSUPPORTED };
2017-02-20 21:19:34 +03:00
// Surface Object Management
// unsupported yet by HIP
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaCreateSurfaceObject" ] = { "hipCreateSurfaceObject" , CONV_SURFACE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaDestroySurfaceObject" ] = { "hipDestroySurfaceObject" , CONV_SURFACE , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGetSurfaceObjectResourceDesc" ] = { "hipGetSurfaceObjectResourceDesc" , CONV_SURFACE , API_RUNTIME , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
2017-02-16 20:24:53 +03:00
// Inter-Process Communications (IPC)
// IPC types
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaIpcEventHandle_t" ] = { "hipIpcEventHandle_t" , CONV_TYPE , API_RUNTIME };
cuda2hipRename [ "cudaIpcEventHandle_st" ] = { "hipIpcEventHandle_t" , CONV_TYPE , API_RUNTIME };
cuda2hipRename [ "cudaIpcMemHandle_t" ] = { "hipIpcMemHandle_t" , CONV_TYPE , API_RUNTIME };
cuda2hipRename [ "cudaIpcMemHandle_st" ] = { "hipIpcMemHandle_t" , CONV_TYPE , API_RUNTIME };
2017-02-16 20:24:53 +03:00
// IPC functions
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaIpcCloseMemHandle" ] = { "hipIpcCloseMemHandle" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaIpcGetEventHandle" ] = { "hipIpcGetEventHandle" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaIpcGetMemHandle" ] = { "hipIpcGetMemHandle" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaIpcOpenEventHandle" ] = { "hipIpcOpenEventHandle" , CONV_DEV , API_RUNTIME };
cuda2hipRename [ "cudaIpcOpenMemHandle" ] = { "hipIpcOpenMemHandle" , CONV_DEV , API_RUNTIME };
2017-02-16 20:24:53 +03:00
2017-02-20 21:19:34 +03:00
// OpenGL Interoperability
// unsupported yet by HIP
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaGLGetDevices" ] = { "hipGLGetDevices" , CONV_GL , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsGLRegisterBuffer" ] = { "hipGraphicsGLRegisterBuffer" , CONV_GL , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsGLRegisterImage" ] = { "hipGraphicsGLRegisterImage" , CONV_GL , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaWGLGetDevice" ] = { "hipWGLGetDevice" , CONV_GL , API_RUNTIME , HIP_UNSUPPORTED };
2017-02-20 21:19:34 +03:00
// Graphics Interoperability
// unsupported yet by HIP
cuda2hipRename [ "cudaGraphicsMapResources" ] = { "hipGraphicsMapResources" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsResourceGetMappedMipmappedArray" ] = { "hipGraphicsResourceGetMappedMipmappedArray" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsResourceGetMappedPointer" ] = { "hipGraphicsResourceGetMappedPointer" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsResourceSetMapFlags" ] = { "hipGraphicsResourceSetMapFlags" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsSubResourceGetMappedArray" ] = { "hipGraphicsSubResourceGetMappedArray" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsUnmapResources" ] = { "hipGraphicsUnmapResources" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsUnregisterResource" ] = { "hipGraphicsUnregisterResource" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
2017-03-03 21:59:05 +03:00
cuda2hipRename [ "cudaGraphicsCubeFace" ] = { "hipGraphicsCubeFace" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsCubeFacePositiveX" ] = { "hipGraphicsCubeFacePositiveX" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsCubeFaceNegativeX" ] = { "hipGraphicsCubeFaceNegativeX" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsCubeFacePositiveY" ] = { "hipGraphicsCubeFacePositiveY" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsCubeFaceNegativeY" ] = { "hipGraphicsCubeFaceNegativeY" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsCubeFacePositiveZ" ] = { "hipGraphicsCubeFacePositiveZ" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsCubeFaceNegativeZ" ] = { "hipGraphicsCubeFaceNegativeZ" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsMapFlags" ] = { "hipGraphicsMapFlags" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsMapFlagsNone" ] = { "hipGraphicsMapFlagsNone" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsMapFlagsReadOnly" ] = { "hipGraphicsMapFlagsReadOnly" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsMapFlagsWriteDiscard" ] = { "hipGraphicsMapFlagsWriteDiscard" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsRegisterFlags" ] = { "hipGraphicsRegisterFlags" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsRegisterFlagsNone" ] = { "hipGraphicsRegisterFlagsNone" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsRegisterFlagsReadOnly" ] = { "hipGraphicsRegisterFlagsReadOnly" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsRegisterFlagsWriteDiscard" ] = { "hipGraphicsRegisterFlagsWriteDiscard" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsRegisterFlagsSurfaceLoadStore" ] = { "hipGraphicsRegisterFlagsSurfaceLoadStore" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
cuda2hipRename [ "cudaGraphicsRegisterFlagsTextureGather" ] = { "hipGraphicsRegisterFlagsTextureGather" , CONV_GRAPHICS , API_RUNTIME , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
//---------------------------------------BLAS-------------------------------------//
// Blas types
2016-08-25 19:36:37 +03:00
cuda2hipRename [ "cublasHandle_t" ] = { "hipblasHandle_t" , CONV_TYPE , API_BLAS };
2016-12-21 23:08:01 +03:00
// TODO: dereferencing: typedef struct cublasContext *cublasHandle_t;
cuda2hipRename [ "cublasContext" ] = { "hipblasHandle_t" , CONV_TYPE , API_BLAS };
2016-12-28 18:08:10 +03:00
// Blas management functions
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasInit" ] = { "hipblasInit" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasShutdown" ] = { "hipblasShutdown" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasGetVersion" ] = { "hipblasGetVersion" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasGetError" ] = { "hipblasGetError" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasAlloc" ] = { "hipblasAlloc" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasFree" ] = { "hipblasFree" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasSetKernelStream" ] = { "hipblasSetKernelStream" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasGetAtomicsMode" ] = { "hipblasGetAtomicsMode" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasSetAtomicsMode" ] = { "hipblasSetAtomicsMode" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// Blas operations
2016-08-25 19:36:37 +03:00
cuda2hipRename [ "cublasOperation_t" ] = { "hipblasOperation_t" , CONV_TYPE , API_BLAS };
cuda2hipRename [ "CUBLAS_OP_N" ] = { "HIPBLAS_OP_N" , CONV_NUMERIC_LITERAL , API_BLAS };
cuda2hipRename [ "CUBLAS_OP_T" ] = { "HIPBLAS_OP_T" , CONV_NUMERIC_LITERAL , API_BLAS };
cuda2hipRename [ "CUBLAS_OP_C" ] = { "HIPBLAS_OP_C" , CONV_NUMERIC_LITERAL , API_BLAS };
2016-06-28 15:33:38 +03:00
// Blas statuses
2016-08-25 19:36:37 +03:00
cuda2hipRename [ "cublasStatus_t" ] = { "hipblasStatus_t" , CONV_TYPE , API_BLAS };
cuda2hipRename [ "CUBLAS_STATUS_SUCCESS" ] = { "HIPBLAS_STATUS_SUCCESS" , CONV_NUMERIC_LITERAL , API_BLAS };
cuda2hipRename [ "CUBLAS_STATUS_NOT_INITIALIZED" ] = { "HIPBLAS_STATUS_NOT_INITIALIZED" , CONV_NUMERIC_LITERAL , API_BLAS };
cuda2hipRename [ "CUBLAS_STATUS_ALLOC_FAILED" ] = { "HIPBLAS_STATUS_ALLOC_FAILED" , CONV_NUMERIC_LITERAL , API_BLAS };
cuda2hipRename [ "CUBLAS_STATUS_INVALID_VALUE" ] = { "HIPBLAS_STATUS_INVALID_VALUE" , CONV_NUMERIC_LITERAL , API_BLAS };
cuda2hipRename [ "CUBLAS_STATUS_MAPPING_ERROR" ] = { "HIPBLAS_STATUS_MAPPING_ERROR" , CONV_NUMERIC_LITERAL , API_BLAS };
cuda2hipRename [ "CUBLAS_STATUS_EXECUTION_FAILED" ] = { "HIPBLAS_STATUS_EXECUTION_FAILED" , CONV_NUMERIC_LITERAL , API_BLAS };
cuda2hipRename [ "CUBLAS_STATUS_INTERNAL_ERROR" ] = { "HIPBLAS_STATUS_INTERNAL_ERROR" , CONV_NUMERIC_LITERAL , API_BLAS };
cuda2hipRename [ "CUBLAS_STATUS_NOT_SUPPORTED" ] = { "HIPBLAS_STATUS_INTERNAL_ERROR" , CONV_NUMERIC_LITERAL , API_BLAS };
2016-06-28 15:33:38 +03:00
// Blas Fill Modes
// unsupported yet by hipblas/hcblas
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cublasFillMode_t" ] = { "hipblasFillMode_t" , CONV_TYPE , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "CUBLAS_FILL_MODE_LOWER" ] = { "HIPBLAS_FILL_MODE_LOWER" , CONV_NUMERIC_LITERAL , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "CUBLAS_FILL_MODE_UPPER" ] = { "HIPBLAS_FILL_MODE_UPPER" , CONV_NUMERIC_LITERAL , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// Blas Diag Types
// unsupported yet by hipblas/hcblas
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cublasDiagType_t" ] = { "hipblasDiagType_t" , CONV_TYPE , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "CUBLAS_DIAG_NON_UNIT" ] = { "HIPBLAS_DIAG_NON_UNIT" , CONV_NUMERIC_LITERAL , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "CUBLAS_DIAG_UNIT" ] = { "HIPBLAS_DIAG_UNIT" , CONV_NUMERIC_LITERAL , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// Blas Side Modes
// unsupported yet by hipblas/hcblas
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cublasSideMode_t" ] = { "hipblasSideMode_t" , CONV_TYPE , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "CUBLAS_SIDE_LEFT" ] = { "HIPBLAS_SIDE_LEFT" , CONV_NUMERIC_LITERAL , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "CUBLAS_SIDE_RIGHT" ] = { "HIPBLAS_SIDE_RIGHT" , CONV_NUMERIC_LITERAL , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// Blas Pointer Modes
// unsupported yet by hipblas/hcblas
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cublasPointerMode_t" ] = { "hipblasPointerMode_t" , CONV_TYPE , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "CUBLAS_POINTER_MODE_HOST" ] = { "HIPBLAS_POINTER_MODE_HOST" , CONV_NUMERIC_LITERAL , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "CUBLAS_POINTER_MODE_DEVICE" ] = { "HIPBLAS_POINTER_MODE_DEVICE" , CONV_NUMERIC_LITERAL , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// Blas Atomics Modes
// unsupported yet by hipblas/hcblas
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cublasAtomicsMode_t" ] = { "hipblasAtomicsMode_t" , CONV_TYPE , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "CUBLAS_ATOMICS_NOT_ALLOWED" ] = { "HIPBLAS_ATOMICS_NOT_ALLOWED" , CONV_NUMERIC_LITERAL , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "CUBLAS_ATOMICS_ALLOWED" ] = { "HIPBLAS_ATOMICS_ALLOWED" , CONV_NUMERIC_LITERAL , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// Blas Data Type
// unsupported yet by hipblas/hcblas
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cublasDataType_t" ] = { "hipblasDataType_t" , CONV_TYPE , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "CUBLAS_DATA_FLOAT" ] = { "HIPBLAS_DATA_FLOAT" , CONV_NUMERIC_LITERAL , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "CUBLAS_DATA_DOUBLE" ] = { "HIPBLAS_DATA_DOUBLE" , CONV_NUMERIC_LITERAL , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "CUBLAS_DATA_HALF" ] = { "HIPBLAS_DATA_HALF" , CONV_NUMERIC_LITERAL , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "CUBLAS_DATA_INT8" ] = { "HIPBLAS_DATA_INT8" , CONV_NUMERIC_LITERAL , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// Blas1 (v1) Routines
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cublasCreate" ] = { "hipblasCreate" , CONV_MATH_FUNC , API_BLAS };
cuda2hipRename [ "cublasDestroy" ] = { "hipblasDestroy" , CONV_MATH_FUNC , API_BLAS };
2016-06-28 15:33:38 +03:00
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cublasSetVector" ] = { "hipblasSetVector" , CONV_MATH_FUNC , API_BLAS };
cuda2hipRename [ "cublasGetVector" ] = { "hipblasGetVector" , CONV_MATH_FUNC , API_BLAS };
cuda2hipRename [ "cublasSetMatrix" ] = { "hipblasSetMatrix" , CONV_MATH_FUNC , API_BLAS };
cuda2hipRename [ "cublasGetMatrix" ] = { "hipblasGetMatrix" , CONV_MATH_FUNC , API_BLAS };
2016-06-28 15:33:38 +03:00
// unsupported yet by hipblas/hcblas
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cublasGetMatrixAsync" ] = { "hipblasGetMatrixAsync" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasSetMatrixAsync" ] = { "hipblasSetMatrixAsync" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// NRM2
2016-12-19 14:38:19 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSnrm2" ] = { "hipblasSnrm2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDnrm2" ] = { "hipblasDnrm2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasScnrm2" ] = { "hipblasScnrm2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDznrm2" ] = { "hipblasDznrm2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// DOT
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cublasSdot" ] = { "hipblasSdot" , CONV_MATH_FUNC , API_BLAS };
2016-06-28 15:33:38 +03:00
// there is no such a function in CUDA
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cublasSdotBatched" ] = { "hipblasSdotBatched" , CONV_MATH_FUNC , API_BLAS };
cuda2hipRename [ "cublasDdot" ] = { "hipblasDdot" , CONV_MATH_FUNC , API_BLAS };
2016-06-28 15:33:38 +03:00
// there is no such a function in CUDA
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cublasDdotBatched" ] = { "hipblasDdotBatched" , CONV_MATH_FUNC , API_BLAS };
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasCdotu" ] = { "hipblasCdotu" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCdotc" ] = { "hipblasCdotc" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZdotu" ] = { "hipblasZdotu" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZdotc" ] = { "hipblasZdotc" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SCAL
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cublasSscal" ] = { "hipblasSscal" , CONV_MATH_FUNC , API_BLAS };
2016-06-28 15:33:38 +03:00
// there is no such a function in CUDA
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cublasSscalBatched" ] = { "hipblasSscalBatched" , CONV_MATH_FUNC , API_BLAS };
cuda2hipRename [ "cublasDscal" ] = { "hipblasDscal" , CONV_MATH_FUNC , API_BLAS };
2016-06-28 15:33:38 +03:00
// there is no such a function in CUDA
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cublasDscalBatched" ] = { "hipblasDscalBatched" , CONV_MATH_FUNC , API_BLAS };
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasCscal" ] = { "hipblasCscal" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCsscal" ] = { "hipblasCsscal" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZscal" ] = { "hipblasZscal" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZdscal" ] = { "hipblasZdscal" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// AXPY
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cublasSaxpy" ] = { "hipblasSaxpy" , CONV_MATH_FUNC , API_BLAS };
2016-06-28 15:33:38 +03:00
// there is no such a function in CUDA
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cublasSaxpyBatched" ] = { "hipblasSaxpyBatched" , CONV_MATH_FUNC , API_BLAS };
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasDaxpy" ] = { "hipblasDaxpy" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCaxpy" ] = { "hipblasCaxpy" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZaxpy" ] = { "hipblasZaxpy" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// COPY
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cublasScopy" ] = { "hipblasScopy" , CONV_MATH_FUNC , API_BLAS };
2016-06-28 15:33:38 +03:00
// there is no such a function in CUDA
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cublasScopyBatched" ] = { "hipblasScopyBatched" , CONV_MATH_FUNC , API_BLAS };
cuda2hipRename [ "cublasDcopy" ] = { "hipblasDcopy" , CONV_MATH_FUNC , API_BLAS };
2016-06-28 15:33:38 +03:00
// there is no such a function in CUDA
2016-12-19 14:38:19 +03:00
cuda2hipRename [ "cublasDcopyBatched" ] = { "hipblasDcopyBatched" , CONV_MATH_FUNC , API_BLAS };
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasCcopy" ] = { "hipblasCcopy" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZcopy" ] = { "hipblasZcopy" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SWAP
2016-12-19 14:38:19 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSswap" ] = { "hipblasSswap" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDswap" ] = { "hipblasDswap" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCswap" ] = { "hipblasCswap" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZswap" ] = { "hipblasZswap" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// AMAX
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasIsamax" ] = { "hipblasIsamax" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasIdamax" ] = { "hipblasIdamax" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasIcamax" ] = { "hipblasIcamax" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasIzamax" ] = { "hipblasIzamax" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// AMIN
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasIsamin" ] = { "hipblasIsamin" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasIdamin" ] = { "hipblasIdamin" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasIcamin" ] = { "hipblasIcamin" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasIzamin" ] = { "hipblasIzamin" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// ASUM
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasSasum" ] = { "hipblasSasum" , CONV_MATH_FUNC , API_BLAS };
2016-06-28 15:33:38 +03:00
// there is no such a function in CUDA
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasSasumBatched" ] = { "hipblasSasumBatched" , CONV_MATH_FUNC , API_BLAS };
cuda2hipRename [ "cublasDasum" ] = { "hipblasDasum" , CONV_MATH_FUNC , API_BLAS };
2016-06-28 15:33:38 +03:00
// there is no such a function in CUDA
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasDasumBatched" ] = { "hipblasDasumBatched" , CONV_MATH_FUNC , API_BLAS };
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasScasum" ] = { "hipblasScasum" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDzasum" ] = { "hipblasDzasum" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// ROT
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSrot" ] = { "hipblasSrot" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDrot" ] = { "hipblasDrot" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCrot" ] = { "hipblasCrot" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCsrot" ] = { "hipblasCsrot" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZrot" ] = { "hipblasZrot" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZdrot" ] = { "hipblasZdrot" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// ROTG
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSrotg" ] = { "hipblasSrotg" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDrotg" ] = { "hipblasDrotg" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCrotg" ] = { "hipblasCrotg" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZrotg" ] = { "hipblasZrotg" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// ROTM
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSrotm" ] = { "hipblasSrotm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDrotm" ] = { "hipblasDrotm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// ROTMG
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSrotmg" ] = { "hipblasSrotmg" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDrotmg" ] = { "hipblasDrotmg" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// GEMV
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasSgemv" ] = { "hipblasSgemv" , CONV_MATH_FUNC , API_BLAS };
2016-06-28 15:33:38 +03:00
// there is no such a function in CUDA
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasSgemvBatched" ] = { "hipblasSgemvBatched" , CONV_MATH_FUNC , API_BLAS };
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasDgemv" ] = { "hipblasDgemv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCgemv" ] = { "hipblasCgemv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZgemv" ] = { "hipblasZgemv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// GBMV
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSgbmv" ] = { "hipblasSgbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDgbmv" ] = { "hipblasDgbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCgbmv" ] = { "hipblasCgbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZgbmv" ] = { "hipblasZgbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// TRMV
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasStrmv" ] = { "hipblasStrmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDtrmv" ] = { "hipblasDtrmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCtrmv" ] = { "hipblasCtrmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZtrmv" ] = { "hipblasZtrmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// TBMV
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasStbmv" ] = { "hipblasStbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDtbmv" ] = { "hipblasDtbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCtbmv" ] = { "hipblasCtbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZtbmv" ] = { "hipblasZtbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// TPMV
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasStpmv" ] = { "hipblasStpmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDtpmv" ] = { "hipblasDtpmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCtpmv" ] = { "hipblasCtpmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZtpmv" ] = { "hipblasZtpmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// TRSV
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasStrsv" ] = { "hipblasStrsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDtrsv" ] = { "hipblasDtrsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCtrsv" ] = { "hipblasCtrsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZtrsv" ] = { "hipblasZtrsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// TPSV
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasStpsv" ] = { "hipblasStpsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDtpsv" ] = { "hipblasDtpsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCtpsv" ] = { "hipblasCtpsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZtpsv" ] = { "hipblasZtpsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// TBSV
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasStbsv" ] = { "hipblasStbsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDtbsv" ] = { "hipblasDtbsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCtbsv" ] = { "hipblasCtbsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZtbsv" ] = { "hipblasZtbsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SYMV/HEMV
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSsymv" ] = { "hipblasSsymv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDsymv" ] = { "hipblasDsymv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCsymv" ] = { "hipblasCsymv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZsymv" ] = { "hipblasZsymv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasChemv" ] = { "hipblasChemv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZhemv" ] = { "hipblasZhemv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SBMV/HBMV
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSsbmv" ] = { "hipblasSsbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDsbmv" ] = { "hpiblasDsbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasChbmv" ] = { "hipblasChbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZhbmv" ] = { "hipblasZhbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SPMV/HPMV
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSspmv" ] = { "hipblasSspmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDspmv" ] = { "hipblasDspmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasChpmv" ] = { "hipblasChpmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZhpmv" ] = { "hipblasZhpmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// GER
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasSger" ] = { "hipblasSger" , CONV_MATH_FUNC , API_BLAS };
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasDger" ] = { "hipblasDger" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCgeru" ] = { "hipblasCgeru" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCgerc" ] = { "hipblasCgerc" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZgeru" ] = { "hipblasZgeru" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZgerc" ] = { "hipblasZgerc" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SYR/HER
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSsyr" ] = { "hipblasSsyr" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDsyr" ] = { "hipblasDsyr" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCher" ] = { "hipblasCher" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZher" ] = { "hipblasZher" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SPR/HPR
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSspr" ] = { "hipblasSspr" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDspr" ] = { "hipblasDspr" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasChpr" ] = { "hipblasChpr" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZhpr" ] = { "hipblasZhpr" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SYR2/HER2
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSsyr2" ] = { "hipblasSsyr2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDsyr2" ] = { "hipblasDsyr2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCher2" ] = { "hipblasCher2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZher2" ] = { "hipblasZher2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SPR2/HPR2
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSspr2" ] = { "hipblasSspr2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDspr2" ] = { "hipblasDspr2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasChpr2" ] = { "hipblasChpr2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZhpr2" ] = { "hipblasZhpr2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// Blas3 (v1) Routines
// GEMM
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasSgemm" ] = { "hipblasSgemm" , CONV_MATH_FUNC , API_BLAS };
2016-12-19 14:38:19 +03:00
// unsupported yet by hipblas/hcblas
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasDgemm" ] = { "hipblasDgemm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-12-19 14:38:19 +03:00
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasCgemm" ] = { "hipblasCgemm" , CONV_MATH_FUNC , API_BLAS };
2016-12-19 14:38:19 +03:00
// unsupported yet by hipblas/hcblas
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasZgemm" ] = { "hipblasZgemm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// BATCH GEMM
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasSgemmBatched" ] = { "hipblasSgemmBatched" , CONV_MATH_FUNC , API_BLAS };
2016-12-19 14:38:19 +03:00
// unsupported yet by hipblas/hcblas
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasDgemmBatched" ] = { "hipblasDgemmBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-12-19 14:38:19 +03:00
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasCgemmBatched" ] = { "hipblasCgemmBatched" , CONV_MATH_FUNC , API_BLAS };
2016-12-19 14:38:19 +03:00
// unsupported yet by hipblas/hcblas
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasZgemmBatched" ] = { "hipblasZgemmBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SYRK
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSsyrk" ] = { "hipblasSsyrk" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDsyrk" ] = { "hipblasDsyrk" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCsyrk" ] = { "hipblasCsyrk" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZsyrk" ] = { "hipblasZsyrk" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// HERK
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasCherk" ] = { "hipblasCherk" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZherk" ] = { "hipblasZherk" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SYR2K
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSsyr2k" ] = { "hipblasSsyr2k" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDsyr2k" ] = { "hipblasDsyr2k" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCsyr2k" ] = { "hipblasCsyr2k" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZsyr2k" ] = { "hipblasZsyr2k" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SYRKX - eXtended SYRK
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSsyrkx" ] = { "hipblasSsyrkx" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDsyrkx" ] = { "hipblasDsyrkx" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCsyrkx" ] = { "hipblasCsyrkx" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZsyrkx" ] = { "hipblasZsyrkx" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// HER2K
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasCher2k" ] = { "hipblasCher2k" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZher2k" ] = { "hipblasZher2k" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// HERKX - eXtended HERK
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasCherkx" ] = { "hipblasCherkx" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZherkx" ] = { "hipblasZherkx" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SYMM
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSsymm" ] = { "hipblasSsymm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDsymm" ] = { "hipblasDsymm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCsymm" ] = { "hipblasCsymm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZsymm" ] = { "hipblasZsymm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// HEMM
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasChemm" ] = { "hipblasChemm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZhemm" ] = { "hipblasZhemm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// TRSM
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasStrsm" ] = { "hipblasStrsm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDtrsm" ] = { "hipblasDtrsm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCtrsm" ] = { "hipblasCtrsm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZtrsm" ] = { "hipblasZtrsm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// TRSM - Batched Triangular Solver
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasStrsmBatched" ] = { "hipblasStrsmBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDtrsmBatched" ] = { "hipblasDtrsmBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCtrsmBatched" ] = { "hipblasCtrsmBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZtrsmBatched" ] = { "hipblasZtrsmBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// TRMM
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasStrmm" ] = { "hipblasStrmm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDtrmm" ] = { "hipblasDtrmm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCtrmm" ] = { "hipblasCtrmm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZtrmm" ] = { "hipblasZtrmm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
2016-12-21 23:08:01 +03:00
// ------------------------ CUBLAS BLAS - like extension (cublas_api.h)
2016-06-28 15:33:38 +03:00
// GEAM
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSgeam" ] = { "hipblasSgeam" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDgeam" ] = { "hipblasDgeam" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCgeam" ] = { "hipblasCgeam" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZgeam" ] = { "hipblasZgeam" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// GETRF - Batched LU
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSgetrfBatched" ] = { "hipblasSgetrfBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDgetrfBatched" ] = { "hipblasDgetrfBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCgetrfBatched" ] = { "hipblasCgetrfBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZgetrfBatched" ] = { "hipblasZgetrfBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// Batched inversion based on LU factorization from getrf
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSgetriBatched" ] = { "hipblasSgetriBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDgetriBatched" ] = { "hipblasDgetriBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCgetriBatched" ] = { "hipblasCgetriBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZgetriBatched" ] = { "hipblasZgetriBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// Batched solver based on LU factorization from getrf
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSgetrsBatched" ] = { "hipblasSgetrsBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDgetrsBatched" ] = { "hipblasDgetrsBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCgetrsBatched" ] = { "hipblasCgetrsBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZgetrsBatched" ] = { "hipblasZgetrsBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// TRSM - Batched Triangular Solver
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasStrsmBatched" ] = { "hipblasStrsmBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDtrsmBatched" ] = { "hipblasDtrsmBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCtrsmBatched" ] = { "hipblasCtrsmBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZtrsmBatched" ] = { "hipblasZtrsmBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// MATINV - Batched
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSmatinvBatched" ] = { "hipblasSmatinvBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDmatinvBatched" ] = { "hipblasDmatinvBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCmatinvBatched" ] = { "hipblasCmatinvBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZmatinvBatched" ] = { "hipblasZmatinvBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// Batch QR Factorization
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSgeqrfBatched" ] = { "hipblasSgeqrfBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDgeqrfBatched" ] = { "hipblasDgeqrfBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCgeqrfBatched" ] = { "hipblasCgeqrfBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZgeqrfBatched" ] = { "hipblasZgeqrfBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// Least Square Min only m >= n and Non-transpose supported
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSgelsBatched" ] = { "hipblasSgelsBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDgelsBatched" ] = { "hipblasDgelsBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCgelsBatched" ] = { "hipblasCgelsBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZgelsBatched" ] = { "hipblasZgelsBatched" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// DGMM
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSdgmm" ] = { "hipblasSdgmm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDdgmm" ] = { "hipblasDdgmm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCdgmm" ] = { "hipblasCdgmm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZdgmm" ] = { "hipblasZdgmm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// TPTTR - Triangular Pack format to Triangular format
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasStpttr" ] = { "hipblasStpttr" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDtpttr" ] = { "hipblasDtpttr" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCtpttr" ] = { "hipblasCtpttr" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZtpttr" ] = { "hipblasZtpttr" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// TRTTP - Triangular format to Triangular Pack format
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasStrttp" ] = { "hipblasStrttp" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDtrttp" ] = { "hipblasDtrttp" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCtrttp" ] = { "hipblasCtrttp" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZtrttp" ] = { "hipblasZtrttp" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// Blas2 (v2) Routines
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasCreate_v2" ] = { "hipblasCreate" , CONV_MATH_FUNC , API_BLAS };
cuda2hipRename [ "cublasDestroy_v2" ] = { "hipblasDestroy" , CONV_MATH_FUNC , API_BLAS };
2016-06-28 15:33:38 +03:00
// unsupported yet by hipblas/hcblas
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasGetVersion_v2" ] = { "hipblasGetVersion" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasSetStream_v2" ] = { "hipblasSetStream" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasGetStream_v2" ] = { "hipblasGetStream" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasGetPointerMode_v2" ] = { "hipblasGetPointerMode" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasSetPointerMode_v2" ] = { "hipblasSetPointerMode" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// GEMV
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasSgemv_v2" ] = { "hipblasSgemv" , CONV_MATH_FUNC , API_BLAS };
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasDgemv_v2" ] = { "hipblasDgemv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCgemv_v2" ] = { "hipblasCgemv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZgemv_v2" ] = { "hipblasZgemv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// GBMV
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSgbmv_v2" ] = { "hipblasSgbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDgbmv_v2" ] = { "hipblasDgbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCgbmv_v2" ] = { "hipblasCgbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZgbmv_v2" ] = { "hipblasZgbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// TRMV
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasStrmv_v2" ] = { "hipblasStrmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDtrmv_v2" ] = { "hipblasDtrmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCtrmv_v2" ] = { "hipblasCtrmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZtrmv_v2" ] = { "hipblasZtrmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// TBMV
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasStbmv_v2" ] = { "hipblasStbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDtbmv_v2" ] = { "hipblasDtbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCtbmv_v2" ] = { "hipblasCtbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZtbmv_v2" ] = { "hipblasZtbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// TPMV
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasStpmv_v2" ] = { "hipblasStpmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDtpmv_v2" ] = { "hipblasDtpmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCtpmv_v2" ] = { "hipblasCtpmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZtpmv_v2" ] = { "hipblasZtpmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// TRSV
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasStrsv_v2" ] = { "hipblasStrsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDtrsv_v2" ] = { "hipblasDtrsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCtrsv_v2" ] = { "hipblasCtrsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZtrsv_v2" ] = { "hipblasZtrsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// TPSV
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasStpsv_v2" ] = { "hipblasStpsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDtpsv_v2" ] = { "hipblasDtpsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCtpsv_v2" ] = { "hipblasCtpsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZtpsv_v2" ] = { "hipblasZtpsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// TBSV
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasStbsv_v2" ] = { "hipblasStbsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDtbsv_v2" ] = { "hipblasDtbsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCtbsv_v2" ] = { "hipblasCtbsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZtbsv_v2" ] = { "hipblasZtbsv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SYMV/HEMV
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSsymv_v2" ] = { "hipblasSsymv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDsymv_v2" ] = { "hipblasDsymv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCsymv_v2" ] = { "hipblasCsymv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZsymv_v2" ] = { "hipblasZsymv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasChemv_v2" ] = { "hipblasChemv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZhemv_v2" ] = { "hipblasZhemv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SBMV/HBMV
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSsbmv_v2" ] = { "hipblasSsbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDsbmv_v2" ] = { "hpiblasDsbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasChbmv_v2" ] = { "hipblasChbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZhbmv_v2" ] = { "hipblasZhbmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SPMV/HPMV
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSspmv_v2" ] = { "hipblasSspmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDspmv_v2" ] = { "hipblasDspmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasChpmv_v2" ] = { "hipblasChpmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZhpmv_v2" ] = { "hipblasZhpmv" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// GER
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasSger_v2" ] = { "hipblasSger" , CONV_MATH_FUNC , API_BLAS };
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasDger_v2" ] = { "hipblasDger" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCgeru_v2" ] = { "hipblasCgeru" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCgerc_v2" ] = { "hipblasCgerc" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZgeru_v2" ] = { "hipblasZgeru" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZgerc_v2" ] = { "hipblasZgerc" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SYR/HER
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSsyr_v2" ] = { "hipblasSsyr" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDsyr_v2" ] = { "hipblasDsyr" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCsyr_v2" ] = { "hipblasCsyr" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZsyr_v2" ] = { "hipblasZsyr" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCher_v2" ] = { "hipblasCher" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZher_v2" ] = { "hipblasZher" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SPR/HPR
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSspr_v2" ] = { "hipblasSspr" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDspr_v2" ] = { "hipblasDspr" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasChpr_v2" ] = { "hipblasChpr" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZhpr_v2" ] = { "hipblasZhpr" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SYR2/HER2
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSsyr2_v2" ] = { "hipblasSsyr2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDsyr2_v2" ] = { "hipblasDsyr2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCsyr2_v2" ] = { "hipblasCsyr2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZsyr2_v2" ] = { "hipblasZsyr2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCher2_v2" ] = { "hipblasCher2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZher2_v2" ] = { "hipblasZher2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SPR2/HPR2
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSspr2_v2" ] = { "hipblasSspr2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDspr2_v2" ] = { "hipblasDspr2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasChpr2_v2" ] = { "hipblasChpr2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZhpr2_v2" ] = { "hipblasZhpr2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// Blas3 (v2) Routines
// GEMM
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasSgemm_v2" ] = { "hipblasSgemm" , CONV_MATH_FUNC , API_BLAS };
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasDgemm_v2" ] = { "hipblasDgemm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCgemm_v2" ] = { "hipblasCgemm" , CONV_MATH_FUNC , API_BLAS };
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasZgemm_v2" ] = { "hipblasZgemm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
//IO in FP16 / FP32, computation in float
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSgemmEx" ] = { "hipblasSgemmEx" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SYRK
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSsyrk_v2" ] = { "hipblasSsyrk" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDsyrk_v2" ] = { "hipblasDsyrk" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCsyrk_v2" ] = { "hipblasCsyrk" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZsyrk_v2" ] = { "hipblasZsyrk" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// HERK
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasCherk_v2" ] = { "hipblasCherk" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZherk_v2" ] = { "hipblasZherk" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SYR2K
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSsyr2k_v2" ] = { "hipblasSsyr2k" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDsyr2k_v2" ] = { "hipblasDsyr2k" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCsyr2k_v2" ] = { "hipblasCsyr2k" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZsyr2k_v2" ] = { "hipblasZsyr2k" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// HER2K
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasCher2k_v2" ] = { "hipblasCher2k" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZher2k_v2" ] = { "hipblasZher2k" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SYMM
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSsymm_v2" ] = { "hipblasSsymm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDsymm_v2" ] = { "hipblasDsymm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCsymm_v2" ] = { "hipblasCsymm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZsymm_v2" ] = { "hipblasZsymm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// HEMM
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasChemm_v2" ] = { "hipblasChemm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZhemm_v2" ] = { "hipblasZhemm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// TRSM
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasStrsm_v2" ] = { "hipblasStrsm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDtrsm_v2" ] = { "hipblasDtrsm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCtrsm_v2" ] = { "hipblasCtrsm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZtrsm_v2" ] = { "hipblasZtrsm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// TRMM
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasStrmm_v2" ] = { "hipblasStrmm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDtrmm_v2" ] = { "hipblasDtrmm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCtrmm_v2" ] = { "hipblasCtrmm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZtrmm_v2" ] = { "hipblasZtrmm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// NRM2
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSnrm2_v2" ] = { "hipblasSnrm2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDnrm2_v2" ] = { "hipblasDnrm2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasScnrm2_v2" ] = { "hipblasScnrm2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDznrm2_v2" ] = { "hipblasDznrm2" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// DOT
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasSdot_v2" ] = { "hipblasSdot" , CONV_MATH_FUNC , API_BLAS };
cuda2hipRename [ "cublasDdot_v2" ] = { "hipblasDdot" , CONV_MATH_FUNC , API_BLAS };
2016-12-19 14:38:19 +03:00
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasCdotu_v2" ] = { "hipblasCdotu" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCdotc_v2" ] = { "hipblasCdotc" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZdotu_v2" ] = { "hipblasZdotu" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZdotc_v2" ] = { "hipblasZdotc" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SCAL
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasSscal_v2" ] = { "hipblasSscal" , CONV_MATH_FUNC , API_BLAS };
cuda2hipRename [ "cublasDscal_v2" ] = { "hipblasDscal" , CONV_MATH_FUNC , API_BLAS };
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasCscal_v2" ] = { "hipblasCscal" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCsscal_v2" ] = { "hipblasCsscal" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZscal_v2" ] = { "hipblasZscal" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZdscal_v2" ] = { "hipblasZdscal" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// AXPY
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasSaxpy_v2" ] = { "hipblasSaxpy" , CONV_MATH_FUNC , API_BLAS };
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasDaxpy_v2" ] = { "hipblasDaxpy" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCaxpy_v2" ] = { "hipblasCaxpy" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZaxpy_v2" ] = { "hipblasZaxpy" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// COPY
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasScopy_v2" ] = { "hipblasScopy" , CONV_MATH_FUNC , API_BLAS };
cuda2hipRename [ "cublasDcopy_v2" ] = { "hipblasDcopy" , CONV_MATH_FUNC , API_BLAS };
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasCcopy_v2" ] = { "hipblasCcopy" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZcopy_v2" ] = { "hipblasZcopy" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// SWAP
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSswap_v2" ] = { "hipblasSswap" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDswap_v2" ] = { "hipblasDswap" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCswap_v2" ] = { "hipblasCswap" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZswap_v2" ] = { "hipblasZswap" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// AMAX
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasIsamax_v2" ] = { "hipblasIsamax" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasIdamax_v2" ] = { "hipblasIdamax" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasIcamax_v2" ] = { "hipblasIcamax" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasIzamax_v2" ] = { "hipblasIzamax" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// AMIN
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasIsamin_v2" ] = { "hipblasIsamin" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasIdamin_v2" ] = { "hipblasIdamin" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasIcamin_v2" ] = { "hipblasIcamin" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasIzamin_v2" ] = { "hipblasIzamin" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// ASUM
2016-12-21 23:08:01 +03:00
cuda2hipRename [ "cublasSasum_v2" ] = { "hipblasSasum" , CONV_MATH_FUNC , API_BLAS };
cuda2hipRename [ "cublasDasum_v2" ] = { "hipblasDasum" , CONV_MATH_FUNC , API_BLAS };
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasScasum_v2" ] = { "hipblasScasum" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDzasum_v2" ] = { "hipblasDzasum" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// ROT
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSrot_v2" ] = { "hipblasSrot" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDrot_v2" ] = { "hipblasDrot" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCrot_v2" ] = { "hipblasCrot" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCsrot_v2" ] = { "hipblasCsrot" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZrot_v2" ] = { "hipblasZrot" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZdrot_v2" ] = { "hipblasZdrot" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// ROTG
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSrotg_v2" ] = { "hipblasSrotg" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDrotg_v2" ] = { "hipblasDrotg" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasCrotg_v2" ] = { "hipblasCrotg" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasZrotg_v2" ] = { "hipblasZrotg" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// ROTM
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSrotm_v2" ] = { "hipblasSrotm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDrotm_v2" ] = { "hipblasDrotm" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-06-28 15:33:38 +03:00
// ROTMG
2016-12-21 23:08:01 +03:00
// unsupported yet by hipblas/hcblas
cuda2hipRename [ "cublasSrotmg_v2" ] = { "hipblasSrotmg" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
cuda2hipRename [ "cublasDrotmg_v2" ] = { "hipblasDrotmg" , CONV_MATH_FUNC , API_BLAS , HIP_UNSUPPORTED };
2016-07-01 19:58:14 +03:00
}
2016-03-24 14:54:14 +03:00
};
2016-03-02 19:58:45 +03:00
2016-03-24 14:54:14 +03:00
StringRef unquoteStr ( StringRef s ) {
if ( s . size () > 1 && s . front () == '"' && s . back () == '"' )
return s . substr ( 1 , s . size () - 2 );
return s ;
}
2016-12-13 18:01:08 +03:00
class Cuda2Hip {
public :
2017-02-14 21:36:49 +03:00
Cuda2Hip ( Replacements * R , const std :: string & srcFileName ) :
Replace ( R ), mainFileName ( srcFileName ) {}
2016-12-21 23:08:01 +03:00
uint64_t countReps [ CONV_LAST ] = { 0 };
uint64_t countApiReps [ API_LAST ] = { 0 };
uint64_t countRepsUnsupported [ CONV_LAST ] = { 0 };
uint64_t countApiRepsUnsupported [ API_LAST ] = { 0 };
std :: map < std :: string , uint64_t > cuda2hipConverted ;
std :: map < std :: string , uint64_t > cuda2hipUnconverted ;
2017-02-10 22:02:41 +03:00
std :: set < unsigned > LOCs ;
2016-12-13 18:01:08 +03:00
2017-02-14 21:36:49 +03:00
enum msgTypes {
HIPIFY_ERROR = 0 ,
HIPIFY_WARNING
};
std :: string getMsgType ( msgTypes type ) {
switch ( type ) {
case HIPIFY_ERROR : return "error" ;
default :
case HIPIFY_WARNING : return "warning" ;
}
}
2016-12-13 18:01:08 +03:00
protected :
struct cuda2hipMap N ;
Replacements * Replace ;
2017-02-14 21:36:49 +03:00
std :: string mainFileName ;
2016-12-13 18:01:08 +03:00
2017-02-10 22:02:41 +03:00
virtual void insertReplacement ( const Replacement & rep , const FullSourceLoc & fullSL ) {
Replace -> insert ( rep );
if ( PrintStats ) {
LOCs . insert ( fullSL . getExpansionLineNumber ());
}
}
2017-02-13 18:13:49 +03:00
void insertHipHeaders ( Cuda2Hip * owner , const SourceManager & SM ) {
if ( owner -> countReps [ CONV_INCLUDE_CUDA_MAIN_H ] == 0 && countReps [ CONV_INCLUDE_CUDA_MAIN_H ] == 0 && Replace -> size () > 0 ) {
std :: string repName = "#include <hip/hip_runtime.h>" ;
hipCounter counter = { repName , CONV_INCLUDE_CUDA_MAIN_H , API_RUNTIME };
updateCounters ( counter , repName );
SourceLocation sl = SM . getLocForStartOfFile ( SM . getMainFileID ());
FullSourceLoc fullSL ( sl , SM );
Replacement Rep ( SM , sl , 0 , repName + " \n " );
insertReplacement ( Rep , fullSL );
}
}
2017-02-10 22:02:41 +03:00
2017-02-14 21:36:49 +03:00
void printHipifyMessage ( const SourceManager & SM , const SourceLocation & sl , const std :: string & message , msgTypes msgType = HIPIFY_WARNING ) {
FullSourceLoc fullSL ( sl , SM );
llvm :: errs () << "[HIPIFY] " << getMsgType ( msgType ) << ": " << mainFileName << ":" << fullSL . getExpansionLineNumber () << ":" << fullSL . getExpansionColumnNumber () << ": " << message << " \n " ;
}
2016-12-21 23:08:01 +03:00
void updateCountersExt ( const hipCounter & counter , const std :: string & cudaName ) {
std :: map < std :: string , uint64_t > * map = & cuda2hipConverted ;
std :: map < std :: string , uint64_t > * mapTotal = & cuda2hipConvertedTotal ;
if ( counter . unsupported ) {
map = & cuda2hipUnconverted ;
mapTotal = & cuda2hipUnconvertedTotal ;
}
auto found = map -> find ( cudaName );
if ( found == map -> end ()) {
map -> insert ( std :: pair < std :: string , uint64_t > ( cudaName , 1 ));
} else {
found -> second ++ ;
}
auto foundT = mapTotal -> find ( cudaName );
if ( foundT == mapTotal -> end ()) {
mapTotal -> insert ( std :: pair < std :: string , uint64_t > ( cudaName , 1 ));
} else {
foundT -> second ++ ;
}
}
virtual void updateCounters ( const hipCounter & counter , const std :: string & cudaName ) {
if ( ! PrintStats ) {
return ;
}
updateCountersExt ( counter , cudaName );
2016-12-19 14:38:19 +03:00
if ( counter . unsupported ) {
countRepsUnsupported [ counter . countType ] ++ ;
countRepsTotalUnsupported [ counter . countType ] ++ ;
countApiRepsUnsupported [ counter . countApiType ] ++ ;
countApiRepsTotalUnsupported [ counter . countApiType ] ++ ;
} else {
countReps [ counter . countType ] ++ ;
countRepsTotal [ counter . countType ] ++ ;
countApiReps [ counter . countApiType ] ++ ;
countApiRepsTotal [ counter . countApiType ] ++ ;
}
2016-12-13 18:01:08 +03:00
}
void processString ( StringRef s , SourceManager & SM , SourceLocation start ) {
size_t begin = 0 ;
while (( begin = s . find ( "cu" , begin )) != StringRef :: npos ) {
const size_t end = s . find_first_of ( " " , begin + 4 );
StringRef name = s . slice ( begin , end );
const auto found = N . cuda2hipRename . find ( name );
if ( found != N . cuda2hipRename . end ()) {
StringRef repName = found -> second . hipName ;
2016-12-21 23:08:01 +03:00
hipCounter counter = { "" , CONV_LITERAL , API_RUNTIME , found -> second . unsupported };
updateCounters ( counter , name . str ());
2016-12-19 14:38:19 +03:00
if ( ! counter . unsupported ) {
SourceLocation sl = start . getLocWithOffset ( begin + 1 );
Replacement Rep ( SM , sl , name . size (), repName );
2017-02-10 22:02:41 +03:00
FullSourceLoc fullSL ( sl , SM );
insertReplacement ( Rep , fullSL );
2016-12-19 14:38:19 +03:00
}
} else {
2017-02-14 21:36:49 +03:00
// std::string msg = "the following reference is not handled: '" + name.str() + "' [string literal].";
// printHipifyMessage(SM, start, msg);
2016-12-13 18:01:08 +03:00
}
if ( end == StringRef :: npos ) {
break ;
}
begin = end + 1 ;
2016-03-02 19:58:45 +03:00
}
}
2016-12-13 18:01:08 +03:00
};
2016-03-02 19:58:45 +03:00
2016-08-18 20:59:51 +03:00
class Cuda2HipCallback ;
2016-12-13 18:01:08 +03:00
class HipifyPPCallbacks : public PPCallbacks , public SourceFileCallbacks , public Cuda2Hip {
2016-08-18 20:59:51 +03:00
public :
2017-02-14 21:36:49 +03:00
HipifyPPCallbacks ( Replacements * R , const std :: string & mainFileName )
: Cuda2Hip ( R , mainFileName ), SeenEnd ( false ), _sm ( nullptr ), _pp ( nullptr ) {}
2016-03-24 14:54:14 +03:00
2016-12-27 19:48:59 +03:00
virtual bool handleBeginSource ( CompilerInstance & CI , StringRef Filename ) override {
2016-03-24 14:54:14 +03:00
Preprocessor & PP = CI . getPreprocessor ();
SourceManager & SM = CI . getSourceManager ();
setSourceManager ( & SM );
PP . addPPCallbacks ( std :: unique_ptr < HipifyPPCallbacks > ( this ));
PP . Retain ();
setPreprocessor ( & PP );
return true ;
}
2016-03-02 19:58:45 +03:00
2016-08-18 20:59:51 +03:00
virtual void handleEndSource () override ;
2016-03-24 14:54:14 +03:00
virtual void InclusionDirective ( SourceLocation hash_loc ,
const Token & include_token ,
StringRef file_name , bool is_angled ,
CharSourceRange filename_range ,
const FileEntry * file , StringRef search_path ,
StringRef relative_path ,
const clang :: Module * imported ) override {
if ( _sm -> isWrittenInMainFile ( hash_loc )) {
if ( is_angled ) {
2016-03-25 18:28:37 +03:00
const auto found = N . cuda2hipRename . find ( file_name );
if ( found != N . cuda2hipRename . end ()) {
2016-12-21 23:08:01 +03:00
updateCounters ( found -> second , file_name . str ());
2016-12-19 14:38:19 +03:00
if ( ! found -> second . unsupported ) {
StringRef repName = found -> second . hipName ;
DEBUG ( dbgs () << "Include file found: " << file_name << " \n "
2016-12-27 19:48:59 +03:00
<< "SourceLocation: "
2016-12-19 14:38:19 +03:00
<< filename_range . getBegin (). printToString ( * _sm ) << " \n "
<< "Will be replaced with " << repName << " \n " );
SourceLocation sl = filename_range . getBegin ();
SourceLocation sle = filename_range . getEnd ();
const char * B = _sm -> getCharacterData ( sl );
const char * E = _sm -> getCharacterData ( sle );
SmallString < 128 > tmpData ;
Replacement Rep ( * _sm , sl , E - B , Twine ( "<" + repName + ">" ). toStringRef ( tmpData ));
2017-02-10 22:02:41 +03:00
FullSourceLoc fullSL ( sl , * _sm );
insertReplacement ( Rep , fullSL );
2016-12-19 14:38:19 +03:00
}
} else {
2016-12-21 23:08:01 +03:00
// llvm::outs() << "[HIPIFY] warning: the following reference is not handled: '" << file_name << "' [inclusion directive].\n";
2016-03-24 14:54:14 +03:00
}
}
2016-03-02 19:58:45 +03:00
}
2016-03-24 14:54:14 +03:00
}
2016-03-02 19:58:45 +03:00
2016-03-24 14:54:14 +03:00
virtual void MacroDefined ( const Token & MacroNameTok ,
const MacroDirective * MD ) override {
if ( _sm -> isWrittenInMainFile ( MD -> getLocation ()) &&
MD -> getKind () == MacroDirective :: MD_Define ) {
for ( auto T : MD -> getMacroInfo () -> tokens ()) {
if ( T . isAnyIdentifier ()) {
StringRef name = T . getIdentifierInfo () -> getName ();
2016-03-25 18:28:37 +03:00
const auto found = N . cuda2hipRename . find ( name );
if ( found != N . cuda2hipRename . end ()) {
2016-12-21 23:08:01 +03:00
updateCounters ( found -> second , name . str ());
2016-12-19 14:38:19 +03:00
if ( ! found -> second . unsupported ) {
StringRef repName = found -> second . hipName ;
SourceLocation sl = T . getLocation ();
2016-12-27 19:48:59 +03:00
DEBUG ( dbgs () << "Identifier " << name << " found in definition of macro "
2016-12-19 14:38:19 +03:00
<< MacroNameTok . getIdentifierInfo () -> getName () << " \n "
<< "will be replaced with: " << repName << " \n "
2016-12-27 19:48:59 +03:00
<< "SourceLocation: " << sl . printToString ( * _sm ) << " \n " );
2016-12-19 14:38:19 +03:00
Replacement Rep ( * _sm , sl , name . size (), repName );
2017-02-10 22:02:41 +03:00
FullSourceLoc fullSL ( sl , * _sm );
insertReplacement ( Rep , fullSL );
2016-12-19 14:38:19 +03:00
}
} else {
2016-12-21 23:08:01 +03:00
// llvm::outs() << "[HIPIFY] warning: the following reference is not handled: '" << name << "' [macro].\n";
2016-03-02 19:58:45 +03:00
}
}
}
}
2016-03-24 14:54:14 +03:00
}
2016-03-02 19:58:45 +03:00
2016-03-24 14:54:14 +03:00
virtual void MacroExpands ( const Token & MacroNameTok ,
const MacroDefinition & MD , SourceRange Range ,
const MacroArgs * Args ) override {
if ( _sm -> isWrittenInMainFile ( MacroNameTok . getLocation ())) {
2016-12-27 19:48:59 +03:00
for ( unsigned int i = 0 ; Args && i < MD . getMacroInfo () -> getNumArgs (); i ++ ) {
std :: vector < Token > toks ;
// Code below is a kind of stolen from 'MacroArgs::getPreExpArgument'
// to workaround the 'const' MacroArgs passed into this hook.
const Token * start = Args -> getUnexpArgument ( i );
size_t len = Args -> getArgLength ( start ) + 1 ;
#if (LLVM_VERSION_MAJOR >= 3) && (LLVM_VERSION_MINOR >= 9)
_pp -> EnterTokenStream ( ArrayRef < Token > ( start , len ), false );
#else
_pp -> EnterTokenStream ( start , len , false , false );
#endif
do {
toks . push_back ( Token ());
Token & tk = toks . back ();
_pp -> Lex ( tk );
} while ( toks . back (). isNot ( tok :: eof ));
_pp -> RemoveTopOfLexerStack ();
// end of stolen code
for ( auto tok : toks ) {
if ( tok . isAnyIdentifier ()) {
StringRef name = tok . getIdentifierInfo () -> getName ();
const auto found = N . cuda2hipRename . find ( name );
if ( found != N . cuda2hipRename . end ()) {
updateCounters ( found -> second , name . str ());
if ( ! found -> second . unsupported ) {
StringRef repName = found -> second . hipName ;
DEBUG ( dbgs () << "Identifier " << name
<< " found as an actual argument in expansion of macro "
<< macroName << " \n "
<< "will be replaced with: " << repName << " \n " );
size_t length = name . size ();
SourceLocation sl = tok . getLocation ();
if ( _sm -> isMacroBodyExpansion ( sl )) {
LangOptions DefaultLangOptions ;
SourceLocation sl_macro = _sm -> getExpansionLoc ( sl );
SourceLocation sl_end = Lexer :: getLocForEndOfToken ( sl_macro , 0 , * _sm , DefaultLangOptions );
length = _sm -> getCharacterData ( sl_end ) - _sm -> getCharacterData ( sl_macro );
name = StringRef ( _sm -> getCharacterData ( sl_macro ), length );
sl = sl_macro ;
}
Replacement Rep ( * _sm , sl , length , repName );
2017-02-10 22:02:41 +03:00
FullSourceLoc fullSL ( sl , * _sm );
insertReplacement ( Rep , fullSL );
2016-12-27 19:48:59 +03:00
}
} else {
// llvm::outs() << "[HIPIFY] warning: the following reference is not handled: '" << name << "' [macro expansion].\n";
}
} else if ( tok . isLiteral ()) {
SourceLocation sl = tok . getLocation ();
if ( _sm -> isMacroBodyExpansion ( sl )) {
LangOptions DefaultLangOptions ;
SourceLocation sl_macro = _sm -> getExpansionLoc ( sl );
SourceLocation sl_end = Lexer :: getLocForEndOfToken ( sl_macro , 0 , * _sm , DefaultLangOptions );
size_t length = _sm -> getCharacterData ( sl_end ) - _sm -> getCharacterData ( sl_macro );
StringRef name = StringRef ( _sm -> getCharacterData ( sl_macro ), length );
2016-07-01 19:58:14 +03:00
const auto found = N . cuda2hipRename . find ( name );
if ( found != N . cuda2hipRename . end ()) {
2016-12-21 23:08:01 +03:00
updateCounters ( found -> second , name . str ());
2016-12-19 14:38:19 +03:00
if ( ! found -> second . unsupported ) {
StringRef repName = found -> second . hipName ;
2016-12-27 19:48:59 +03:00
sl = sl_macro ;
2016-12-19 14:38:19 +03:00
Replacement Rep ( * _sm , sl , length , repName );
2017-02-10 22:02:41 +03:00
FullSourceLoc fullSL ( sl , * _sm );
insertReplacement ( Rep , fullSL );
2016-12-15 21:00:34 +03:00
}
2016-12-21 23:08:01 +03:00
} else {
2016-12-27 19:48:59 +03:00
// llvm::outs() << "[HIPIFY] warning: the following reference is not handled: '" << name << "' [literal macro expansion].\n";
2016-07-01 19:58:14 +03:00
}
2016-12-27 19:48:59 +03:00
} else {
if ( tok . is ( tok :: string_literal )) {
StringRef s ( tok . getLiteralData (), tok . getLength ());
processString ( unquoteStr ( s ), * _sm , tok . getLocation ());
2016-08-11 22:29:55 +03:00
}
2016-03-02 19:58:45 +03:00
}
}
}
2016-12-27 19:48:59 +03:00
}
2016-03-02 19:58:45 +03:00
}
2016-03-24 14:54:14 +03:00
}
2016-03-02 19:58:45 +03:00
2016-03-24 14:54:14 +03:00
void EndOfMainFile () override {}
2016-03-02 19:58:45 +03:00
2016-03-24 14:54:14 +03:00
bool SeenEnd ;
void setSourceManager ( SourceManager * sm ) { _sm = sm ; }
void setPreprocessor ( Preprocessor * pp ) { _pp = pp ; }
2016-08-18 20:59:51 +03:00
void setMatch ( Cuda2HipCallback * match ) { Match = match ; }
2016-03-25 18:28:37 +03:00
2016-03-24 14:54:14 +03:00
private :
SourceManager * _sm ;
Preprocessor * _pp ;
2016-08-18 20:59:51 +03:00
Cuda2HipCallback * Match ;
2016-03-24 14:54:14 +03:00
};
2016-03-02 19:58:45 +03:00
2016-12-13 18:01:08 +03:00
class Cuda2HipCallback : public MatchFinder :: MatchCallback , public Cuda2Hip {
2016-08-24 18:51:36 +03:00
private :
void convertKernelDecl ( const FunctionDecl * kernelDecl , const MatchFinder :: MatchResult & Result ) {
2016-03-24 14:54:14 +03:00
SourceManager * SM = Result . SourceManager ;
LangOptions DefaultLangOptions ;
SmallString < 40 > XStr ;
raw_svector_ostream OS ( XStr );
StringRef initialParamList ;
OS << "hipLaunchParm lp" ;
2016-08-25 19:36:37 +03:00
size_t repLength = OS . str (). size ();
2016-03-24 14:54:14 +03:00
SourceLocation sl = kernelDecl -> getNameInfo (). getEndLoc ();
2016-12-27 19:48:59 +03:00
SourceLocation kernelArgListStart = Lexer :: findLocationAfterToken ( sl , tok :: l_paren , * SM , DefaultLangOptions , true );
2016-03-24 14:54:14 +03:00
DEBUG ( dbgs () << kernelArgListStart . printToString ( * SM ));
if ( kernelDecl -> getNumParams () > 0 ) {
const ParmVarDecl * pvdFirst = kernelDecl -> getParamDecl ( 0 );
2016-08-25 19:36:37 +03:00
const ParmVarDecl * pvdLast = kernelDecl -> getParamDecl ( kernelDecl -> getNumParams () - 1 );
2016-03-24 14:54:14 +03:00
SourceLocation kernelArgListStart ( pvdFirst -> getLocStart ());
SourceLocation kernelArgListEnd ( pvdLast -> getLocEnd ());
2016-08-25 19:36:37 +03:00
SourceLocation stop = Lexer :: getLocForEndOfToken ( kernelArgListEnd , 0 , * SM , DefaultLangOptions );
repLength += SM -> getCharacterData ( stop ) - SM -> getCharacterData ( kernelArgListStart );
initialParamList = StringRef ( SM -> getCharacterData ( kernelArgListStart ), repLength );
2016-03-24 14:54:14 +03:00
OS << ", " << initialParamList ;
}
2016-08-25 19:36:37 +03:00
DEBUG ( dbgs () << "initial paramlist: " << initialParamList << " \n " << "new paramlist: " << OS . str () << " \n " );
Replacement Rep0 ( * ( Result . SourceManager ), kernelArgListStart , repLength , OS . str ());
2017-02-10 22:02:41 +03:00
FullSourceLoc fullSL ( sl , * ( Result . SourceManager ));
insertReplacement ( Rep0 , fullSL );
2016-03-08 02:03:25 +03:00
}
2016-03-04 22:07:41 +03:00
2016-08-24 18:51:36 +03:00
bool cudaCall ( const MatchFinder :: MatchResult & Result ) {
if ( const CallExpr * call = Result . Nodes . getNodeAs < CallExpr > ( "cudaCall" )) {
2016-03-24 14:54:14 +03:00
const FunctionDecl * funcDcl = call -> getDirectCallee ();
2016-03-22 19:48:29 +03:00
StringRef name = funcDcl -> getDeclName (). getAsString ();
2017-02-14 21:36:49 +03:00
SourceManager * SM = Result . SourceManager ;
SourceLocation sl = call -> getLocStart ();
2016-03-25 18:28:37 +03:00
const auto found = N . cuda2hipRename . find ( name );
if ( found != N . cuda2hipRename . end ()) {
2016-12-19 14:38:19 +03:00
if ( ! found -> second . unsupported ) {
StringRef repName = found -> second . hipName ;
size_t length = name . size ();
bool bReplace = true ;
if ( SM -> isMacroArgExpansion ( sl )) {
sl = SM -> getImmediateSpellingLoc ( sl );
} else if ( SM -> isMacroBodyExpansion ( sl )) {
LangOptions DefaultLangOptions ;
SourceLocation sl_macro = SM -> getExpansionLoc ( sl );
SourceLocation sl_end = Lexer :: getLocForEndOfToken ( sl_macro , 0 , * SM , DefaultLangOptions );
length = SM -> getCharacterData ( sl_end ) - SM -> getCharacterData ( sl_macro );
StringRef macroName = StringRef ( SM -> getCharacterData ( sl_macro ), length );
if ( N . cudaExcludes . end () != N . cudaExcludes . find ( macroName )) {
bReplace = false ;
} else {
sl = sl_macro ;
}
2016-07-01 19:58:14 +03:00
}
2016-12-19 14:38:19 +03:00
if ( bReplace ) {
2016-12-21 23:08:01 +03:00
updateCounters ( found -> second , name . str ());
2016-12-19 14:38:19 +03:00
Replacement Rep ( * SM , sl , length , repName );
2017-02-10 22:02:41 +03:00
FullSourceLoc fullSL ( sl , * SM );
insertReplacement ( Rep , fullSL );
2016-12-19 14:38:19 +03:00
}
} else {
2016-12-21 23:08:01 +03:00
updateCounters ( found -> second , name . str ());
2016-06-22 19:15:03 +03:00
}
2016-12-19 14:38:19 +03:00
} else {
2017-02-14 21:36:49 +03:00
std :: string msg = "the following reference is not handled: '" + name . str () + "' [function call]." ;
printHipifyMessage ( * SM , sl , msg );
2016-03-02 19:58:45 +03:00
}
2016-08-24 18:51:36 +03:00
return true ;
2016-03-08 02:03:25 +03:00
}
2016-08-24 18:51:36 +03:00
return false ;
}
2016-03-02 19:58:45 +03:00
2016-08-24 18:51:36 +03:00
bool cudaLaunchKernel ( const MatchFinder :: MatchResult & Result ) {
2016-12-21 23:08:01 +03:00
StringRef refName = "cudaLaunchKernel" ;
if ( const CUDAKernelCallExpr * launchKernel = Result . Nodes . getNodeAs < CUDAKernelCallExpr > ( refName )) {
2016-03-04 22:07:41 +03:00
SmallString < 40 > XStr ;
raw_svector_ostream OS ( XStr );
StringRef calleeName ;
2016-03-24 14:54:14 +03:00
const FunctionDecl * kernelDecl = launchKernel -> getDirectCallee ();
2016-03-04 22:07:41 +03:00
if ( kernelDecl ) {
calleeName = kernelDecl -> getName ();
convertKernelDecl ( kernelDecl , Result );
2016-03-24 14:54:14 +03:00
} else {
const Expr * e = launchKernel -> getCallee ();
if ( const UnresolvedLookupExpr * ule =
2016-08-24 18:51:36 +03:00
dyn_cast < UnresolvedLookupExpr > ( e )) {
2016-03-04 22:07:41 +03:00
calleeName = ule -> getName (). getAsIdentifierInfo () -> getName ();
2016-03-24 14:54:14 +03:00
owner -> addMatcher ( functionTemplateDecl ( hasName ( calleeName ))
2017-01-13 14:59:15 +03:00
. bind ( "unresolvedTemplateName" ), this );
2016-03-02 19:58:45 +03:00
}
2016-03-04 22:07:41 +03:00
}
2016-03-02 19:58:45 +03:00
XStr . clear ();
2016-10-28 20:05:51 +03:00
if ( calleeName . find ( ',' ) != StringRef :: npos ) {
SmallString < 128 > tmpData ;
calleeName = Twine ( "HIP_KERNEL_NAME(" + calleeName + ")" ). toStringRef ( tmpData );
}
OS << "hipLaunchKernel(" << calleeName << "," ;
2016-03-24 14:54:14 +03:00
const CallExpr * config = launchKernel -> getConfig ();
2016-08-24 18:51:36 +03:00
DEBUG ( dbgs () << "Kernel config arguments:" << " \n " );
SourceManager * SM = Result . SourceManager ;
LangOptions DefaultLangOptions ;
2016-03-24 14:54:14 +03:00
for ( unsigned argno = 0 ; argno < config -> getNumArgs (); argno ++ ) {
const Expr * arg = config -> getArg ( argno );
2016-03-02 19:58:45 +03:00
if ( ! isa < CXXDefaultArgExpr > ( arg )) {
2016-08-24 18:51:36 +03:00
const ParmVarDecl * pvd = config -> getDirectCallee () -> getParamDecl ( argno );
2016-03-02 19:58:45 +03:00
SourceLocation sl ( arg -> getLocStart ());
SourceLocation el ( arg -> getLocEnd ());
2016-08-24 18:51:36 +03:00
SourceLocation stop = Lexer :: getLocForEndOfToken ( el , 0 , * SM , DefaultLangOptions );
2016-08-25 19:36:37 +03:00
StringRef outs ( SM -> getCharacterData ( sl ), SM -> getCharacterData ( stop ) - SM -> getCharacterData ( sl ));
DEBUG ( dbgs () << "args[ " << argno << "]" << outs << " <" << pvd -> getType (). getAsString () << "> \n " );
2016-08-24 18:51:36 +03:00
if ( pvd -> getType (). getAsString (). compare ( "dim3" ) == 0 ) {
2016-03-02 19:58:45 +03:00
OS << " dim3(" << outs << ")," ;
2016-08-24 18:51:36 +03:00
} else {
2016-03-02 19:58:45 +03:00
OS << " " << outs << "," ;
2016-08-24 18:51:36 +03:00
}
} else {
2016-03-02 19:58:45 +03:00
OS << " 0," ;
2016-08-24 18:51:36 +03:00
}
2016-03-02 19:58:45 +03:00
}
2016-03-24 14:54:14 +03:00
for ( unsigned argno = 0 ; argno < launchKernel -> getNumArgs (); argno ++ ) {
const Expr * arg = launchKernel -> getArg ( argno );
2016-03-02 19:58:45 +03:00
SourceLocation sl ( arg -> getLocStart ());
SourceLocation el ( arg -> getLocEnd ());
2016-08-25 19:36:37 +03:00
SourceLocation stop = Lexer :: getLocForEndOfToken ( el , 0 , * SM , DefaultLangOptions );
std :: string outs ( SM -> getCharacterData ( sl ), SM -> getCharacterData ( stop ) - SM -> getCharacterData ( sl ));
2016-03-08 02:03:25 +03:00
DEBUG ( dbgs () << outs << " \n " );
2016-03-02 19:58:45 +03:00
OS << " " << outs << "," ;
}
XStr . pop_back ();
OS << ")" ;
2016-08-25 19:36:37 +03:00
size_t length = SM -> getCharacterData ( Lexer :: getLocForEndOfToken (
launchKernel -> getLocEnd (), 0 , * SM , DefaultLangOptions )) -
SM -> getCharacterData ( launchKernel -> getLocStart ());
2016-03-02 19:58:45 +03:00
Replacement Rep ( * SM , launchKernel -> getLocStart (), length , OS . str ());
2017-02-10 22:02:41 +03:00
FullSourceLoc fullSL ( launchKernel -> getLocStart (), * SM );
insertReplacement ( Rep , fullSL );
hipCounter counter = { "hipLaunchKernel" , CONV_KERN , API_RUNTIME };
2016-12-21 23:08:01 +03:00
updateCounters ( counter , refName . str ());
2016-08-24 18:51:36 +03:00
return true ;
2016-03-24 14:54:14 +03:00
}
2016-08-24 18:51:36 +03:00
return false ;
}
2016-03-02 19:58:45 +03:00
2016-08-24 18:51:36 +03:00
bool cudaBuiltin ( const MatchFinder :: MatchResult & Result ) {
if ( const MemberExpr * threadIdx = Result . Nodes . getNodeAs < MemberExpr > ( "cudaBuiltin" )) {
2016-03-24 14:54:14 +03:00
if ( const OpaqueValueExpr * refBase =
2016-08-24 18:51:36 +03:00
dyn_cast < OpaqueValueExpr > ( threadIdx -> getBase ())) {
2016-03-24 14:54:14 +03:00
if ( const DeclRefExpr * declRef =
2016-08-24 18:51:36 +03:00
dyn_cast < DeclRefExpr > ( refBase -> getSourceExpr ())) {
2017-02-14 21:36:49 +03:00
SourceLocation sl = threadIdx -> getLocStart ();
SourceManager * SM = Result . SourceManager ;
2016-03-24 14:54:14 +03:00
StringRef name = declRef -> getDecl () -> getName ();
StringRef memberName = threadIdx -> getMemberDecl () -> getName ();
size_t pos = memberName . find_first_not_of ( "__fetch_builtin_" );
memberName = memberName . slice ( pos , memberName . size ());
SmallString < 128 > tmpData ;
name = Twine ( name + "." + memberName ). toStringRef ( tmpData );
2016-03-25 18:28:37 +03:00
const auto found = N . cuda2hipRename . find ( name );
if ( found != N . cuda2hipRename . end ()) {
2016-12-21 23:08:01 +03:00
updateCounters ( found -> second , name . str ());
2016-12-19 14:38:19 +03:00
if ( ! found -> second . unsupported ) {
StringRef repName = found -> second . hipName ;
Replacement Rep ( * SM , sl , name . size (), repName );
2017-02-10 22:02:41 +03:00
FullSourceLoc fullSL ( sl , * SM );
insertReplacement ( Rep , fullSL );
2016-12-19 14:38:19 +03:00
}
} else {
2017-02-14 21:36:49 +03:00
std :: string msg = "the following reference is not handled: '" + name . str () + "' [builtin]." ;
printHipifyMessage ( * SM , sl , msg );
2016-03-25 18:28:37 +03:00
}
2016-03-02 19:58:45 +03:00
}
2016-03-24 14:54:14 +03:00
}
2016-08-24 18:51:36 +03:00
return true ;
2016-03-24 14:54:14 +03:00
}
2016-08-24 18:51:36 +03:00
return false ;
}
2016-03-02 19:58:45 +03:00
2016-08-24 18:51:36 +03:00
bool cudaEnumConstantRef ( const MatchFinder :: MatchResult & Result ) {
if ( const DeclRefExpr * enumConstantRef = Result . Nodes . getNodeAs < DeclRefExpr > ( "cudaEnumConstantRef" )) {
StringRef name = enumConstantRef -> getDecl () -> getNameAsString ();
2017-02-14 21:36:49 +03:00
SourceLocation sl = enumConstantRef -> getLocStart ();
SourceManager * SM = Result . SourceManager ;
2016-03-25 18:28:37 +03:00
const auto found = N . cuda2hipRename . find ( name );
if ( found != N . cuda2hipRename . end ()) {
2016-12-21 23:08:01 +03:00
updateCounters ( found -> second , name . str ());
2016-12-19 14:38:19 +03:00
if ( ! found -> second . unsupported ) {
StringRef repName = found -> second . hipName ;
Replacement Rep ( * SM , sl , name . size (), repName );
2017-02-10 22:02:41 +03:00
FullSourceLoc fullSL ( sl , * SM );
insertReplacement ( Rep , fullSL );
2016-12-19 14:38:19 +03:00
}
} else {
2017-02-14 21:36:49 +03:00
std :: string msg = "the following reference is not handled: '" + name . str () + "' [enum constant ref]." ;
printHipifyMessage ( * SM , sl , msg );
2016-03-25 18:28:37 +03:00
}
2016-08-24 18:51:36 +03:00
return true ;
2016-03-02 19:58:45 +03:00
}
2016-08-24 18:51:36 +03:00
return false ;
}
2016-03-02 19:58:45 +03:00
2016-08-24 18:51:36 +03:00
bool cudaEnumConstantDecl ( const MatchFinder :: MatchResult & Result ) {
if ( const VarDecl * enumConstantDecl = Result . Nodes . getNodeAs < VarDecl > ( "cudaEnumConstantDecl" )) {
2016-03-24 14:54:14 +03:00
StringRef name =
2016-08-24 18:51:36 +03:00
enumConstantDecl -> getType () -> getAsTagDecl () -> getNameAsString ();
2016-06-22 19:15:03 +03:00
// anonymous typedef enum
if ( name . empty ()) {
2016-08-24 18:51:36 +03:00
QualType QT = enumConstantDecl -> getType (). getUnqualifiedType ();
2016-06-22 19:15:03 +03:00
name = QT . getAsString ();
}
2017-02-14 21:36:49 +03:00
SourceLocation sl = enumConstantDecl -> getLocStart ();
SourceManager * SM = Result . SourceManager ;
2016-03-25 18:28:37 +03:00
const auto found = N . cuda2hipRename . find ( name );
if ( found != N . cuda2hipRename . end ()) {
2016-12-21 23:08:01 +03:00
updateCounters ( found -> second , name . str ());
2016-12-19 14:38:19 +03:00
if ( ! found -> second . unsupported ) {
StringRef repName = found -> second . hipName ;
Replacement Rep ( * SM , sl , name . size (), repName );
2017-02-10 22:02:41 +03:00
FullSourceLoc fullSL ( sl , * SM );
insertReplacement ( Rep , fullSL );
2016-12-19 14:38:19 +03:00
}
} else {
2017-02-14 21:36:49 +03:00
std :: string msg = "the following reference is not handled: '" + name . str () + "' [enum constant decl]." ;
printHipifyMessage ( * SM , sl , msg );
2016-03-25 18:28:37 +03:00
}
2016-08-24 18:51:36 +03:00
return true ;
2016-03-02 19:58:45 +03:00
}
2016-08-24 18:51:36 +03:00
return false ;
}
2016-03-02 19:58:45 +03:00
2016-08-24 18:51:36 +03:00
bool cudaTypedefVar ( const MatchFinder :: MatchResult & Result ) {
if ( const VarDecl * typedefVar = Result . Nodes . getNodeAs < VarDecl > ( "cudaTypedefVar" )) {
QualType QT = typedefVar -> getType ();
2016-06-28 19:57:08 +03:00
if ( QT -> isArrayType ()) {
QT = QT . getTypePtr () -> getAsArrayTypeUnsafe () -> getElementType ();
}
QT = QT . getUnqualifiedType ();
2016-06-22 19:15:03 +03:00
StringRef name = QT . getAsString ();
2017-02-14 21:36:49 +03:00
SourceLocation sl = typedefVar -> getLocStart ();
SourceManager * SM = Result . SourceManager ;
2016-06-22 19:15:03 +03:00
const auto found = N . cuda2hipRename . find ( name );
if ( found != N . cuda2hipRename . end ()) {
2016-12-21 23:08:01 +03:00
updateCounters ( found -> second , name . str ());
2016-12-19 14:38:19 +03:00
if ( ! found -> second . unsupported ) {
StringRef repName = found -> second . hipName ;
Replacement Rep ( * SM , sl , name . size (), repName );
2017-02-10 22:02:41 +03:00
FullSourceLoc fullSL ( sl , * SM );
insertReplacement ( Rep , fullSL );
2016-12-19 14:38:19 +03:00
}
} else {
2017-02-14 21:36:49 +03:00
std :: string msg = "the following reference is not handled: '" + name . str () + "' [typedef var]." ;
printHipifyMessage ( * SM , sl , msg );
2016-06-22 19:15:03 +03:00
}
2016-08-24 18:51:36 +03:00
return true ;
}
return false ;
}
2016-12-26 19:03:50 +03:00
bool cudaTypedefVarPtr ( const MatchFinder :: MatchResult & Result ) {
if ( const VarDecl * typedefVarPtr = Result . Nodes . getNodeAs < VarDecl > ( "cudaTypedefVarPtr" )) {
const Type * t = typedefVarPtr -> getType (). getTypePtrOrNull ();
if ( t ) {
2017-02-14 21:36:49 +03:00
SourceManager * SM = Result . SourceManager ;
TypeLoc TL = typedefVarPtr -> getTypeSourceInfo () -> getTypeLoc ();
SourceLocation sl = TL . getUnqualifiedLoc (). getLocStart ();
2016-12-26 19:03:50 +03:00
QualType QT = t -> getPointeeType ();
QT = QT . getUnqualifiedType ();
StringRef name = QT . getAsString ();
const auto found = N . cuda2hipRename . find ( name );
if ( found != N . cuda2hipRename . end ()) {
updateCounters ( found -> second , name . str ());
if ( ! found -> second . unsupported ) {
StringRef repName = found -> second . hipName ;
Replacement Rep ( * SM , sl , name . size (), repName );
2017-02-10 22:02:41 +03:00
FullSourceLoc fullSL ( sl , * SM );
insertReplacement ( Rep , fullSL );
2016-12-26 19:03:50 +03:00
}
}
else {
2017-02-14 21:36:49 +03:00
std :: string msg = "the following reference is not handled: '" + name . str () + "' [typedef var ptr]." ;
printHipifyMessage ( * SM , sl , msg );
2016-12-26 19:03:50 +03:00
}
}
return true ;
}
return false ;
}
2016-08-24 18:51:36 +03:00
bool cudaStructVar ( const MatchFinder :: MatchResult & Result ) {
if ( const VarDecl * structVar = Result . Nodes . getNodeAs < VarDecl > ( "cudaStructVar" )) {
2017-02-15 19:48:31 +03:00
QualType QT = structVar -> getType ();
// ToDo: find case-studies with types other than Struct.
if ( QT -> isStructureType ()) {
StringRef name = QT . getTypePtr () -> getAsStructureType () -> getDecl () -> getNameAsString ();
TypeLoc TL = structVar -> getTypeSourceInfo () -> getTypeLoc ();
SourceLocation sl = TL . getUnqualifiedLoc (). getLocStart ();
SourceManager * SM = Result . SourceManager ;
const auto found = N . cuda2hipRename . find ( name );
if ( found != N . cuda2hipRename . end ()) {
updateCounters ( found -> second , name . str ());
if ( ! found -> second . unsupported ) {
StringRef repName = found -> second . hipName ;
Replacement Rep ( * SM , sl , name . size (), repName );
FullSourceLoc fullSL ( sl , * SM );
insertReplacement ( Rep , fullSL );
}
}
else {
std :: string msg = "the following reference is not handled: '" + name . str () + "' [struct var]." ;
printHipifyMessage ( * SM , sl , msg );
2016-12-19 14:38:19 +03:00
}
2016-08-24 18:51:36 +03:00
}
return true ;
}
return false ;
}
bool cudaStructVarPtr ( const MatchFinder :: MatchResult & Result ) {
if ( const VarDecl * structVarPtr = Result . Nodes . getNodeAs < VarDecl > ( "cudaStructVarPtr" )) {
const Type * t = structVarPtr -> getType (). getTypePtrOrNull ();
if ( t ) {
2017-02-14 21:36:49 +03:00
TypeLoc TL = structVarPtr -> getTypeSourceInfo () -> getTypeLoc ();
SourceLocation sl = TL . getUnqualifiedLoc (). getLocStart ();
SourceManager * SM = Result . SourceManager ;
2016-08-24 18:51:36 +03:00
StringRef name = t -> getPointeeCXXRecordDecl () -> getName ();
const auto found = N . cuda2hipRename . find ( name );
if ( found != N . cuda2hipRename . end ()) {
2016-12-21 23:08:01 +03:00
updateCounters ( found -> second , name . str ());
2016-12-19 14:38:19 +03:00
if ( ! found -> second . unsupported ) {
StringRef repName = found -> second . hipName ;
Replacement Rep ( * SM , sl , name . size (), repName );
2017-02-10 22:02:41 +03:00
FullSourceLoc fullSL ( sl , * SM );
insertReplacement ( Rep , fullSL );
2016-12-19 14:38:19 +03:00
}
} else {
2017-02-14 21:36:49 +03:00
std :: string msg = "the following reference is not handled: '" + name . str () + "' [struct var ptr]." ;
printHipifyMessage ( * SM , sl , msg );
2016-08-24 18:51:36 +03:00
}
}
return true ;
2016-06-22 19:15:03 +03:00
}
2016-08-24 18:51:36 +03:00
return false ;
}
2016-06-22 19:15:03 +03:00
2016-08-24 18:51:36 +03:00
bool cudaStructSizeOf ( const MatchFinder :: MatchResult & Result ) {
if ( const UnaryExprOrTypeTraitExpr * expr = Result . Nodes . getNodeAs < UnaryExprOrTypeTraitExpr > ( "cudaStructSizeOf" )) {
TypeSourceInfo * typeInfo = expr -> getArgumentTypeInfo ();
2017-02-14 21:36:49 +03:00
TypeLoc TL = typeInfo -> getTypeLoc ();
SourceLocation sl = TL . getUnqualifiedLoc (). getLocStart ();
SourceManager * SM = Result . SourceManager ;
2016-08-24 18:51:36 +03:00
QualType QT = typeInfo -> getType (). getUnqualifiedType ();
const Type * type = QT . getTypePtr ();
2017-02-16 19:38:35 +03:00
CXXRecordDecl * rec = type -> getAsCXXRecordDecl ();
if ( ! rec ) {
return false ;
}
StringRef name = rec -> getName ();
2016-03-25 18:28:37 +03:00
const auto found = N . cuda2hipRename . find ( name );
if ( found != N . cuda2hipRename . end ()) {
2016-12-21 23:08:01 +03:00
updateCounters ( found -> second , name . str ());
2016-12-19 14:38:19 +03:00
if ( ! found -> second . unsupported ) {
StringRef repName = found -> second . hipName ;
Replacement Rep ( * SM , sl , name . size (), repName );
2017-02-10 22:02:41 +03:00
FullSourceLoc fullSL ( sl , * SM );
insertReplacement ( Rep , fullSL );
2016-12-19 14:38:19 +03:00
}
} else {
2017-02-14 21:36:49 +03:00
std :: string msg = "the following reference is not handled: '" + name . str () + "' [struct sizeof]." ;
printHipifyMessage ( * SM , sl , msg );
2016-03-25 18:28:37 +03:00
}
2016-08-24 18:51:36 +03:00
return true ;
2016-03-02 19:58:45 +03:00
}
2016-08-24 18:51:36 +03:00
return false ;
}
2016-03-02 19:58:45 +03:00
2016-08-24 18:51:36 +03:00
bool cudaSharedIncompleteArrayVar ( const MatchFinder :: MatchResult & Result ) {
2016-12-21 23:08:01 +03:00
StringRef refName = "cudaSharedIncompleteArrayVar" ;
if ( const VarDecl * sharedVar = Result . Nodes . getNodeAs < VarDecl > ( refName )) {
2016-08-05 21:35:58 +03:00
// Example: extern __shared__ uint sRadix1[];
if ( sharedVar -> hasExternalFormalLinkage ()) {
QualType QT = sharedVar -> getType ();
StringRef typeName ;
if ( QT -> isIncompleteArrayType ()) {
const ArrayType * AT = QT . getTypePtr () -> getAsArrayTypeUnsafe ();
QT = AT -> getElementType ();
if ( QT . getTypePtr () -> isBuiltinType ()) {
QT = QT . getCanonicalType ();
const BuiltinType * BT = dyn_cast < BuiltinType > ( QT );
if ( BT ) {
LangOptions LO ;
LO . CUDA = true ;
PrintingPolicy policy ( LO );
typeName = BT -> getName ( policy );
}
} else {
typeName = QT . getAsString ();
}
}
if ( ! typeName . empty ()) {
SourceLocation slStart = sharedVar -> getLocStart ();
SourceLocation slEnd = sharedVar -> getLocEnd ();
2016-08-24 18:51:36 +03:00
SourceManager * SM = Result . SourceManager ;
2016-08-05 21:35:58 +03:00
size_t repLength = SM -> getCharacterData ( slEnd ) - SM -> getCharacterData ( slStart ) + 1 ;
SmallString < 128 > tmpData ;
StringRef varName = sharedVar -> getNameAsString ();
StringRef repName = Twine ( "HIP_DYNAMIC_SHARED(" + typeName + ", " + varName + ")" ). toStringRef ( tmpData );
Replacement Rep ( * SM , slStart , repLength , repName );
2017-02-10 22:02:41 +03:00
FullSourceLoc fullSL ( slStart , * SM );
insertReplacement ( Rep , fullSL );
hipCounter counter = { "HIP_DYNAMIC_SHARED" , CONV_MEM , API_RUNTIME };
2016-12-21 23:08:01 +03:00
updateCounters ( counter , refName . str ());
2016-08-05 21:35:58 +03:00
}
}
2016-08-24 18:51:36 +03:00
return true ;
2016-08-05 21:35:58 +03:00
}
2016-08-24 18:51:36 +03:00
return false ;
}
2016-08-05 21:35:58 +03:00
2016-08-24 18:51:36 +03:00
bool cudaParamDecl ( const MatchFinder :: MatchResult & Result ) {
if ( const ParmVarDecl * paramDecl = Result . Nodes . getNodeAs < ParmVarDecl > ( "cudaParamDecl" )) {
QualType QT = paramDecl -> getOriginalType (). getUnqualifiedType ();
2016-03-02 19:58:45 +03:00
StringRef name = QT . getAsString ();
2016-03-24 14:54:14 +03:00
const Type * t = QT . getTypePtr ();
2016-03-02 19:58:45 +03:00
if ( t -> isStructureOrClassType ()) {
name = t -> getAsCXXRecordDecl () -> getName ();
}
2017-02-14 21:36:49 +03:00
TypeLoc TL = paramDecl -> getTypeSourceInfo () -> getTypeLoc ();
SourceLocation sl = TL . getUnqualifiedLoc (). getLocStart ();
SourceManager * SM = Result . SourceManager ;
2016-03-25 18:28:37 +03:00
const auto found = N . cuda2hipRename . find ( name );
if ( found != N . cuda2hipRename . end ()) {
2016-12-21 23:08:01 +03:00
updateCounters ( found -> second , name . str ());
2016-12-19 14:38:19 +03:00
if ( ! found -> second . unsupported ) {
StringRef repName = found -> second . hipName ;
Replacement Rep ( * SM , sl , name . size (), repName );
2017-02-10 22:02:41 +03:00
FullSourceLoc fullSL ( sl , * SM );
insertReplacement ( Rep , fullSL );
2016-12-19 14:38:19 +03:00
}
} else {
2017-02-14 21:36:49 +03:00
std :: string msg = "the following reference is not handled: '" + name . str () + "' [param decl]." ;
printHipifyMessage ( * SM , sl , msg );
2016-03-25 18:28:37 +03:00
}
2016-08-24 18:51:36 +03:00
return true ;
2016-03-02 19:58:45 +03:00
}
2016-08-24 18:51:36 +03:00
return false ;
}
2016-03-02 19:58:45 +03:00
2016-08-24 18:51:36 +03:00
bool cudaParamDeclPtr ( const MatchFinder :: MatchResult & Result ) {
if ( const ParmVarDecl * paramDeclPtr = Result . Nodes . getNodeAs < ParmVarDecl > ( "cudaParamDeclPtr" )) {
const Type * pt = paramDeclPtr -> getType (). getTypePtrOrNull ();
2016-03-02 19:58:45 +03:00
if ( pt ) {
2017-02-14 21:36:49 +03:00
TypeLoc TL = paramDeclPtr -> getTypeSourceInfo () -> getTypeLoc ();
SourceLocation sl = TL . getUnqualifiedLoc (). getLocStart ();
SourceManager * SM = Result . SourceManager ;
2016-03-02 19:58:45 +03:00
QualType QT = pt -> getPointeeType ();
2016-03-24 14:54:14 +03:00
const Type * t = QT . getTypePtr ();
StringRef name = t -> isStructureOrClassType ()
2016-08-24 18:51:36 +03:00
? t -> getAsCXXRecordDecl () -> getName ()
: StringRef ( QT . getAsString ());
2016-03-25 18:28:37 +03:00
const auto found = N . cuda2hipRename . find ( name );
if ( found != N . cuda2hipRename . end ()) {
2016-12-21 23:08:01 +03:00
updateCounters ( found -> second , name . str ());
2016-12-19 14:38:19 +03:00
if ( ! found -> second . unsupported ) {
StringRef repName = found -> second . hipName ;
Replacement Rep ( * SM , sl , name . size (), repName );
2017-02-10 22:02:41 +03:00
FullSourceLoc fullSL ( sl , * SM );
insertReplacement ( Rep , fullSL );
2016-12-19 14:38:19 +03:00
}
} else {
2017-02-14 21:36:49 +03:00
std :: string msg = "the following reference is not handled: '" + name . str () + "' [param decl ptr]." ;
printHipifyMessage ( * SM , sl , msg );
2016-03-25 18:28:37 +03:00
}
2016-03-02 19:58:45 +03:00
}
2016-08-24 18:51:36 +03:00
return true ;
2016-03-02 19:58:45 +03:00
}
2016-08-24 18:51:36 +03:00
return false ;
}
2016-03-02 19:58:45 +03:00
2016-08-24 18:51:36 +03:00
bool unresolvedTemplateName ( const MatchFinder :: MatchResult & Result ) {
if ( const FunctionTemplateDecl * templateDecl = Result . Nodes . getNodeAs < FunctionTemplateDecl > ( "unresolvedTemplateName" )) {
FunctionDecl * kernelDecl = templateDecl -> getTemplatedDecl ();
convertKernelDecl ( kernelDecl , Result );
return true ;
2016-03-02 19:58:45 +03:00
}
2016-08-24 18:51:36 +03:00
return false ;
}
2016-03-02 19:58:45 +03:00
2016-08-24 18:51:36 +03:00
bool stringLiteral ( const MatchFinder :: MatchResult & Result ) {
if ( const StringLiteral * sLiteral = Result . Nodes . getNodeAs < StringLiteral > ( "stringLiteral" )) {
if ( sLiteral -> getCharByteWidth () == 1 ) {
StringRef s = sLiteral -> getString ();
SourceManager * SM = Result . SourceManager ;
2016-12-13 18:01:08 +03:00
processString ( s , * SM , sLiteral -> getLocStart ());
2016-03-25 18:28:37 +03:00
}
2016-08-24 18:51:36 +03:00
return true ;
2016-03-02 19:58:45 +03:00
}
2016-08-24 18:51:36 +03:00
return false ;
}
2016-08-18 20:59:51 +03:00
2016-08-24 18:51:36 +03:00
public :
2017-02-14 21:36:49 +03:00
Cuda2HipCallback ( Replacements * Replace , ast_matchers :: MatchFinder * parent , HipifyPPCallbacks * PPCallbacks , const std :: string & mainFileName )
: Cuda2Hip ( Replace , mainFileName ), owner ( parent ), PP ( PPCallbacks ) {
2016-08-24 18:51:36 +03:00
PP -> setMatch ( this );
}
void run ( const MatchFinder :: MatchResult & Result ) override {
do {
if ( cudaCall ( Result )) break ;
if ( cudaBuiltin ( Result )) break ;
if ( cudaEnumConstantRef ( Result )) break ;
if ( cudaEnumConstantDecl ( Result )) break ;
if ( cudaTypedefVar ( Result )) break ;
2016-12-26 19:03:50 +03:00
if ( cudaTypedefVarPtr ( Result )) break ;
2016-08-24 18:51:36 +03:00
if ( cudaStructVar ( Result )) break ;
if ( cudaStructVarPtr ( Result )) break ;
if ( cudaStructSizeOf ( Result )) break ;
if ( cudaParamDecl ( Result )) break ;
if ( cudaParamDeclPtr ( Result )) break ;
2016-12-26 19:03:50 +03:00
if ( cudaLaunchKernel ( Result )) break ;
if ( cudaSharedIncompleteArrayVar ( Result )) break ;
2016-08-24 18:51:36 +03:00
if ( stringLiteral ( Result )) break ;
if ( unresolvedTemplateName ( Result )) break ;
break ;
} while ( false );
2017-02-13 18:13:49 +03:00
insertHipHeaders ( PP , * Result . SourceManager );
2016-03-02 19:58:45 +03:00
}
2016-03-24 14:54:14 +03:00
private :
ast_matchers :: MatchFinder * owner ;
2016-08-18 20:59:51 +03:00
HipifyPPCallbacks * PP ;
2016-03-02 19:58:45 +03:00
};
2016-08-18 20:59:51 +03:00
void HipifyPPCallbacks :: handleEndSource () {
2017-02-13 18:13:49 +03:00
insertHipHeaders ( Match , * _sm );
2016-08-18 20:59:51 +03:00
}
2016-03-02 19:58:45 +03:00
} // end anonymous namespace
2016-08-24 18:51:36 +03:00
void addAllMatchers ( ast_matchers :: MatchFinder & Finder , Cuda2HipCallback * Callback ) {
2016-03-24 14:54:14 +03:00
Finder . addMatcher ( callExpr ( isExpansionInMainFile (),
2016-09-01 18:54:03 +03:00
callee ( functionDecl ( matchesName ( "cu.*" ))))
2016-06-22 19:15:03 +03:00
. bind ( "cudaCall" ),
2016-08-24 18:51:36 +03:00
Callback );
2017-02-14 16:28:05 +03:00
Finder . addMatcher ( cudaKernelCallExpr ( isExpansionInMainFile ()). bind ( "cudaLaunchKernel" ), Callback );
2016-03-24 14:54:14 +03:00
Finder . addMatcher ( memberExpr ( isExpansionInMainFile (),
hasObjectExpression ( hasType ( cxxRecordDecl (
2016-06-22 19:15:03 +03:00
matchesName ( "__cuda_builtin_" )))))
. bind ( "cudaBuiltin" ),
2016-08-24 18:51:36 +03:00
Callback );
2016-03-24 14:54:14 +03:00
Finder . addMatcher ( declRefExpr ( isExpansionInMainFile (),
2016-06-22 19:15:03 +03:00
to ( enumConstantDecl (
2016-09-01 18:54:03 +03:00
matchesName ( "cu.*|CU.*" ))))
2016-06-22 19:15:03 +03:00
. bind ( "cudaEnumConstantRef" ),
2016-08-24 18:51:36 +03:00
Callback );
2016-06-22 19:15:03 +03:00
Finder . addMatcher ( varDecl ( isExpansionInMainFile (),
hasType ( enumDecl ()))
. bind ( "cudaEnumConstantDecl" ),
2016-08-24 18:51:36 +03:00
Callback );
2016-06-22 19:15:03 +03:00
Finder . addMatcher ( varDecl ( isExpansionInMainFile (),
2016-09-01 18:54:03 +03:00
hasType ( typedefDecl ( matchesName ( "cu.*|CU.*" ))))
2016-06-22 19:15:03 +03:00
. bind ( "cudaTypedefVar" ),
2016-08-24 18:51:36 +03:00
Callback );
2016-12-26 19:03:50 +03:00
// Array of elements of typedef type. Example:
// cudaStream_t streams[2];
2016-06-28 19:57:08 +03:00
Finder . addMatcher ( varDecl ( isExpansionInMainFile (),
hasType ( arrayType ( hasElementType ( typedefType (
2016-09-01 18:54:03 +03:00
hasDeclaration ( typedefDecl ( matchesName ( "cu.*|CU.*" ))))))))
2016-06-28 19:57:08 +03:00
. bind ( "cudaTypedefVar" ),
2016-08-24 18:51:36 +03:00
Callback );
2016-12-26 19:03:50 +03:00
// Pointer to typedef type. Examples:
// 1.
// cudaEvent_t *event = NULL;
// typedef __device_builtin__ struct CUevent_st *cudaEvent_t;
// 2.
// CUevent *event = NULL;
// typedef struct CUevent_st *CUevent;
Finder . addMatcher ( varDecl ( isExpansionInMainFile (),
hasType ( pointsTo ( typedefDecl (
matchesName ( "cu.*|CU.*" )))))
. bind ( "cudaTypedefVarPtr" ),
Callback );
2016-03-24 14:54:14 +03:00
Finder . addMatcher ( varDecl ( isExpansionInMainFile (),
2016-09-01 18:54:03 +03:00
hasType ( cxxRecordDecl ( matchesName ( "cu.*|CU.*" ))))
2016-06-22 19:15:03 +03:00
. bind ( "cudaStructVar" ),
2016-08-24 18:51:36 +03:00
Callback );
2016-06-22 19:15:03 +03:00
Finder . addMatcher ( varDecl ( isExpansionInMainFile (),
hasType ( pointsTo ( cxxRecordDecl (
2016-12-26 19:03:50 +03:00
matchesName ( "cu.*|CU.*" )))))
2016-06-22 19:15:03 +03:00
. bind ( "cudaStructVarPtr" ),
2016-08-24 18:51:36 +03:00
Callback );
2016-06-22 19:15:03 +03:00
Finder . addMatcher ( parmVarDecl ( isExpansionInMainFile (),
2016-09-01 18:54:03 +03:00
hasType ( namedDecl ( matchesName ( "cu.*|CU.*" ))))
2016-06-22 19:15:03 +03:00
. bind ( "cudaParamDecl" ),
2016-08-24 18:51:36 +03:00
Callback );
2016-03-24 14:54:14 +03:00
Finder . addMatcher ( parmVarDecl ( isExpansionInMainFile (),
2016-06-22 19:15:03 +03:00
hasType ( pointsTo ( namedDecl (
2016-12-26 19:03:50 +03:00
matchesName ( "cu.*|CU.*" )))))
2016-06-22 19:15:03 +03:00
. bind ( "cudaParamDeclPtr" ),
2016-08-24 18:51:36 +03:00
Callback );
2016-03-24 14:54:14 +03:00
Finder . addMatcher ( expr ( isExpansionInMainFile (),
2016-12-26 19:03:50 +03:00
sizeOfExpr ( hasArgumentOfType (
recordType ( hasDeclaration ( cxxRecordDecl ( matchesName ( "cu.*|CU.*" )))))))
2016-03-24 14:54:14 +03:00
. bind ( "cudaStructSizeOf" ),
2016-08-24 18:51:36 +03:00
Callback );
2016-06-22 19:15:03 +03:00
Finder . addMatcher ( stringLiteral ( isExpansionInMainFile ()). bind ( "stringLiteral" ),
2016-08-24 18:51:36 +03:00
Callback );
2016-08-05 21:35:58 +03:00
Finder . addMatcher ( varDecl ( isExpansionInMainFile (), allOf (
hasAttr ( attr :: CUDAShared ),
hasType ( incompleteArrayType ())))
. bind ( "cudaSharedIncompleteArrayVar" ),
2016-08-24 18:51:36 +03:00
Callback );
}
2016-03-02 19:58:45 +03:00
2016-12-23 17:40:06 +03:00
int64_t printStats ( const std :: string & csvFile , const std :: string & srcFile ,
HipifyPPCallbacks & PPCallbacks , Cuda2HipCallback & Callback ,
2017-02-10 22:02:41 +03:00
uint64_t replacedBytes , uint64_t totalBytes , unsigned totalLines ,
2016-12-28 20:44:05 +03:00
const std :: chrono :: steady_clock :: time_point & start ) {
2016-12-21 23:08:01 +03:00
std :: ofstream csv ( csvFile , std :: ios :: app );
int64_t sum = 0 , sum_interm = 0 ;
std :: string str ;
const std :: string hipify_info = "[HIPIFY] info: " , separator = ";" ;
2016-08-25 19:36:37 +03:00
for ( int i = 0 ; i < CONV_LAST ; i ++ ) {
sum += Callback . countReps [ i ] + PPCallbacks . countReps [ i ];
}
2016-12-19 14:38:19 +03:00
int64_t sum_unsupported = 0 ;
for ( int i = 0 ; i < CONV_LAST ; i ++ ) {
sum_unsupported += Callback . countRepsUnsupported [ i ] + PPCallbacks . countRepsUnsupported [ i ];
}
2016-12-21 23:08:01 +03:00
if ( sum > 0 || sum_unsupported > 0 ) {
str = "file \' " + srcFile + " \' statistics: \n " ;
llvm :: outs () << " \n " << hipify_info << str ;
csv << " \n " << str ;
str = "CONVERTED refs count" ;
2016-12-23 17:40:06 +03:00
llvm :: outs () << " " << str << ": " << sum << " \n " ;
2016-12-21 23:08:01 +03:00
csv << " \n " << str << separator << sum << " \n " ;
str = "UNCONVERTED refs count" ;
2016-12-23 17:40:06 +03:00
llvm :: outs () << " " << str << ": " << sum_unsupported << " \n " ;
2016-12-21 23:08:01 +03:00
csv << str << separator << sum_unsupported << " \n " ;
2016-12-23 17:40:06 +03:00
str = "CONVERSION %" ;
2016-12-21 23:08:01 +03:00
long conv = 100 - std :: lround ( double ( sum_unsupported * 100 ) / double ( sum + sum_unsupported ));
2016-12-23 17:40:06 +03:00
llvm :: outs () << " " << str << ": " << conv << "% \n " ;
csv << str << separator << conv << "% \n " ;
str = "REPLACED bytes" ;
llvm :: outs () << " " << str << ": " << replacedBytes << " \n " ;
csv << str << separator << replacedBytes << " \n " ;
str = "TOTAL bytes" ;
llvm :: outs () << " " << str << ": " << totalBytes << " \n " ;
csv << str << separator << totalBytes << " \n " ;
2017-02-10 22:02:41 +03:00
str = "CHANGED lines of code" ;
unsigned changedLines = Callback . LOCs . size () + PPCallbacks . LOCs . size ();
llvm :: outs () << " " << str << ": " << changedLines << " \n " ;
csv << str << separator << changedLines << " \n " ;
str = "TOTAL lines of code" ;
llvm :: outs () << " " << str << ": " << totalLines << " \n " ;
csv << str << separator << totalLines << " \n " ;
if ( totalBytes > 0 ) {
str = "CODE CHANGED (in bytes) %" ;
conv = std :: lround ( double ( replacedBytes * 100 ) / double ( totalBytes ));
llvm :: outs () << " " << str << ": " << conv << "% \n " ;
csv << str << separator << conv << "% \n " ;
}
if ( totalLines > 0 ) {
str = "CODE CHANGED (in lines) %" ;
conv = std :: lround ( double ( changedLines * 100 ) / double ( totalLines ));
llvm :: outs () << " " << str << ": " << conv << "% \n " ;
csv << str << separator << conv << "% \n " ;
}
2016-12-28 20:44:05 +03:00
typedef std :: chrono :: duration < double , std :: milli > duration ;
duration elapsed = std :: chrono :: steady_clock :: now () - start ;
str = "TIME ELAPSED s" ;
std :: stringstream stream ;
stream << std :: fixed << std :: setprecision ( 2 ) << elapsed . count () / 1000 ;
llvm :: outs () << " " << str << ": " << stream . str () << " \n " ;
csv << str << separator << stream . str () << " \n " ;
2016-12-21 23:08:01 +03:00
}
if ( sum > 0 ) {
2016-12-23 17:40:06 +03:00
llvm :: outs () << hipify_info << "CONVERTED refs by type: \n " ;
2016-12-21 23:08:01 +03:00
csv << " \n CUDA ref type" << separator << "Count \n " ;
for ( int i = 0 ; i < CONV_LAST ; i ++ ) {
sum_interm = Callback . countReps [ i ] + PPCallbacks . countReps [ i ];
if ( 0 == sum_interm ) {
continue ;
}
llvm :: outs () << " " << counterNames [ i ] << ": " << sum_interm << " \n " ;
csv << counterNames [ i ] << separator << sum_interm << " \n " ;
}
llvm :: outs () << hipify_info << "CONVERTED refs by API: \n " ;
csv << " \n CUDA API" << separator << "Count \n " ;
for ( int i = 0 ; i < API_LAST ; i ++ ) {
llvm :: outs () << " " << apiNames [ i ] << ": " << Callback . countApiReps [ i ] + PPCallbacks . countApiReps [ i ] << " \n " ;
csv << apiNames [ i ] << separator << Callback . countApiReps [ i ] + PPCallbacks . countApiReps [ i ] << " \n " ;
}
for ( const auto & it : PPCallbacks . cuda2hipConverted ) {
const auto found = Callback . cuda2hipConverted . find ( it . first );
if ( found == Callback . cuda2hipConverted . end ()) {
Callback . cuda2hipConverted . insert ( std :: pair < std :: string , uint64_t > ( it . first , 1 ));
} else {
found -> second += it . second ;
}
}
llvm :: outs () << hipify_info << "CONVERTED refs by names: \n " ;
csv << " \n CUDA ref name" << separator << "Count \n " ;
for ( const auto & it : Callback . cuda2hipConverted ) {
llvm :: outs () << " " << it . first << ": " << it . second << " \n " ;
csv << it . first << separator << it . second << " \n " ;
}
}
2016-12-19 14:38:19 +03:00
if ( sum_unsupported > 0 ) {
2016-12-23 17:40:06 +03:00
str = "UNCONVERTED refs by type:" ;
llvm :: outs () << hipify_info << str << " \n " ;
2016-12-21 23:08:01 +03:00
csv << " \n UNCONVERTED CUDA ref type" << separator << "Count \n " ;
2016-12-19 14:38:19 +03:00
for ( int i = 0 ; i < CONV_LAST ; i ++ ) {
2016-12-21 23:08:01 +03:00
sum_interm = Callback . countRepsUnsupported [ i ] + PPCallbacks . countRepsUnsupported [ i ];
if ( 0 == sum_interm ) {
continue ;
}
llvm :: outs () << " " << counterNames [ i ] << ": " << sum_interm << " \n " ;
csv << counterNames [ i ] << separator << sum_interm << " \n " ;
2016-12-19 14:38:19 +03:00
}
2016-12-21 23:08:01 +03:00
llvm :: outs () << hipify_info << "UNCONVERTED refs by API: \n " ;
csv << " \n UNCONVERTED CUDA API" << separator << "Count \n " ;
2016-12-19 14:38:19 +03:00
for ( int i = 0 ; i < API_LAST ; i ++ ) {
2016-12-21 23:08:01 +03:00
llvm :: outs () << " " << apiNames [ i ] << ": " << Callback . countApiRepsUnsupported [ i ] + PPCallbacks . countApiRepsUnsupported [ i ] << " \n " ;
csv << apiNames [ i ] << separator << Callback . countApiRepsUnsupported [ i ] + PPCallbacks . countApiRepsUnsupported [ i ] << " \n " ;
}
for ( const auto & it : PPCallbacks . cuda2hipUnconverted ) {
const auto found = Callback . cuda2hipUnconverted . find ( it . first );
if ( found == Callback . cuda2hipUnconverted . end ()) {
Callback . cuda2hipUnconverted . insert ( std :: pair < std :: string , uint64_t > ( it . first , 1 ));
} else {
found -> second += it . second ;
}
}
llvm :: outs () << hipify_info << "UNCONVERTED refs by names: \n " ;
csv << " \n UNCONVERTED CUDA ref name" << separator << "Count \n " ;
for ( const auto & it : Callback . cuda2hipUnconverted ) {
llvm :: outs () << " " << it . first << ": " << it . second << " \n " ;
csv << it . first << separator << it . second << " \n " ;
2016-12-19 14:38:19 +03:00
}
}
2016-12-21 23:08:01 +03:00
csv . close ();
2016-12-13 18:01:08 +03:00
return sum ;
}
2016-12-23 17:40:06 +03:00
void printAllStats ( const std :: string & csvFile , int64_t totalFiles , int64_t convertedFiles ,
2017-02-10 22:02:41 +03:00
uint64_t replacedBytes , uint64_t totalBytes , unsigned changedLines , unsigned totalLines ,
2016-12-28 20:44:05 +03:00
const std :: chrono :: steady_clock :: time_point & start ) {
2016-12-21 23:08:01 +03:00
std :: ofstream csv ( csvFile , std :: ios :: app );
int64_t sum = 0 , sum_interm = 0 ;
std :: string str ;
const std :: string hipify_info = "[HIPIFY] info: " , separator = ";" ;
2016-12-13 18:01:08 +03:00
for ( int i = 0 ; i < CONV_LAST ; i ++ ) {
sum += countRepsTotal [ i ];
}
2016-12-21 23:08:01 +03:00
int64_t sum_unsupported = 0 ;
2016-12-13 18:01:08 +03:00
for ( int i = 0 ; i < CONV_LAST ; i ++ ) {
2016-12-21 23:08:01 +03:00
sum_unsupported += countRepsTotalUnsupported [ i ];
}
if ( sum > 0 || sum_unsupported > 0 ) {
str = "TOTAL statistics: \n " ;
llvm :: outs () << " \n " << hipify_info << str ;
csv << " \n " << str ;
str = "CONVERTED files" ;
llvm :: outs () << " " << str << ": " << convertedFiles << " \n " ;
csv << " \n " << str << separator << convertedFiles << " \n " ;
str = "PROCESSED files" ;
llvm :: outs () << " " << str << ": " << totalFiles << " \n " ;
csv << str << separator << totalFiles << " \n " ;
str = "CONVERTED refs count" ;
2016-12-23 17:40:06 +03:00
llvm :: outs () << " " << str << ": " << sum << " \n " ;
2016-12-21 23:08:01 +03:00
csv << str << separator << sum << " \n " ;
str = "UNCONVERTED refs count" ;
2016-12-23 17:40:06 +03:00
llvm :: outs () << " " << str << ": " << sum_unsupported << " \n " ;
2016-12-21 23:08:01 +03:00
csv << str << separator << sum_unsupported << " \n " ;
2016-12-23 17:40:06 +03:00
str = "CONVERSION %" ;
2016-12-21 23:08:01 +03:00
long conv = 100 - std :: lround ( double ( sum_unsupported * 100 ) / double ( sum + sum_unsupported ));
2016-12-23 17:40:06 +03:00
llvm :: outs () << " " << str << ": " << conv << "% \n " ;
csv << str << separator << conv << "% \n " ;
str = "REPLACED bytes" ;
llvm :: outs () << " " << str << ": " << replacedBytes << " \n " ;
csv << str << separator << replacedBytes << " \n " ;
str = "TOTAL bytes" ;
llvm :: outs () << " " << str << ": " << totalBytes << " \n " ;
csv << str << separator << totalBytes << " \n " ;
2017-02-10 22:02:41 +03:00
str = "CHANGED lines of code" ;
llvm :: outs () << " " << str << ": " << changedLines << " \n " ;
csv << str << separator << changedLines << " \n " ;
str = "TOTAL lines of code" ;
llvm :: outs () << " " << str << ": " << totalLines << " \n " ;
csv << str << separator << totalLines << " \n " ;
if ( totalBytes > 0 ) {
str = "CODE CHANGED (in bytes) %" ;
conv = std :: lround ( double ( replacedBytes * 100 ) / double ( totalBytes ));
llvm :: outs () << " " << str << ": " << conv << "% \n " ;
csv << str << separator << conv << "% \n " ;
}
if ( totalLines > 0 ) {
str = "CODE CHANGED (in lines) %" ;
conv = std :: lround ( double ( changedLines * 100 ) / double ( totalLines ));
llvm :: outs () << " " << str << ": " << conv << "% \n " ;
csv << str << separator << conv << "% \n " ;
}
2016-12-28 20:44:05 +03:00
typedef std :: chrono :: duration < double , std :: milli > duration ;
duration elapsed = std :: chrono :: steady_clock :: now () - start ;
str = "TIME ELAPSED s" ;
std :: stringstream stream ;
stream << std :: fixed << std :: setprecision ( 2 ) << elapsed . count () / 1000 ;
llvm :: outs () << " " << str << ": " << stream . str () << " \n " ;
csv << str << separator << stream . str () << " \n " ;
2016-12-21 23:08:01 +03:00
}
if ( sum > 0 ) {
2016-12-23 17:40:06 +03:00
llvm :: outs () << hipify_info << "CONVERTED refs by type: \n " ;
2016-12-21 23:08:01 +03:00
csv << " \n CUDA ref type" << separator << "Count \n " ;
for ( int i = 0 ; i < CONV_LAST ; i ++ ) {
sum_interm = countRepsTotal [ i ];
if ( 0 == sum_interm ) {
continue ;
}
llvm :: outs () << " " << counterNames [ i ] << ": " << sum_interm << " \n " ;
csv << counterNames [ i ] << separator << sum_interm << " \n " ;
}
llvm :: outs () << hipify_info << "CONVERTED refs by API: \n " ;
csv << " \n CUDA API" << separator << "Count \n " ;
for ( int i = 0 ; i < API_LAST ; i ++ ) {
llvm :: outs () << " " << apiNames [ i ] << ": " << countApiRepsTotal [ i ] << " \n " ;
csv << apiNames [ i ] << separator << countApiRepsTotal [ i ] << " \n " ;
}
llvm :: outs () << hipify_info << "CONVERTED refs by names: \n " ;
csv << " \n CUDA ref name" << separator << "Count \n " ;
for ( const auto & it : cuda2hipConvertedTotal ) {
llvm :: outs () << " " << it . first << ": " << it . second << " \n " ;
csv << it . first << separator << it . second << " \n " ;
}
2016-12-13 18:01:08 +03:00
}
2016-12-21 23:08:01 +03:00
if ( sum_unsupported > 0 ) {
2016-12-23 17:40:06 +03:00
str = "UNCONVERTED refs by type:" ;
llvm :: outs () << hipify_info << str << " \n " ;
2016-12-21 23:08:01 +03:00
csv << " \n UNCONVERTED CUDA ref type" << separator << "Count \n " ;
for ( int i = 0 ; i < CONV_LAST ; i ++ ) {
sum_interm = countRepsTotalUnsupported [ i ];
if ( 0 == sum_interm ) {
continue ;
}
llvm :: outs () << " " << counterNames [ i ] << ": " << sum_interm << " \n " ;
csv << counterNames [ i ] << separator << sum_interm << " \n " ;
}
llvm :: outs () << hipify_info << "UNCONVERTED refs by API: \n " ;
csv << " \n UNCONVERTED CUDA API" << separator << "Count \n " ;
for ( int i = 0 ; i < API_LAST ; i ++ ) {
llvm :: outs () << " " << apiNames [ i ] << ": " << countApiRepsTotalUnsupported [ i ] << " \n " ;
csv << apiNames [ i ] << separator << countApiRepsTotalUnsupported [ i ] << " \n " ;
}
llvm :: outs () << hipify_info << "UNCONVERTED refs by names: \n " ;
csv << " \n UNCONVERTED CUDA ref name" << separator << "Count \n " ;
for ( const auto & it : cuda2hipUnconvertedTotal ) {
llvm :: outs () << " " << it . first << ": " << it . second << " \n " ;
csv << it . first << separator << it . second << " \n " ;
}
2016-12-13 18:01:08 +03:00
}
2016-12-21 23:08:01 +03:00
csv . close ();
2016-08-25 19:36:37 +03:00
}
2016-08-24 18:51:36 +03:00
int main ( int argc , const char ** argv ) {
2016-12-28 20:44:05 +03:00
auto start = std :: chrono :: steady_clock :: now ();
auto begin = start ;
2016-08-24 18:51:36 +03:00
llvm :: sys :: PrintStackTraceOnErrorSignal ();
2016-12-12 19:57:19 +03:00
CommonOptionsParser OptionsParser ( argc , argv , ToolTemplateCategory , llvm :: cl :: OneOrMore );
2016-08-24 18:51:36 +03:00
std :: vector < std :: string > fileSources = OptionsParser . getSourcePathList ();
std :: string dst = OutputFilename ;
2016-12-12 19:57:19 +03:00
if ( ! dst . empty () && fileSources . size () > 1 ) {
2016-12-21 23:08:01 +03:00
llvm :: errs () << "[HIPIFY] conflict: -o and multiple source files are specified. \n " ;
2016-12-12 19:57:19 +03:00
return 1 ;
2016-10-20 18:29:24 +03:00
}
2016-12-08 22:45:10 +03:00
if ( NoOutput ) {
if ( Inplace ) {
2016-12-21 23:08:01 +03:00
llvm :: errs () << "[HIPIFY] conflict: both -no-output and -inplace options are specified. \n " ;
2016-12-08 22:45:10 +03:00
return 1 ;
}
if ( ! dst . empty ()) {
2016-12-21 23:08:01 +03:00
llvm :: errs () << "[HIPIFY] conflict: both -no-output and -o options are specified. \n " ;
2016-12-08 22:45:10 +03:00
return 1 ;
}
}
2016-12-12 20:03:01 +03:00
if ( Examine ) {
2016-12-12 19:57:19 +03:00
NoOutput = PrintStats = true ;
}
int Result = 0 ;
2016-12-23 17:40:06 +03:00
std :: string csv ;
if ( ! OutputStatsFilename . empty ()) {
csv = OutputStatsFilename ;
} else {
csv = "hipify_stats.csv" ;
}
2017-02-10 22:02:41 +03:00
size_t filesTranslated = fileSources . size ();
2016-12-23 17:40:06 +03:00
uint64_t repBytesTotal = 0 ;
uint64_t bytesTotal = 0 ;
2017-02-10 22:02:41 +03:00
unsigned changedLinesTotal = 0 ;
unsigned linesTotal = 0 ;
if ( PrintStats && filesTranslated > 1 ) {
2016-12-21 23:08:01 +03:00
std :: remove ( csv . c_str ());
}
2016-12-12 19:57:19 +03:00
for ( const auto & src : fileSources ) {
if ( dst . empty ()) {
dst = src ;
if ( ! Inplace ) {
size_t pos = dst . rfind ( "." );
if ( pos != std :: string :: npos && pos + 1 < dst . size ()) {
dst = dst . substr ( 0 , pos ) + ".hip." + dst . substr ( pos + 1 , dst . size () - pos - 1 );
2016-12-21 23:08:01 +03:00
} else {
2016-12-12 19:57:19 +03:00
dst += ".hip.cu" ;
}
2016-08-24 18:51:36 +03:00
}
2016-12-21 23:08:01 +03:00
} else {
2016-12-12 19:57:19 +03:00
if ( Inplace ) {
2016-12-21 23:08:01 +03:00
llvm :: errs () << "[HIPIFY] conflict: both -o and -inplace options are specified. \n " ;
2016-12-12 19:57:19 +03:00
return 1 ;
}
dst += ".hip" ;
}
// backup source file since tooling may change "inplace"
if ( ! NoBackup || ! Inplace ) {
std :: ifstream source ( src , std :: ios :: binary );
std :: ofstream dest ( Inplace ? dst + ".prehip" : dst , std :: ios :: binary );
dest << source . rdbuf ();
source . close ();
dest . close ();
2016-08-24 18:51:36 +03:00
}
2016-12-12 19:57:19 +03:00
RefactoringTool Tool ( OptionsParser . getCompilations (), dst );
ast_matchers :: MatchFinder Finder ;
2017-02-14 21:36:49 +03:00
HipifyPPCallbacks PPCallbacks ( & Tool . getReplacements (), src );
Cuda2HipCallback Callback ( & Tool . getReplacements (), & Finder , & PPCallbacks , src );
2016-08-24 18:51:36 +03:00
2016-12-12 19:57:19 +03:00
addAllMatchers ( Finder , & Callback );
2016-08-24 18:51:36 +03:00
2016-12-12 19:57:19 +03:00
auto action = newFrontendActionFactory ( & Finder , & PPCallbacks );
std :: vector < const char *> compilationStages ;
compilationStages . push_back ( "--cuda-host-only" );
2016-12-23 18:01:26 +03:00
2016-12-12 19:57:19 +03:00
Tool . appendArgumentsAdjuster ( getInsertArgumentAdjuster ( compilationStages [ 0 ], ArgumentInsertPosition :: BEGIN ));
Tool . appendArgumentsAdjuster ( getInsertArgumentAdjuster ( "-std=c++11" ));
2016-03-05 13:59:38 +03:00
#if defined(HIPIFY_CLANG_RES)
2016-12-12 19:57:19 +03:00
Tool . appendArgumentsAdjuster ( getInsertArgumentAdjuster ( "-resource-dir=" HIPIFY_CLANG_RES ));
2016-03-25 18:28:37 +03:00
#endif
2016-12-12 19:57:19 +03:00
Tool . appendArgumentsAdjuster ( getClangSyntaxOnlyAdjuster ());
Result += Tool . run ( action . get ());
Tool . clearArgumentsAdjusters ();
LangOptions DefaultLangOptions ;
IntrusiveRefCntPtr < DiagnosticOptions > DiagOpts = new DiagnosticOptions ();
TextDiagnosticPrinter DiagnosticPrinter ( llvm :: errs (), &* DiagOpts );
2016-12-26 19:03:50 +03:00
DiagnosticsEngine Diagnostics ( IntrusiveRefCntPtr < DiagnosticIDs > ( new DiagnosticIDs ()), &* DiagOpts , & DiagnosticPrinter , false );
2016-03-02 19:58:45 +03:00
2016-12-23 17:40:06 +03:00
uint64_t repBytes = 0 ;
uint64_t bytes = 0 ;
2017-02-10 22:02:41 +03:00
unsigned lines = 0 ;
SourceManager SM ( Diagnostics , Tool . getFiles ());
2016-12-23 17:40:06 +03:00
if ( PrintStats ) {
DEBUG ( dbgs () << "Replacements collected by the tool: \n " );
for ( const auto & r : Tool . getReplacements ()) {
DEBUG ( dbgs () << r . toString () << " \n " );
repBytes += r . getLength ();
}
std :: ifstream src_file ( dst , std :: ios :: binary | std :: ios :: ate );
2017-02-10 22:02:41 +03:00
src_file . clear ();
src_file . seekg ( 0 );
lines = std :: count ( std :: istreambuf_iterator < char > ( src_file ), std :: istreambuf_iterator < char > (), '\n' );
2016-12-23 17:40:06 +03:00
bytes = src_file . tellg ();
2016-12-12 19:57:19 +03:00
}
2017-02-10 22:02:41 +03:00
Rewriter Rewrite ( SM , DefaultLangOptions );
2016-12-12 19:57:19 +03:00
if ( ! Tool . applyAllReplacements ( Rewrite )) {
DEBUG ( dbgs () << "Skipped some replacements. \n " );
}
if ( ! NoOutput ) {
Result += Rewrite . overwriteChangedFiles ();
}
if ( ! Inplace && ! NoOutput ) {
size_t pos = dst . rfind ( "." );
if ( pos != std :: string :: npos ) {
rename ( dst . c_str (), dst . substr ( 0 , pos ). c_str ());
}
}
if ( NoOutput ) {
remove ( dst . c_str ());
}
if ( PrintStats ) {
2016-12-21 23:08:01 +03:00
if ( fileSources . size () == 1 ) {
2016-12-23 17:40:06 +03:00
if ( OutputStatsFilename . empty ()) {
csv = dst + ".csv" ;
}
2016-12-21 23:08:01 +03:00
std :: remove ( csv . c_str ());
}
2017-02-10 22:02:41 +03:00
if ( 0 == printStats ( csv , src , PPCallbacks , Callback , repBytes , bytes , lines , start )) {
filesTranslated -- ;
2016-12-13 18:01:08 +03:00
}
2016-12-28 20:44:05 +03:00
start = std :: chrono :: steady_clock :: now ();
2016-12-23 17:40:06 +03:00
repBytesTotal += repBytes ;
bytesTotal += bytes ;
2017-02-10 22:02:41 +03:00
changedLinesTotal += PPCallbacks . LOCs . size () + Callback . LOCs . size ();
linesTotal += lines ;
2016-03-07 21:29:23 +03:00
}
2016-12-21 23:08:01 +03:00
dst . clear ();
2016-03-02 19:58:45 +03:00
}
2016-12-13 18:01:08 +03:00
if ( PrintStats && fileSources . size () > 1 ) {
2017-02-10 22:02:41 +03:00
printAllStats ( csv , fileSources . size (), filesTranslated , repBytesTotal , bytesTotal , changedLinesTotal , linesTotal , begin );
2016-12-13 18:01:08 +03:00
}
2016-03-02 19:58:45 +03:00
return Result ;
}