Class ScalarCodeGenerator

class ScalarCodeGenerator : public CodeGenerator

Public Types

using ColumnMap = std::unordered_map<InputColDescriptor, std::shared_ptr<Analyzer::ColumnVar>>

Public Functions

ScalarCodeGenerator(std::unique_ptr<llvm::Module> llvm_module)
ScalarCodeGenerator::CompiledExpression compile(const Analyzer::Expr *expr, const bool fetch_columns, const CompilationOptions &co)
std::vector<void *> generateNativeCode(Executor *executor, const CompiledExpression &compiled_expression, const CompilationOptions &co)
CudaMgr_Namespace::CudaMgr *getCudaMgr() const

Private Functions

std::vector<llvm::Value *> codegenColumn(const Analyzer::ColumnVar *column, const bool fetch_column, const CompilationOptions &co)
ScalarCodeGenerator::ColumnMap prepare(const Analyzer::Expr *expr)
std::vector<void *> generateNativeGPUCode(Executor *executor, llvm::Function *func, llvm::Function *wrapper_func, const CompilationOptions &co)

Private Members

std::unique_ptr<llvm::Module> module_
ExecutionEngineWrapper execution_engine_
std::unique_ptr<CgenState> own_cgen_state_
std::unique_ptr<PlanState> own_plan_state_
std::unique_ptr<CudaMgr_Namespace::CudaMgr> cuda_mgr_
std::shared_ptr<GpuCompilationContext> gpu_compilation_context_
std::unique_ptr<llvm::TargetMachine> nvptx_target_machine_
struct CompiledExpression

Public Members

llvm::Function *func
llvm::Function *wrapper_func
std::vector<std::shared_ptr<Analyzer::ColumnVar>> inputs