OmniSciDB  c0231cc57d
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CodeGenerator.h File Reference
#include <llvm/IR/Value.h>
#include "../Analyzer/Analyzer.h"
#include "Execute.h"
+ Include dependency graph for CodeGenerator.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.


class  CodeGenerator
struct  CodeGenerator::GPUTarget
struct  CodeGenerator::ExecutorRequired
struct  CodeGenerator::NullCheckCodegen
struct  CodeGenerator::ArgNullcheckBBs
class  ScalarCodeGenerator
struct  ScalarCodeGenerator::CompiledExpression


std::unique_ptr< llvm::Module > runtime_module_shallow_copy (CgenState *cgen_state)
std::vector< llvm::Value * > generate_column_heads_load (const int num_columns, llvm::Value *byte_stream_arg, llvm::IRBuilder<> &ir_builder, llvm::LLVMContext &ctx)

Function Documentation

std::vector<llvm::Value*> generate_column_heads_load ( const int  num_columns,
llvm::Value *  byte_stream_arg,
llvm::IRBuilder<> &  ir_builder,
llvm::LLVMContext &  ctx 

Loads individual columns from a single, packed pointers buffer (the byte stream arg)

Definition at line 3321 of file NativeCodegen.cpp.

Referenced by TableFunctionCompilationContext::generateEntryPoint().

3324  {
3325  CHECK(byte_stream_arg);
3326  const auto max_col_local_id = num_columns - 1;
3328  std::vector<llvm::Value*> col_heads;
3329  for (int col_id = 0; col_id <= max_col_local_id; ++col_id) {
3330  auto* gep = ir_builder.CreateGEP(
3331  byte_stream_arg->getType()->getScalarType()->getPointerElementType(),
3332  byte_stream_arg,
3333  llvm::ConstantInt::get(llvm::Type::getInt32Ty(ctx), col_id));
3334  col_heads.emplace_back(
3335  ir_builder.CreateLoad(gep->getType()->getPointerElementType(), gep));
3336  }
3337  return col_heads;
3338 }
#define CHECK(condition)
Definition: Logger.h:222

+ Here is the caller graph for this function:

std::unique_ptr<llvm::Module> runtime_module_shallow_copy ( CgenState cgen_state)

Makes a shallow copy (just declarations) of the runtime module. Function definitions are cloned only if they're used from the generated code.