15 #ifndef IMPALA_CODEGEN_CODEGEN_ANYVAL_H
16 #define IMPALA_CODEGEN_CODEGEN_ANYVAL_H
77 llvm::Function* fn, llvm::ArrayRef<llvm::Value*> args,
const char*
name =
"",
78 llvm::Value* result_ptr = NULL);
83 llvm::ArrayRef<llvm::Value*> args,
const char*
name =
"",
84 llvm::Value* result_ptr = NULL);
144 llvm::Value*
GetVal(
const char*
name =
"val");
151 void SetVal(llvm::Value* val);
168 void SetPtr(llvm::Value* ptr);
169 void SetLen(llvm::Value* len);
176 void SetDate(llvm::Value* date);
224 llvm::Value*
GetHighBits(
int num_bits, llvm::Value* v,
const char*
name =
"");
229 llvm::Value*
SetHighBits(
int num_bits, llvm::Value* src, llvm::Value* dst,
230 const char*
name =
"");
void SetFromRawValue(llvm::Value *raw_val)
static llvm::Type * GetLoweredPtrType(LlvmCodeGen *cg, const ColumnType &type)
static CodegenAnyVal CreateCallWrapped(LlvmCodeGen *cg, LlvmCodeGen::LlvmBuilder *builder, const ColumnType &type, llvm::Function *fn, llvm::ArrayRef< llvm::Value * > args, const char *name="", llvm::Value *result_ptr=NULL)
Same as above but wraps the result in a CodegenAnyVal.
llvm::Value * Eq(CodegenAnyVal *other)
Returns the i1 result of this == other. this and other must be non-null.
void SetLen(llvm::Value *len)
static const char * LLVM_TIMESTAMPVAL_NAME
void SetIsNull(llvm::Value *is_null)
Sets the 'is_null' field of the *Val.
static llvm::Type * GetUnloweredType(LlvmCodeGen *cg, const ColumnType &type)
CodegenAnyVal()
Ctor for created an uninitialized CodegenAnYVal that can be assigned to later.
static const char * LLVM_STRINGVAL_NAME
static llvm::Value * CreateCall(LlvmCodeGen *cg, LlvmCodeGen::LlvmBuilder *builder, llvm::Function *fn, llvm::ArrayRef< llvm::Value * > args, const char *name="", llvm::Value *result_ptr=NULL)
'name' optionally specifies the name of the returned value.
static const char * LLVM_FLOATVAL_NAME
llvm::Value * GetHighBits(int num_bits, llvm::Value *v, const char *name="")
void SetVal(llvm::Value *val)
llvm::Value * ToNativeValue()
static llvm::Type * GetUnloweredPtrType(LlvmCodeGen *cg, const ColumnType &type)
void SetDate(llvm::Value *date)
Setters for TimestampVals.
static const char * LLVM_BIGINTVAL_NAME
static CodegenAnyVal GetNonNullVal(LlvmCodeGen *codegen, LlvmCodeGen::LlvmBuilder *builder, const ColumnType &type, const char *name="")
static const char * LLVM_BOOLEANVAL_NAME
llvm::Value * GetPtr()
Getters for StringVals.
LLVM code generator. This is the top level object to generate jitted code.
llvm::Value * GetUnloweredPtr()
static const char * LLVM_DOUBLEVAL_NAME
llvm::Value * SetHighBits(int num_bits, llvm::Value *src, llvm::Value *dst, const char *name="")
void SetPtr(llvm::Value *ptr)
Setters for StringVals.
void SetTimeOfDay(llvm::Value *time_of_day)
static llvm::Type * GetLoweredType(LlvmCodeGen *cg, const ColumnType &type)
static const char * LLVM_TINYINTVAL_NAME
llvm::Value * EqToNativePtr(llvm::Value *native_ptr)
llvm::Value * value()
Returns the current type-lowered value.
LlvmCodeGen::LlvmBuilder * builder_
llvm::Value * GetDate()
Getters for TimestampVals.
llvm::Value * GetVal(const char *name="val")
llvm::Value * GetIsNull(const char *name="is_null")
Gets the 'is_null' field of the *Val.
static const char * LLVM_DECIMALVAL_NAME
static const char * LLVM_INTVAL_NAME
static llvm::Value * GetNullVal(LlvmCodeGen *codegen, const ColumnType &type)
void SetFromRawPtr(llvm::Value *raw_ptr)
llvm::Value * GetTimeOfDay()
void ToNativePtr(llvm::Value *native_ptr)
static const char * LLVM_SMALLINTVAL_NAME
__int128_t int128_t
We use the c++ int128_t type. This is stored using 16 bytes and very performant.