OmniSciDB
a5dc49c757
|
#include <JoinLoop.h>
Public Types | |
using | HoistedFiltersCallback = std::function< llvm::BasicBlock *(llvm::BasicBlock *, llvm::BasicBlock *, const std::string &, llvm::Function *, CgenState *)> |
Public Member Functions | |
JoinLoop (const JoinLoopKind, const JoinType, const std::function< JoinLoopDomain(const std::vector< llvm::Value * > &)> &iteration_domain_codegen, const std::function< llvm::Value *(const std::vector< llvm::Value * > &)> &outer_condition_match, const std::function< void(llvm::Value *)> &found_outer_matches, const HoistedFiltersCallback &hoisted_filters, const std::function< llvm::Value *(const std::vector< llvm::Value * > &prev_iters, llvm::Value *)> &is_deleted, const bool nested_loop_join=false, const std::string &name="") | |
JoinLoopKind | kind () const |
bool | isNestedLoopJoin () const |
Static Public Member Functions | |
static llvm::BasicBlock * | codegen (const std::vector< JoinLoop > &join_loops, const std::function< llvm::BasicBlock *(const std::vector< llvm::Value * > &)> &body_codegen, llvm::Value *outer_iter, llvm::BasicBlock *exit_bb, CgenState *cgen_state) |
Static Private Member Functions | |
static std::pair < llvm::BasicBlock *, llvm::Value * > | evaluateOuterJoinCondition (const JoinLoop &join_loop, const JoinLoopDomain &iteration_domain, const std::vector< llvm::Value * > &iterators, llvm::Value *iteration_counter, llvm::Value *have_more_inner_rows, llvm::Value *found_an_outer_match_ptr, llvm::Value *current_condition_match_ptr, CgenState *cgen_state) |
Private Attributes | |
const JoinLoopKind | kind_ |
const JoinType | type_ |
const std::function < JoinLoopDomain(const std::vector< llvm::Value * > &)> | iteration_domain_codegen_ |
const std::function < llvm::Value *(const std::vector< llvm::Value * > &)> | outer_condition_match_ |
const std::function< void(llvm::Value *)> | found_outer_matches_ |
const HoistedFiltersCallback | hoisted_filters_ |
const std::function < llvm::Value *(const std::vector< llvm::Value * > &prev_iters, llvm::Value *)> | is_deleted_ |
const bool | nested_loop_join_ |
const std::string | name_ |
Definition at line 56 of file JoinLoop.h.
using JoinLoop::HoistedFiltersCallback = std::function<llvm::BasicBlock*(llvm::BasicBlock*, llvm::BasicBlock*, const std::string&, llvm::Function*, CgenState*)> |
Definition at line 62 of file JoinLoop.h.
JoinLoop::JoinLoop | ( | const JoinLoopKind | , |
const JoinType | , | ||
const std::function< JoinLoopDomain(const std::vector< llvm::Value * > &)> & | iteration_domain_codegen, | ||
const std::function< llvm::Value *(const std::vector< llvm::Value * > &)> & | outer_condition_match, | ||
const std::function< void(llvm::Value *)> & | found_outer_matches, | ||
const HoistedFiltersCallback & | hoisted_filters, | ||
const std::function< llvm::Value *(const std::vector< llvm::Value * > &prev_iters, llvm::Value *)> & | is_deleted, | ||
const bool | nested_loop_join = false , |
||
const std::string & | name = "" |
||
) |
Definition at line 25 of file JoinLoop.cpp.
References CHECK, CHECK_EQ, and LEFT.
|
static |
Definition at line 50 of file JoinLoop.cpp.
References ANTI, AUTOMATIC_IR_METADATA, CHECK, evaluateOuterJoinCondition(), get_int_type(), INNER, INVALID, CgenState::ir_builder_, LEFT, ll_bool(), ll_int(), MultiSet, CgenState::needs_error_check_, SEMI, Set, Singleton, and UpperBound.
Referenced by Executor::codegenJoinLoops(), anonymous_namespace{JoinLoopTest.cpp}::create_loop_test_function(), and anonymous_namespace{ResultSetReductionCodegen.cpp}::translate_for().
|
staticprivate |
Definition at line 313 of file JoinLoop.cpp.
References AUTOMATIC_IR_METADATA, JoinLoopDomain::element_count, found_outer_matches_, CgenState::ir_builder_, kind_, ll_bool(), name_, outer_condition_match_, JoinLoopDomain::upper_bound, and UpperBound.
Referenced by codegen().
|
inline |
|
inline |
|
private |
Definition at line 113 of file JoinLoop.h.
Referenced by evaluateOuterJoinCondition().
|
private |
Definition at line 116 of file JoinLoop.h.
|
private |
Definition at line 123 of file JoinLoop.h.
|
private |
Definition at line 106 of file JoinLoop.h.
|
private |
Definition at line 100 of file JoinLoop.h.
Referenced by evaluateOuterJoinCondition(), and kind().
|
private |
Definition at line 126 of file JoinLoop.h.
Referenced by evaluateOuterJoinCondition().
|
private |
Definition at line 125 of file JoinLoop.h.
Referenced by isNestedLoopJoin().
|
private |
Definition at line 110 of file JoinLoop.h.
Referenced by evaluateOuterJoinCondition().
|
private |
Definition at line 102 of file JoinLoop.h.