Struct CgenState

struct CgenState

Public Types

using LiteralValue = boost::variant<int8_t, int16_t, int32_t, int64_t, float, double, std::pair<std::string, int>, std::string, std::vector<double>, std::vector<int32_t>, std::vector<int8_t>, std::pair<std::vector<int8_t>, int>>
using LiteralValues = std::vector<LiteralValue>

Public Functions

CgenState(const size_t num_query_infos, const bool contains_left_deep_outer_join, Executor *executor)
CgenState(const size_t num_query_infos, const bool contains_left_deep_outer_join)
CgenState(llvm::LLVMContext &context)
size_t getOrAddLiteral(const Analyzer::Constant *constant, const EncodingType enc_type, const int dict_id, const int device_id)
const std::unordered_map<int, LiteralValues> &getLiterals() const
llvm::Value *addStringConstant(const std::string &str)
const StringDictionaryTranslationMgr *moveStringDictionaryTranslationMgr(std::unique_ptr<const StringDictionaryTranslationMgr> &&str_dict_translation_mgr)
const InValuesBitmap *addInValuesBitmap(std::unique_ptr<InValuesBitmap> &in_values_bitmap)
void moveInValuesBitmap(std::unique_ptr<const InValuesBitmap> &in_values_bitmap)
llvm::Value *emitExternalCall(const std::string &fname, llvm::Type *ret_type, const std::vector<llvm::Value *> args, const std::vector<llvm::Attribute::AttrKind> &fnattrs = {}, const bool has_struct_return = false)
llvm::Value *emitCall(const std::string &fname, const std::vector<llvm::Value *> &args)
size_t getLiteralBufferUsage(const int device_id)
llvm::Value *castToTypeIn(llvm::Value *val, const size_t bit_width)
std::pair<llvm::ConstantInt *, llvm::ConstantInt *> inlineIntMaxMin(const size_t byte_width, const bool is_signed)
llvm::ConstantInt *inlineIntNull(const SQLTypeInfo &type_info)
llvm::ConstantFP *inlineFpNull(const SQLTypeInfo &type_info)
llvm::Constant *inlineNull(const SQLTypeInfo &ti)
template<class T>
llvm::ConstantInt *llInt(const T v) const
llvm::ConstantFP *llFp(const float v) const
llvm::ConstantFP *llFp(const double v) const
llvm::ConstantInt *llBool(const bool v) const
void emitErrorCheck(llvm::Value *condition, llvm::Value *errorCode, std::string label)
std::vector<std::string> gpuFunctionsToReplace(llvm::Function *fn)
void replaceFunctionForGpu(const std::string &fcn_to_replace, llvm::Function *fn)
std::shared_ptr<Executor> getExecutor() const
llvm::LLVMContext &getExecutorContext() const
void set_module_shallow_copy(const std::unique_ptr<llvm::Module> &module, bool always_clone = false)
void maybeCloneFunctionRecursive(llvm::Function *fn)

Public Members

size_t executor_id_
llvm::Module *module_
llvm::Function *row_func_
llvm::Function *filter_func_
llvm::Function *current_func_
llvm::BasicBlock *row_func_bb_
llvm::BasicBlock *filter_func_bb_
llvm::CallInst *row_func_call_
llvm::CallInst *filter_func_call_
std::vector<llvm::Function *> helper_functions_
llvm::LLVMContext &context_
llvm::ValueToValueMapTy vmap_
llvm::IRBuilder ir_builder_
std::unordered_map<int, std::vector<llvm::Value *>> fetch_cache_
std::vector<FunctionOperValue> ext_call_cache_
std::vector<llvm::Value *> group_by_expr_cache_
std::vector<llvm::Value *> str_constants_
std::vector<llvm::Value *> frag_offsets_
const bool contains_left_deep_outer_join_
std::vector<llvm::Value *> outer_join_match_found_per_level_
std::unordered_map<int, llvm::Value *> scan_idx_to_hash_pos_
InsertionOrderedMap filter_func_args_
std::vector<std::unique_ptr<const InValuesBitmap>> in_values_bitmaps_
std::vector<std::unique_ptr<const StringDictionaryTranslationMgr>> str_dict_translation_mgrs_
std::map<std::pair<llvm::Value *, llvm::Value *>, ArrayLoadCodegen> array_load_cache_
std::unordered_map<std::string, llvm::Value *> geo_target_cache_
bool needs_error_check_
bool needs_geos_
llvm::Function *query_func_
llvm::IRBuilder query_func_entry_ir_builder_
std::unordered_map<int, std::vector<llvm::Value *>> query_func_literal_loads_
std::unordered_map<llvm::Value *, HoistedLiteralLoadLocator> row_func_hoisted_literals_

Public Static Functions

static size_t literalBytes(const CgenState::LiteralValue &lit)
static size_t addAligned(const size_t off_in, const size_t alignment)

Private Functions

template<class T>
size_t getOrAddLiteral(const T &val, const int device_id)

Private Members

std::unordered_map<int, LiteralValues> literals_
std::unordered_map<int, size_t> literal_bytes_
struct FunctionOperValue

Public Members

const Analyzer::FunctionOper *foper
llvm::Value *lv
struct HoistedLiteralLoadLocator

Public Members

int offset_in_literal_buffer
int index_of_literal_load