24#include <hip/hip_common.h>
26#if !(defined(__HIP_PLATFORM_HCC__) || defined(__HIP_PLATFORM_AMD__)) && \
27 (defined(__HIP_PLATFORM_NVCC__) || defined(__HIP_PLATFORM_NVIDIA__))
28#include <hip/nvidia_detail/nvidia_hiprtc.h>
29#elif (defined(__HIP_PLATFORM_HCC__) || defined(__HIP_PLATFORM_AMD__)) && \
30 !(defined(__HIP_PLATFORM_NVCC__) || defined(__HIP_PLATFORM_NVIDIA__))
40#pragma GCC visibility push(default)
81 HIPRTC_JIT_TARGET_FROM_HIPCONTEXT,
99 HIPRTC_JIT_IR_TO_ISA_OPT_EXT = 10000,
100 HIPRTC_JIT_IR_TO_ISA_OPT_COUNT_EXT,
127typedef struct ihiprtcLinkState* hiprtcLinkState;
156typedef struct _hiprtcProgram* hiprtcProgram;
171 const char* name_expression);
189 const char** options);
215 const char** headers,
216 const char** includeNames);
248 const char* name_expression,
249 const char** lowered_name);
305hiprtcResult hiprtcGetBitcode(hiprtcProgram prog,
char* bitcode);
332 void** option_vals_pptr, hiprtcLinkState* hip_link_state_ptr);
353 const char* file_path,
unsigned int num_options,
377 void* image,
size_t image_size,
const char* name,
379 void** option_values);
409#pragma GCC visibility pop
417#error("Must define exactly one of __HIP_PLATFORM_AMD__ or __HIP_PLATFORM_NVIDIA__");
hiprtcJITInputType
Definition: hiprtc.h:106
hiprtcResult
Definition: hiprtc.h:52
hiprtcJIT_option
Definition: hiprtc.h:72
@ HIPRTC_JIT_NUM_LEGACY_INPUT_TYPES
Number of legacy input type.
Definition: hiprtc.h:113
@ HIPRTC_JIT_INPUT_CUBIN
Input cubin.
Definition: hiprtc.h:107
@ HIPRTC_JIT_INPUT_PTX
Input PTX.
Definition: hiprtc.h:108
@ HIPRTC_JIT_INPUT_FATBINARY
Input fat binary.
Definition: hiprtc.h:109
@ HIPRTC_JIT_INPUT_LIBRARY
Input library.
Definition: hiprtc.h:111
@ HIPRTC_JIT_INPUT_LLVM_BUNDLED_BITCODE
LLVM bundled bitcode.
Definition: hiprtc.h:115
@ HIPRTC_JIT_INPUT_NVVM
Input NVVM.
Definition: hiprtc.h:112
@ HIPRTC_JIT_INPUT_LLVM_BITCODE
LLVM bitcode.
Definition: hiprtc.h:114
@ HIPRTC_JIT_INPUT_OBJECT
Input object.
Definition: hiprtc.h:110
@ HIPRTC_JIT_INPUT_LLVM_ARCHIVES_OF_BUNDLED_BITCODE
LLVM archives of boundled bitcode.
Definition: hiprtc.h:116
@ HIPRTC_ERROR_PROGRAM_CREATION_FAILURE
Failed to create program.
Definition: hiprtc.h:55
@ HIPRTC_ERROR_INVALID_PROGRAM
Invalid program.
Definition: hiprtc.h:57
@ HIPRTC_ERROR_NO_NAME_EXPRESSIONS_AFTER_COMPILATION
No name expression after compilation.
Definition: hiprtc.h:61
@ HIPRTC_ERROR_INVALID_OPTION
Invalid option.
Definition: hiprtc.h:58
@ HIPRTC_ERROR_INVALID_INPUT
Invalid input.
Definition: hiprtc.h:56
@ HIPRTC_ERROR_NAME_EXPRESSION_NOT_VALID
Invalid name expression.
Definition: hiprtc.h:63
@ HIPRTC_ERROR_NO_LOWERED_NAMES_BEFORE_COMPILATION
No lowered names before compilation.
Definition: hiprtc.h:62
@ HIPRTC_SUCCESS
Success.
Definition: hiprtc.h:53
@ HIPRTC_ERROR_BUILTIN_OPERATION_FAILURE
Failed in builtin operation.
Definition: hiprtc.h:60
@ HIPRTC_ERROR_INTERNAL_ERROR
Internal error.
Definition: hiprtc.h:64
@ HIPRTC_ERROR_COMPILATION
Compilation error.
Definition: hiprtc.h:59
@ HIPRTC_ERROR_OUT_OF_MEMORY
Out of memory.
Definition: hiprtc.h:54
@ HIPRTC_ERROR_LINKING
Error in linking.
Definition: hiprtc.h:65
@ HIPRTC_JIT_FAST_COMPILE
Fast compile.
Definition: hiprtc.h:89
@ HIPRTC_JIT_INFO_LOG_BUFFER
Log buffer info.
Definition: hiprtc.h:76
@ HIPRTC_JIT_WALL_TIME
Time from aall clock.
Definition: hiprtc.h:75
@ HIPRTC_JIT_ERROR_LOG_BUFFER
Log buffer error.
Definition: hiprtc.h:78
@ HIPRTC_JIT_GENERATE_LINE_INFO
Generate line information.
Definition: hiprtc.h:86
@ HIPRTC_JIT_TARGET
JIT target.
Definition: hiprtc.h:82
@ HIPRTC_JIT_LOG_VERBOSE
Log verbose.
Definition: hiprtc.h:85
@ HIPRTC_JIT_INFO_LOG_BUFFER_SIZE_BYTES
Log buffer size in bytes.
Definition: hiprtc.h:77
@ HIPRTC_JIT_PREC_DIV
Prec_VIV.
Definition: hiprtc.h:95
@ HIPRTC_JIT_ERROR_LOG_BUFFER_SIZE_BYTES
Log buffer size in bytes.
Definition: hiprtc.h:79
@ HIPRTC_JIT_GENERATE_DEBUG_INFO
Generate debug information.
Definition: hiprtc.h:84
@ HIPRTC_JIT_THREADS_PER_BLOCK
Thread per block.
Definition: hiprtc.h:74
@ HIPRTC_JIT_MAX_REGISTERS
Maximum registers.
Definition: hiprtc.h:73
@ HIPRTC_JIT_NUM_OPTIONS
Number of options.
Definition: hiprtc.h:98
@ HIPRTC_JIT_NEW_SM3X_OPT
New SM3X option.
Definition: hiprtc.h:88
@ HIPRTC_JIT_OPTIMIZATION_LEVEL
Optimization level.
Definition: hiprtc.h:80
@ HIPRTC_JIT_GLOBAL_SYMBOL_NAMES
Global symbol names.
Definition: hiprtc.h:90
@ HIPRTC_JIT_FTZ
FTZ.
Definition: hiprtc.h:94
@ HIPRTC_JIT_GLOBAL_SYMBOL_COUNT
Global symbol count.
Definition: hiprtc.h:92
@ HIPRTC_JIT_CACHE_MODE
Cache mode.
Definition: hiprtc.h:87
@ HIPRTC_JIT_FALLBACK_STRATEGY
Fallback strategy.
Definition: hiprtc.h:83
@ HIPRTC_JIT_PREC_SQRT
PREC_SQRT.
Definition: hiprtc.h:96
@ HIPRTC_JIT_GLOBAL_SYMBOL_ADDRESS
Global symbol address.
Definition: hiprtc.h:91
@ HIPRTC_JIT_LTO
LTO.
Definition: hiprtc.h:93
@ HIPRTC_JIT_FMA
FMA.
Definition: hiprtc.h:97
hiprtcResult hiprtcAddNameExpression(hiprtcProgram prog, const char *name_expression)
Adds the given name exprssion to the runtime compilation program.
hiprtcResult hiprtcLinkComplete(hiprtcLinkState hip_link_state, void **bin_out, size_t *size_out)
Completes the linking of the given program.
hiprtcResult hiprtcLinkAddFile(hiprtcLinkState hip_link_state, hiprtcJITInputType input_type, const char *file_path, unsigned int num_options, hiprtcJIT_option *options_ptr, void **option_values)
Adds a file with bit code to be linked with options.
hiprtcResult hiprtcGetLoweredName(hiprtcProgram prog, const char *name_expression, const char **lowered_name)
Gets the lowered (mangled) name from an instance of hiprtcProgram with the given input parameters,...
const char * hiprtcGetErrorString(hiprtcResult result)
Returns text string message to explain the error which occurred.
hiprtcResult hiprtcCreateProgram(hiprtcProgram *prog, const char *src, const char *name, int numHeaders, const char **headers, const char **includeNames)
Creates an instance of hiprtcProgram with the given input parameters, and sets the output hiprtcProgr...
hiprtcResult hiprtcLinkCreate(unsigned int num_options, hiprtcJIT_option *option_ptr, void **option_vals_pptr, hiprtcLinkState *hip_link_state_ptr)
Creates the link instance via hiprtc APIs.
hiprtcResult hiprtcGetCodeSize(hiprtcProgram prog, size_t *codeSizeRet)
Gets the size of compilation binary by the runtime compilation program instance.
hiprtcResult hiprtcLinkDestroy(hiprtcLinkState hip_link_state)
Deletes the link instance via hiprtc APIs.
hiprtcResult hiprtcGetProgramLog(hiprtcProgram prog, char *log)
Gets the log generated by the runtime compilation program instance.
hiprtcResult hiprtcCompileProgram(hiprtcProgram prog, int numOptions, const char **options)
Compiles the given runtime compilation program.
hiprtcResult hiprtcLinkAddData(hiprtcLinkState hip_link_state, hiprtcJITInputType input_type, void *image, size_t image_size, const char *name, unsigned int num_options, hiprtcJIT_option *options_ptr, void **option_values)
Completes the linking of the given program.
hiprtcResult hiprtcGetBitcodeSize(hiprtcProgram prog, size_t *bitcode_size)
Gets the size of compiled bitcode by the runtime compilation program instance.
hiprtcResult hiprtcDestroyProgram(hiprtcProgram *prog)
Destroys an instance of given hiprtcProgram.
hiprtcResult hiprtcGetCode(hiprtcProgram prog, char *code)
Gets the pointer of compilation binary by the runtime compilation program instance.
hiprtcResult hiprtcVersion(int *major, int *minor)
Sets the parameters as major and minor version.