Example #1
0
    def init(self):
        self.tm = le.TargetMachine.new()

        # insert registered impls
        self.insert_func_defn(registry.functions)
        self.insert_attr_defn(registry.attributes)
        self.insert_func_defn(stringimpl.registry.functions)
        self.insert_attr_defn(stringimpl.registry.attributes)

        self.optimizer = self.build_pass_manager()

        # once per context
        self._fnctxtype = precompiled.get_type_named("class.impala_udf::FunctionContext")
Example #2
0
    def init(self):
        self.tm = le.TargetMachine.new()

        # insert registered impls
        self.insert_func_defn(registry.functions)
        self.insert_attr_defn(registry.attributes)
        self.insert_func_defn(stringimpl.registry.functions)
        self.insert_attr_defn(stringimpl.registry.attributes)

        self.optimizer = self.build_pass_manager()

        # once per context
        self._fnctxtype = precompiled.get_type_named(
            "class.impala_udf::FunctionContext")
Example #3
0
 def get_struct_type(self, struct):
     if hasattr(struct, '_name'):
         # our custom named structs
         return precompiled.get_type_named(struct._name)
     else:
         return super(ImpalaTargetContext, self).get_struct_type(struct)
Example #4
0
@implement("+", StringVal, StringVal)
def add_stringval(context, builder, sig, args):
    module = cgutils.get_module(builder)
    precomp_func = context._get_precompiled_function("AddStringValImpl")
    func = module.get_or_insert_function(precomp_func.type.pointee, precomp_func.name)
    fnctx_arg = context.get_arguments(cgutils.get_function(builder))[0]
    cfnctx_arg = builder.bitcast(fnctx_arg, func.args[0].type)
    [s1, s2] = args
    cs1 = _conv_numba_struct_to_clang(builder, s1, func.args[1].type)
    cs2 = _conv_numba_struct_to_clang(builder, s2, func.args[2].type)
    result = builder.call(func, [cfnctx_arg, cs1, cs2])
    return raise_return_type(context, builder, StringVal, result)


LLVM_TYPE = {
    AnyVal: precompiled.get_type_named("struct.impala_udf::AnyVal"),
    BooleanVal: precompiled.get_type_named("struct.impala_udf::BooleanVal"),
    TinyIntVal: precompiled.get_type_named("struct.impala_udf::TinyIntVal"),
    SmallIntVal: precompiled.get_type_named("struct.impala_udf::SmallIntVal"),
    IntVal: precompiled.get_type_named("struct.impala_udf::IntVal"),
    BigIntVal: precompiled.get_type_named("struct.impala_udf::BigIntVal"),
    FloatVal: precompiled.get_type_named("struct.impala_udf::FloatVal"),
    DoubleVal: precompiled.get_type_named("struct.impala_udf::DoubleVal"),
    StringVal: precompiled.get_type_named("struct.impala_udf::StringVal"),
}

TYPE_LAYOUT = {
    AnyVal: AnyValStruct,
    BooleanVal: BooleanValStruct,
    TinyIntVal: TinyIntValStruct,
    SmallIntVal: SmallIntValStruct,
Example #5
0
 def get_struct_type(self, struct):
     if hasattr(struct, '_name'):
         # our custom named structs
         return precompiled.get_type_named(struct._name)
     else:
         return super(ImpalaTargetContext, self).get_struct_type(struct)
Example #6
0
def add_stringval(context, builder, sig, args):
    module = cgutils.get_module(builder)
    precomp_func = context._get_precompiled_function("AddStringValImpl")
    func = module.get_or_insert_function(precomp_func.type.pointee,
                                         precomp_func.name)
    fnctx_arg = context.get_arguments(cgutils.get_function(builder))[0]
    cfnctx_arg = builder.bitcast(fnctx_arg, func.args[0].type)
    [s1, s2] = args
    cs1 = _conv_numba_struct_to_clang(builder, s1, func.args[1].type)
    cs2 = _conv_numba_struct_to_clang(builder, s2, func.args[2].type)
    result = builder.call(func, [cfnctx_arg, cs1, cs2])
    return raise_return_type(context, builder, StringVal, result)


LLVM_TYPE = {
    AnyVal: precompiled.get_type_named("struct.impala_udf::AnyVal"),
    BooleanVal: precompiled.get_type_named("struct.impala_udf::BooleanVal"),
    TinyIntVal: precompiled.get_type_named("struct.impala_udf::TinyIntVal"),
    SmallIntVal: precompiled.get_type_named("struct.impala_udf::SmallIntVal"),
    IntVal: precompiled.get_type_named("struct.impala_udf::IntVal"),
    BigIntVal: precompiled.get_type_named("struct.impala_udf::BigIntVal"),
    FloatVal: precompiled.get_type_named("struct.impala_udf::FloatVal"),
    DoubleVal: precompiled.get_type_named("struct.impala_udf::DoubleVal"),
    StringVal: precompiled.get_type_named("struct.impala_udf::StringVal"),
}

TYPE_LAYOUT = {
    AnyVal: AnyValStruct,
    BooleanVal: BooleanValStruct,
    TinyIntVal: TinyIntValStruct,
    SmallIntVal: SmallIntValStruct,