diff --git a/projects/hip/include/hip/hip_runtime_api.h b/projects/hip/include/hip/hip_runtime_api.h index f1488e82a3..1ac9d0c08d 100644 --- a/projects/hip/include/hip/hip_runtime_api.h +++ b/projects/hip/include/hip/hip_runtime_api.h @@ -33,6 +33,7 @@ THE SOFTWARE. #include // for getDeviceProp #include #include +#include enum { HIP_SUCCESS = 0, @@ -625,6 +626,7 @@ typedef struct hipIpcEventHandle_st { } hipIpcEventHandle_t; typedef struct ihipModule_t* hipModule_t; typedef struct ihipModuleSymbol_t* hipFunction_t; +typedef struct ihipLinkState_t* hipLinkState_t; /** * HIP memory pool */ @@ -1137,29 +1139,6 @@ typedef struct hipMemPoolPtrExportData { unsigned char reserved[64]; } hipMemPoolPtrExportData; -/** - * hipJitOption - */ -typedef enum hipJitOption { - hipJitOptionMaxRegisters = 0, - hipJitOptionThreadsPerBlock, - hipJitOptionWallTime, - hipJitOptionInfoLogBuffer, - hipJitOptionInfoLogBufferSizeBytes, - hipJitOptionErrorLogBuffer, - hipJitOptionErrorLogBufferSizeBytes, - hipJitOptionOptimizationLevel, - hipJitOptionTargetFromContext, - hipJitOptionTarget, - hipJitOptionFallbackStrategy, - hipJitOptionGenerateDebugInfo, - hipJitOptionLogVerbose, - hipJitOptionGenerateLineInfo, - hipJitOptionCacheMode, - hipJitOptionSm3xOpt, - hipJitOptionFastCompile, - hipJitOptionNumOptions -} hipJitOption; /** * @warning On AMD devices and some Nvidia devices, these hints and controls are ignored. */ @@ -5906,6 +5885,86 @@ hipError_t hipModuleLoadData(hipModule_t* module, const void* image); */ hipError_t hipModuleLoadDataEx(hipModule_t* module, const void* image, unsigned int numOptions, hipJitOption* options, void** optionValues); +/** + * @brief Completes the linking of the given program. + * @param [in] state hip link state + * @param [in] type Type of the input data or bitcode + * @param [in] data Input data which is null terminated + * @param [in] size Size of the input data + * @param [in] name Optional name for this input + * @param [in] numOptions Size of the options + * @param [in] options Array of options applied to this input + * @param [in] optionValues Array of option values cast to void* + * + * @returns #hipSuccess, #hipErrorInvalidValue, #hipErrorInvalidHandle + * + * If adding the file fails, it will + * @return #hipErrorInvalidConfiguration + * + * @see hipError_t + */ +hipError_t hipLinkAddData(hipLinkState_t state, hipJitInputType type, void* data, size_t size, + const char* name, unsigned int numOptions, hipJitOption* options, + void** optionValues); + +/** + * @brief Adds a file with bit code to be linked with options + * @param [in] state hip link state + * @param [in] type Type of the input data or bitcode + * @param [in] path Path to the input file where bitcode is present + * @param [in] numOptions Size of the options + * @param [in] options Array of options applied to this input + * @param [in] optionValues Array of option values cast to void* + * + * @returns #hipSuccess, #hipErrorInvalidValue + * + * If adding the file fails, it will + * @return #hipErrorInvalidConfiguration + * + * @see hipError_t + */ +hipError_t hipLinkAddFile(hipLinkState_t state, hipJitInputType type, const char* path, unsigned int numOptions, + hipJitOption* options, void** optionValues); + +/** + * @brief Completes the linking of the given program. + * @param [in] state hip link state + * @param [out] hipBinOut Upon success, points to the output binary + * @param [out] sizeOut Size of the binary is stored (optional) + * + * @returns #hipSuccess #hipErrorInvalidValue + * + * If adding the data fails, it will + * @return #hipErrorInvalidConfiguration + * + * @see hipError_t + */ + +hipError_t hipLinkComplete(hipLinkState_t state, void** hipBinOut, size_t* sizeOut); + +/** + * @brief Creates the link instance via hip APIs. + * @param [in] numOptions Number of options + * @param [in] option Array of options + * @param [in] optionValues Array of option values cast to void* + * @param [out] stateOut hip link state created upon success + * + * @returns #hipSuccess #hipErrorInvalidValue #hipErrorInvalidConfiguration + * + * @see hipSuccess + */ +hipError_t hipLinkCreate(unsigned int numOptions, hipJitOption* options, + void** optionValues, hipLinkState_t* stateOut); +/** + * @brief Deletes the link instance via hip APIs. + * @param [in] state link state instance + * + * @returns #hipSuccess #hipErrorInvalidValue + * + * @see hipSuccess + */ +hipError_t hipLinkDestroy(hipLinkState_t state); + /** * @brief launches kernel f with launch parameters and shared memory on stream with arguments passed * to kernelparams or extra diff --git a/projects/hip/include/hip/hiprtc.h b/projects/hip/include/hip/hiprtc.h index e10acbfe09..2abd777ea5 100644 --- a/projects/hip/include/hip/hiprtc.h +++ b/projects/hip/include/hip/hiprtc.h @@ -22,6 +22,7 @@ THE SOFTWARE. #pragma once #include +#include #if !defined(__HIP_PLATFORM_AMD__) && defined(__HIP_PLATFORM_NVIDIA__) #include @@ -41,7 +42,7 @@ extern "C" { * * @addtogroup GlobalDefs * @{ - * + * */ /** * hiprtc error code @@ -56,66 +57,90 @@ typedef enum hiprtcResult { HIPRTC_ERROR_COMPILATION = 6, ///< Compilation error HIPRTC_ERROR_BUILTIN_OPERATION_FAILURE = 7, ///< Failed in builtin operation HIPRTC_ERROR_NO_NAME_EXPRESSIONS_AFTER_COMPILATION = 8, ///< No name expression after compilation - HIPRTC_ERROR_NO_LOWERED_NAMES_BEFORE_COMPILATION = 9, ///< No lowered names before compilation + HIPRTC_ERROR_NO_LOWERED_NAMES_BEFORE_COMPILATION = 9, ///< No lowered names before compilation HIPRTC_ERROR_NAME_EXPRESSION_NOT_VALID = 10, ///< Invalid name expression HIPRTC_ERROR_INTERNAL_ERROR = 11, ///< Internal error HIPRTC_ERROR_LINKING = 100 ///< Error in linking } hiprtcResult; - /** * hiprtc JIT option */ - -typedef enum hiprtcJIT_option { - HIPRTC_JIT_MAX_REGISTERS = 0, ///< CUDA Only Maximum registers may be used in a thread, passed to compiler - HIPRTC_JIT_THREADS_PER_BLOCK, ///< CUDA Only Number of thread per block - HIPRTC_JIT_WALL_TIME, ///< CUDA Only Value for total wall clock time - HIPRTC_JIT_INFO_LOG_BUFFER, ///< CUDA Only Pointer to the buffer with logged information - HIPRTC_JIT_INFO_LOG_BUFFER_SIZE_BYTES, ///< CUDA Only Size of the buffer in bytes for logged info - HIPRTC_JIT_ERROR_LOG_BUFFER, ///< CUDA Only Pointer to the buffer with logged error(s) - HIPRTC_JIT_ERROR_LOG_BUFFER_SIZE_BYTES, ///< CUDA Only Size of the buffer in bytes for logged error(s) - HIPRTC_JIT_OPTIMIZATION_LEVEL, ///< Value of optimization level for generated codes, acceptable options -O0, -O1, -O2, -O3 - HIPRTC_JIT_TARGET_FROM_HIPCONTEXT, ///< CUDA Only The target context, which is the default - HIPRTC_JIT_TARGET, ///< CUDA Only JIT target - HIPRTC_JIT_FALLBACK_STRATEGY, ///< CUDA Only Fallback strategy - HIPRTC_JIT_GENERATE_DEBUG_INFO, ///< CUDA Only Generate debug information - HIPRTC_JIT_LOG_VERBOSE, ///< CUDA Only Generate log verbose - HIPRTC_JIT_GENERATE_LINE_INFO, ///< CUDA Only Generate line number information - HIPRTC_JIT_CACHE_MODE, ///< CUDA Only Set cache mode - HIPRTC_JIT_NEW_SM3X_OPT, ///< @deprecated CUDA Only New SM3X option. - HIPRTC_JIT_FAST_COMPILE, ///< CUDA Only Set fast compile - HIPRTC_JIT_GLOBAL_SYMBOL_NAMES, ///< CUDA Only Array of device symbol names to be relocated to the host - HIPRTC_JIT_GLOBAL_SYMBOL_ADDRESS, ///< CUDA Only Array of host addresses to be relocated to the device - HIPRTC_JIT_GLOBAL_SYMBOL_COUNT, ///< CUDA Only Number of symbol count. - HIPRTC_JIT_LTO, ///< @deprecated CUDA Only Enable link-time optimization for device code - HIPRTC_JIT_FTZ, ///< @deprecated CUDA Only Set single-precision denormals. - HIPRTC_JIT_PREC_DIV, ///< @deprecated CUDA Only Set single-precision floating-point division and - ///< reciprocals - HIPRTC_JIT_PREC_SQRT, ///< @deprecated CUDA Only Set single-precision floating-point square root - HIPRTC_JIT_FMA, ///< @deprecated CUDA Only Enable floating-point multiplies and adds/subtracts operations - HIPRTC_JIT_NUM_OPTIONS, ///< Number of options - HIPRTC_JIT_IR_TO_ISA_OPT_EXT = 10000, ///< Linker options to be passed on to compiler - /// @note Only supported for the AMD platform. - HIPRTC_JIT_IR_TO_ISA_OPT_COUNT_EXT, ///< Count of linker options to be passed on to - ///< compiler @note Only supported for the AMD platform -} hiprtcJIT_option; - +#define hiprtcJIT_option hipJitOption +#define HIPRTC_JIT_MAX_REGISTERS hipJitOptionMaxRegisters ///< CUDA Only Maximum registers may be used in a + ///< thread, passed to compiler +#define HIPRTC_JIT_THREADS_PER_BLOCK hipJitOptionThreadsPerBlock ///< CUDA Only Number of thread per block +#define HIPRTC_JIT_WALL_TIME hipJitOptionWallTime ///< CUDA Only Value for total wall clock time +#define HIPRTC_JIT_INFO_LOG_BUFFER hipJitOptionInfoLogBuffer ///< CUDA Only Pointer to the buffer with + ///< logged information +#define HIPRTC_JIT_INFO_LOG_BUFFER_SIZE_BYTES hipJitOptionInfoLogBufferSizeBytes ///< CUDA Only Size of the buffer + ///< in bytes for logged info +#define HIPRTC_JIT_ERROR_LOG_BUFFER hipJitOptionErrorLogBuffer ///< CUDA Only Pointer to the buffer + ///< with logged error(s) +#define HIPRTC_JIT_ERROR_LOG_BUFFER_SIZE_BYTES hipJitOptionErrorLogBufferSizeBytes ///< CUDA Only Size of the buffer in + ///< bytes for logged error(s) +#define HIPRTC_JIT_OPTIMIZATION_LEVEL hipJitOptionOptimizationLevel ///< Value of optimization level for + ///< generated codes, acceptable + ///< options -O0, -O1, -O2, -O3 +#define HIPRTC_JIT_TARGET_FROM_HIPCONTEXT hipJitOptionTargetFromContext ///< CUDA Only The target context, + ///< which is the default +#define HIPRTC_JIT_TARGET hipJitOptionTarget ///< CUDA Only JIT target +#define HIPRTC_JIT_FALLBACK_STRATEGY hipJitOptionFallbackStrategy ///< CUDA Only Fallback strategy +#define HIPRTC_JIT_GENERATE_DEBUG_INFO hipJitOptionGenerateDebugInfo ///< CUDA Only Generate debug information +#define HIPRTC_JIT_LOG_VERBOSE hipJitOptionLogVerbose ///< CUDA Only Generate log verbose +#define HIPRTC_JIT_GENERATE_LINE_INFO hipJitOptionGenerateLineInfo ///< CUDA Only Generate line number information +#define HIPRTC_JIT_CACHE_MODE hipJitOptionCacheMode ///< CUDA Only Set cache mode +#define HIPRTC_JIT_NEW_SM3X_OPT hipJitOptionSm3xOpt ///< @deprecated CUDA Only New SM3X option. +#define HIPRTC_JIT_FAST_COMPILE hipJitOptionFastCompile ///< CUDA Only Set fast compile +#define HIPRTC_JIT_GLOBAL_SYMBOL_NAMES hipJitOptionGlobalSymbolNames ///< CUDA Only Array of device symbol names to be + ///< relocated to the host +#define HIPRTC_JIT_GLOBAL_SYMBOL_ADDRESS hipJitOptionGlobalSymbolAddresses ///< CUDA Only Array of host addresses to be + ///< relocated to the device +#define HIPRTC_JIT_GLOBAL_SYMBOL_COUNT hipJitOptionGlobalSymbolCount ///< CUDA Only Number of symbol count. +#define HIPRTC_JIT_LTO hipJitOptionLto ///< @deprecated CUDA Only Enable link-time + ///< optimization for device code +#define HIPRTC_JIT_FTZ hipJitOptionFtz ///< @deprecated CUDA Only Set + ///< single-precision denormals. +#define HIPRTC_JIT_PREC_DIV hipJitOptionPrecDiv ///< @deprecated CUDA Only Set + ///< single-precision floating-point division + ///< and reciprocals +#define HIPRTC_JIT_PREC_SQRT hipJitOptionPrecSqrt ///< @deprecated CUDA Only Set + ///< single-precision floating-point + ///< square root +#define HIPRTC_JIT_FMA hipJitOptionFma ///< @deprecated CUDA Only Enable + ///< floating-point multiplies and + ///< adds/subtracts operations +#define HIPRTC_JIT_POSITION_INDEPENDENT_CODE hipJitOptionPositionIndependentCode ///< CUDA Only Generates + ///< Position Independent code +#define HIPRTC_JIT_MIN_CTA_PER_SM hipJitOptionMinCTAPerSM ///< CUDA Only Hints to JIT compiler + ///< the minimum number of CTAs frin + ///< kernel's grid to be mapped to SM +#define HIPRTC_JIT_MAX_THREADS_PER_BLOCK hipJitOptionMaxThreadsPerBlock ///< CUDA only Maximum number of + ///< threads in a thread block +#define HIPRTC_JIT_OVERRIDE_DIRECT_VALUES hipJitOptionOverrideDirectiveValues ///< CUDA only Override Directive + ///< Values +#define HIPRTC_JIT_NUM_OPTIONS hipJitOptionNumOptions ///< Number of options +#define HIPRTC_JIT_IR_TO_ISA_OPT_EXT hipJitOptionIRtoISAOptExt ///< HIP Only Linker options to be + ///< passed on to compiler +#define HIPRTC_JIT_IR_TO_ISA_OPT_COUNT_EXT hipJitOptionIRtoISAOptCountExt ///< HIP Only Count of linker options + ///< to be passed on to /** * hiprtc JIT input type */ -typedef enum hiprtcJITInputType { - HIPRTC_JIT_INPUT_CUBIN = 0, ///< Input cubin - HIPRTC_JIT_INPUT_PTX, ///< Input PTX - HIPRTC_JIT_INPUT_FATBINARY, ///< Input fat binary - HIPRTC_JIT_INPUT_OBJECT, ///< Input object - HIPRTC_JIT_INPUT_LIBRARY, ///< Input library - HIPRTC_JIT_INPUT_NVVM, ///< Input NVVM - HIPRTC_JIT_NUM_LEGACY_INPUT_TYPES, ///< Number of legacy input type - HIPRTC_JIT_INPUT_LLVM_BITCODE = 100, ///< LLVM bitcode or IR assembly - HIPRTC_JIT_INPUT_LLVM_BUNDLED_BITCODE = 101, ///< LLVM bundled bitcode - HIPRTC_JIT_INPUT_LLVM_ARCHIVES_OF_BUNDLED_BITCODE = 102, ///< LLVM archives of boundled bitcode - HIPRTC_JIT_NUM_INPUT_TYPES = (HIPRTC_JIT_NUM_LEGACY_INPUT_TYPES + 3) -} hiprtcJITInputType; +#define hiprtcJITInputType hipJitInputType +#define HIPRTC_JIT_INPUT_CUBIN hipJitInputCubin ///< Cuda only Input Cubin +#define HIPRTC_JIT_INPUT_PTX hipJitInputPtx ///< Cuda only Input PTX +#define HIPRTC_JIT_INPUT_FATBINARY hipJitInputFatBinary ///< Cuda Only Input FAT Binary +#define HIPRTC_JIT_INPUT_OBJECT hipJitInputObject ///< Cuda Only Host Object with embedded device code +#define HIPRTC_JIT_INPUT_LIBRARY hipJitInputLibrary ///< Cuda Only Archive of Host Objects with embedded device code +#define HIPRTC_JIT_INPUT_NVVM hipJitInputNvvm ///< @deprecated CUDA only High Level intermediate code for LTO +#define HIPRTC_JIT_NUM_LEGACY_INPUT_TYPES hipJitNumLegacyInputTypes ///< Count of Legacy Input Types +#define HIPRTC_JIT_INPUT_LLVM_BITCODE hipJitInputLLVMBitcode ///< HIP Only LLVM Bitcode or IR assembly +#define HIPRTC_JIT_INPUT_LLVM_BUNDLED_BITCODE hipJitInputLLVMBundledBitcode ///< HIP Only LLVM Clang Bundled Code +#define HIPRTC_JIT_INPUT_LLVM_ARCHIVES_OF_BUNDLED_BITCODE hipJitInputLLVMArchivesOfBundledBitcode ///< HIP Only LLVM + ///< Archives of + ///< Bundled Bitcode +#define HIPRTC_JIT_INPUT_SPIRV hipJitInputSpirv ///< HIP Only SPIRV Code Object +#define HIPRTC_JIT_NUM_INPUT_TYPES hipJitNumInputTypes ///< Count of Input Types /** * @} */ diff --git a/projects/hip/include/hip/linker_types.h b/projects/hip/include/hip/linker_types.h new file mode 100755 index 0000000000..fd3d29d09a --- /dev/null +++ b/projects/hip/include/hip/linker_types.h @@ -0,0 +1,130 @@ + +/* +Copyright (c) 2015 - 2023 Advanced Micro Devices, Inc. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#ifndef HIP_INCLUDE_HIP_LINKER_TYPES_H +#define HIP_INCLUDE_HIP_LINKER_TYPES_H + +#if defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-identifier" +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" +#endif + + +#if !defined(__HIP_PLATFORM_AMD__) && defined(__HIP_PLATFORM_NVIDIA__) +#elif defined(__HIP_PLATFORM_AMD__) && !defined(__HIP_PLATFORM_NVIDIA__) + +/** + * @defgroup LinkerTypes Jit Linker Data Types + * @{ + * This section describes the Jit Linker data types. + * + */ + +/** + * hipJitOption + */ +typedef enum hipJitOption { + hipJitOptionMaxRegisters = 0, ///< CUDA Only Maximum registers may be used in a thread, + ///< passed to compiler + hipJitOptionThreadsPerBlock, ///< CUDA Only Number of thread per block + hipJitOptionWallTime, ///< CUDA Only Value for total wall clock time + hipJitOptionInfoLogBuffer, ///< CUDA Only Pointer to the buffer with logged information + hipJitOptionInfoLogBufferSizeBytes, ///< CUDA Only Size of the buffer in bytes for logged info + hipJitOptionErrorLogBuffer, ///< CUDA Only Pointer to the buffer with logged error(s) + hipJitOptionErrorLogBufferSizeBytes, ///< CUDA Only Size of the buffer in bytes for logged error(s) + hipJitOptionOptimizationLevel, ///< Value of optimization level for generated codes, acceptable options + ///< -O0, -O1, -O2, -O3 + hipJitOptionTargetFromContext, ///< CUDA Only The target context, which is the default + hipJitOptionTarget, ///< CUDA Only JIT target + hipJitOptionFallbackStrategy, ///< CUDA Only Fallback strategy + hipJitOptionGenerateDebugInfo, ///< CUDA Only Generate debug information + hipJitOptionLogVerbose, ///< CUDA Only Generate log verbose + hipJitOptionGenerateLineInfo, ///< CUDA Only Generate line number information + hipJitOptionCacheMode, ///< CUDA Only Set cache mode + hipJitOptionSm3xOpt, ///< @deprecated CUDA Only New SM3X option. + hipJitOptionFastCompile, ///< CUDA Only Set fast compile + hipJitOptionGlobalSymbolNames, ///< CUDA Only Array of device symbol names to be relocated to the host + hipJitOptionGlobalSymbolAddresses, ///< CUDA Only Array of host addresses to be relocated to the device + hipJitOptionGlobalSymbolCount, ///< CUDA Only Number of symbol count. + hipJitOptionLto, ///< @deprecated CUDA Only Enable link-time optimization for device code + hipJitOptionFtz, ///< @deprecated CUDA Only Set single-precision denormals. + hipJitOptionPrecDiv, ///< @deprecated CUDA Only Set single-precision floating-point division + ///< and reciprocals + hipJitOptionPrecSqrt, ///< @deprecated CUDA Only Set single-precision floating-point square root + hipJitOptionFma, ///< @deprecated CUDA Only Enable floating-point multiplies and + ///< adds/subtracts operations + hipJitOptionPositionIndependentCode, ///< CUDA Only Generates Position Independent code + hipJitOptionMinCTAPerSM, ///< CUDA Only Hints to JIT compiler the minimum number of CTAs frin kernel's + ///< grid to be mapped to SM + hipJitOptionMaxThreadsPerBlock, ///< CUDA only Maximum number of threads in a thread block + hipJitOptionOverrideDirectiveValues, ///< Cuda only Override Directive values + hipJitOptionNumOptions, ///< Number of options + hipJitOptionIRtoISAOptExt = 10000, ///< Hip Only Linker options to be passed on to compiler + hipJitOptionIRtoISAOptCountExt, ///< Hip Only Count of linker options to be passed on to compiler +} hipJitOption; +/** + * hipJitInputType + */ +typedef enum hipJitInputType { + hipJitInputCubin = 0, ///< Cuda only Input cubin + hipJitInputPtx, ///< Cuda only Input PTX + hipJitInputFatBinary, ///< Cuda Only Input FAT Binary + hipJitInputObject, ///< Cuda Only Host Object with embedded device code + hipJitInputLibrary, ///< Cuda Only Archive of Host Objects with embedded + ///< device code + hipJitInputNvvm, ///< @deprecated Cuda only High Level intermediate + ///< code for LTO + hipJitNumLegacyInputTypes, ///< Count of Legacy Input Types + hipJitInputLLVMBitcode = 100, ///< HIP Only LLVM Bitcode or IR assembly + hipJitInputLLVMBundledBitcode = 101, ///< HIP Only LLVM Clang Bundled Code + hipJitInputLLVMArchivesOfBundledBitcode = 102, ///< HIP Only LLVM Archive of Bundled Bitcode + hipJitInputSpirv = 103, ///< HIP Only SPIRV Code Object + hipJitNumInputTypes = 10 ///< Count of Input Types +} hipJitInputType; +/** + * hipJitCacheMode + */ +typedef enum hipJitCacheMode { + hipJitCacheOptionNone = 0, + hipJitCacheOptionCG, + hipJitCacheOptionCA +} hipJitCacheMode; +/** + * hipJitFallback + */ +typedef enum hipJitFallback { + hipJitPreferPTX = 0, + hipJitPreferBinary, +} hipJitFallback; + +// doxygen end LinkerTypes +/** + * @} + */ + +#else +#error("Must define exactly one of __HIP_PLATFORM_AMD__ or __HIP_PLATFORM_NVIDIA__"); +#endif + +#endif // HIP_INCLUDE_HIP_LINKER_TYPES_H \ No newline at end of file