QCOR
Public Types | Public Member Functions | Protected Attributes | List of all members
qcor::QJIT Class Reference

Public Types

enum  KernelType { Regular, HetMapArg, HetMapArgWithParent }
 

Public Member Functions

const std::pair< std::string, std::string > run_syntax_handler (const std::string &quantum_kernel_src, const bool add_het_map_kernel_ctor=false)
 
void jit_compile (const std::string &quantum_kernel_src, const bool add_het_map_kernel_ctor=false, const std::vector< std::string > &kernel_dependency={}, const std::string &extra_functions_src="", std::vector< std::string > extra_headers={})
 
void jit_compile (std::unique_ptr< llvm::Module > m, std::vector< std::string > extra_shared_lib_paths={})
 
void write_cache ()
 
template<typename... Args>
void invoke (const std::string &kernel_name, Args... args)
 
template<typename... Args>
void invoke_with_parent (const std::string &kernel_name, std::shared_ptr< qcor::CompositeInstruction > parent, Args... args)
 
template<typename... Args>
void invoke_forwarding (const std::string &kernel_name, Args &&... args)
 
template<typename... Args>
void invoke_with_parent_forwarding (const std::string &kernel_name, std::shared_ptr< qcor::CompositeInstruction > parent, Args &&... args)
 
int invoke_main (int argc, char **argv)
 
void invoke_with_hetmap (const std::string &kernel_name, xacc::HeterogeneousMap &args)
 
std::shared_ptr< qcor::CompositeInstructionextract_composite_with_hetmap (const std::string name, xacc::HeterogeneousMap &m)
 
template<typename... Args>
kernel_functor_t< Args... > get_kernel (const std::string &kernel_name)
 
std::uint64_t get_kernel_function_ptr (const std::string &kernelName, KernelType subType=KernelType::Regular) const
 

Protected Attributes

std::map< std::string, std::uint64_t > kernel_name_to_f_ptr
 
std::map< std::string, std::uint64_t > kernel_name_to_f_ptr_with_parent
 
std::map< std::string, std::uint64_t > kernel_name_to_f_ptr_hetmap
 
std::map< std::string, std::uint64_t > kernel_name_to_f_ptr_parent_hetmap
 
std::unique_ptr< LLVMJITjit
 
std::unique_ptr< llvm::Module > module
 

The documentation for this class was generated from the following files: