GNU Octave  6.2.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
octave::jit_typeinfo Class Reference

#include "jit-typeinfo.h"

Collaboration diagram for octave::jit_typeinfo:

Public Member Functions

 ~jit_typeinfo (void)
 
template<typename fn_ptr_type >
jit_function create_external (fn_ptr_type fn, const llvm::Twine &name, jit_type *ret, const std::vector< jit_type * > &args) const
 

Static Public Member Functions

static const jit_operationbinary_op (int op)
 
static const jit_operationcast (jit_type *result)
 
static const jit_functioncast (jit_type *to, jit_type *from)
 
static llvm::Value * create_complex (llvm::Value *real, llvm::Value *imag)
 
static const jit_operationcreate_undef (void)
 
static const jit_operationdestroy (void)
 
static const jit_functionend (jit_value *value, jit_value *idx, jit_value *count)
 
static const jit_operationend (void)
 
static const jit_operationfor_check (void)
 
static const jit_operationfor_index (void)
 
static const jit_operationfor_init (void)
 
static jit_typeget_any (void)
 
static jit_typeget_any_ptr (void)
 
static jit_typeget_bool (void)
 
static jit_typeget_complex (void)
 
static const jit_functionget_grab (jit_type *type)
 
static jit_typeget_index (void)
 
static llvm::Type * get_index_llvm (void)
 
static jit_typeget_matrix (void)
 
static jit_typeget_range (void)
 
static const jit_functionget_release (jit_type *type)
 
static jit_typeget_scalar (void)
 
static llvm::Type * get_scalar_llvm (void)
 
static jit_typeget_scalar_ptr (void)
 
static jit_typeget_string (void)
 
static const jit_operationgrab (void)
 
static llvm::Value * insert_error_check (llvm::IRBuilderD &bld)
 
static llvm::Value * insert_interrupt_check (llvm::IRBuilderD &bld)
 
static jit_typeintN (size_t nbits)
 
static const jit_operationlogically_true (void)
 
static const jit_operationmake_range (void)
 
static llvm::Value * pack_complex (llvm::IRBuilderD &bld, llvm::Value *cplx)
 
static const jit_operationparen_subsasgn (void)
 
static const jit_operationparen_subsref (void)
 
static const jit_operationprint_value (void)
 
static jit_typeregister_new_type (const std::string &name, jit_type *parent, llvm::Type *llvm_type, bool skip_paren=false)
 
static const jit_operationrelease (void)
 
static jit_typetype_of (const octave_value &ov)
 
static const jit_operationunary_op (int op)
 
static llvm::Value * unpack_complex (llvm::IRBuilderD &bld, llvm::Value *result)
 

Private Types

typedef std::vector< jit_type * > signature_vec
 

Private Member Functions

 jit_typeinfo (void)
 
void add_binary_fcmp (jit_type *ty, int op, int llvm_op)
 
void add_binary_icmp (jit_type *ty, int op, int llvm_op)
 
void add_binary_op (jit_type *ty, int op, int llvm_op)
 
void add_builtin (const std::string &name)
 
void add_print (jit_type *ty, void *fptr)
 
llvm::Value * complex_imag (llvm::Value *cx)
 
llvm::Value * complex_imag (llvm::Value *cx, llvm::Value *imag)
 
llvm::Value * complex_new (llvm::Value *real, llvm::Value *imag)
 
llvm::Value * complex_real (llvm::Value *cx)
 
llvm::Value * complex_real (llvm::Value *cx, llvm::Value *real)
 
template<typename T >
jit_function create_external (T fn, const llvm::Twine &name, jit_type *ret, const signature_vec &args=signature_vec()) const
 
template<typename T , typename ... Args>
jit_function create_external (T fn, const llvm::Twine &name, jit_type *ret, jit_type *arg1, Args... other_args) const
 
template<typename T , typename ... Args>
jit_function create_external (T fn, const llvm::Twine &name, jit_type *ret, signature_vec &args, jit_type *arg1, Args... other_args) const
 
jit_function create_identity (jit_type *type)
 
jit_function create_internal (const llvm::Twine &name, jit_type *ret, const signature_vec &args=signature_vec()) const
 
template<typename ... Args>
jit_function create_internal (const llvm::Twine &name, jit_type *ret, jit_type *arg1, Args... other_args) const
 
template<typename ... Args>
jit_function create_internal (const llvm::Twine &name, jit_type *ret, signature_vec &args, jit_type *arg1, Args... other_args) const
 
const jit_operationdo_binary_op (int op) const
 
const jit_operationdo_cast (jit_type *to)
 
const jit_functiondo_cast (jit_type *to, jit_type *from)
 
const jit_functiondo_end (jit_value *value, jit_value *index, jit_value *count)
 
jit_typedo_get_intN (size_t nbits) const
 
llvm::Value * do_insert_error_check (llvm::IRBuilderD &bld)
 
llvm::Value * do_insert_interrupt_check (llvm::IRBuilderD &bld)
 
llvm::Value * do_pack_complex (llvm::IRBuilderD &bld, llvm::Value *cplx) const
 
jit_typedo_register_new_type (const std::string &name, jit_type *parent, llvm::Type *llvm_type, bool skip_paren=false)
 
jit_typedo_type_of (const octave_value &ov) const
 
const jit_operationdo_unary_op (int op) const
 
octave_builtinfind_builtin (const std::string &name)
 
jit_function mirror_binary (const jit_function &fn)
 
void register_generic (const std::string &name, jit_type *result, const std::vector< jit_type * > &args)
 
void register_generic (const std::string &name, jit_type *result, jit_type *arg0)
 
void register_intrinsic (const std::string &name, size_t id, jit_type *result, const std::vector< jit_type * > &args)
 
void register_intrinsic (const std::string &name, size_t id, jit_type *result, jit_type *arg0)
 
llvm::Function * wrap_complex (llvm::Function *wrap)
 

Static Private Member Functions

static jit_typeinfoinstance (void)
 

Private Attributes

friend jit_paren_subsasgn
 
friend jit_paren_subsref
 
jit_typem_any
 
jit_function m_any_call
 
jit_typem_any_ptr
 
llvm::Type * m_any_t
 
jit_modulem_base_jit_module
 
std::vector< jit_operationm_binary_ops
 
llvm::Type * m_bool_t
 
jit_typem_boolean
 
llvm::IRBuilderDm_builder
 
llvm::IRBuilderDm_builder_ptr
 
std::map< std::string, jit_type * > m_builtins
 
std::vector< jit_operationm_casts
 
jit_typem_complex
 
llvm::StructType * m_complex_ret
 
llvm::Type * m_complex_t
 
jit_operation m_create_undef_fn
 
jit_operation m_destroy_fn
 
jit_operation m_end1_fn
 
jit_operation m_end_fn
 
jit_operation m_for_check_fn
 
jit_operation m_for_index_fn
 
jit_operation m_for_init_fn
 
jit_operation m_grab_fn
 
std::vector< jit_type * > m_id_to_type
 
std::vector< jit_functionm_identities
 
jit_typem_index
 
llvm::Type * m_index_t
 
std::map< size_t, jit_type * > m_ints
 
llvm::GlobalVariable * m_lerror_state
 
llvm::GlobalVariable * m_loctave_interrupt_state
 
jit_operation m_logically_true_fn
 
jit_operation m_make_range_fn
 
jit_typem_matrix
 
llvm::StructType * m_matrix_t
 
int m_next_id
 
jit_operation m_print_fn
 
jit_typem_range
 
llvm::StructType * m_range_t
 
jit_operation m_release_fn
 
jit_typem_scalar
 
jit_typem_scalar_ptr
 
llvm::Type * m_scalar_t
 
llvm::Type * m_sig_atomic_type
 
jit_typem_string
 
llvm::Type * m_string_t
 
std::vector< jit_operationm_unary_ops
 
jit_typem_unknown_function
 
jit_paren_subsasgn paren_subsasgn_fn
 
jit_paren_subsref paren_subsref_fn
 

Static Private Attributes

static bool s_in_construction = false
 

Detailed Description

Definition at line 506 of file jit-typeinfo.h.

Member Typedef Documentation

◆ signature_vec

typedef std::vector<jit_type *> octave::jit_typeinfo::signature_vec
private

Definition at line 797 of file jit-typeinfo.h.

Constructor & Destructor Documentation

◆ ~jit_typeinfo()

octave::jit_typeinfo::~jit_typeinfo ( void  )

Definition at line 1109 of file jit-typeinfo.cc.

References m_base_jit_module, m_builder_ptr, and m_id_to_type.

◆ jit_typeinfo()

octave::jit_typeinfo::jit_typeinfo ( void  )
private

Definition at line 1124 of file jit-typeinfo.cc.

References add_binary_fcmp(), add_binary_op(), add_builtin(), octave::jit_module::add_global_mapping(), octave::jit_operation::add_overload(), add_print(), octave::jit_function::argument(), octave_value::binary_op_as_string(), octave::jit_function::call(), complex_imag(), complex_new(), complex_real(), octave::context, create_external(), octave::jit_module::create_global_variable(), create_identity(), create_internal(), do_get_intN(), do_register_new_type(), octave::jit_function::do_return(), error_state, octave::jit_convention::external, octave::jit_module::finalizeObject(), imag(), octave::jit_paren_subsref::init_paren_scalar(), octave::jit_paren_subsasgn::init_paren_scalar(), JIT_FN, len, m_any, m_any_call, m_any_ptr, m_any_t, m_base_jit_module, m_binary_ops, m_bool_t, m_boolean, m_builder, m_builtins, m_casts, m_complex, m_complex_ret, m_complex_t, m_create_undef_fn, m_destroy_fn, m_end1_fn, m_end_fn, m_for_check_fn, m_for_index_fn, m_for_init_fn, m_grab_fn, m_index, m_index_t, m_ints, m_lerror_state, m_loctave_interrupt_state, m_logically_true_fn, m_make_range_fn, m_matrix, m_matrix_t, m_range, m_range_t, m_release_fn, m_scalar, m_scalar_ptr, m_scalar_t, m_sig_atomic_type, m_string, m_string_t, m_unary_ops, m_unknown_function, octave::jit_function::mark_can_error(), octave::jit_type::mark_pointer_arg(), octave::jit_type::mark_sret(), mirror_binary(), octave::jit_function::new_block(), octave_value::num_binary_ops, octave_value::num_unary_ops, octave_interrupt_state, octave::octave_jit_binary_any_any(), octave::octave_jit_call(), octave::octave_jit_cast_any_complex(), octave::octave_jit_cast_any_matrix(), octave::octave_jit_cast_any_range(), octave::octave_jit_cast_any_scalar(), octave::octave_jit_cast_complex_any(), octave::octave_jit_cast_matrix_any(), octave::octave_jit_cast_range_any(), octave::octave_jit_cast_scalar_any(), octave::octave_jit_complex_div(), octave::octave_jit_complex_mul(), octave::octave_jit_compute_nelem(), octave::octave_jit_create_undef(), octave::octave_jit_end_matrix(), octave::octave_jit_err_nan_to_logical_conversion(), octave::octave_jit_gindex_range(), octave::octave_jit_ginvalid_index(), octave::octave_jit_grab_any(), octave::octave_jit_grab_matrix(), octave::octave_jit_paren_subsasgn_impl(), octave::octave_jit_paren_subsasgn_matrix_range(), octave::octave_jit_pow_complex_complex(), octave::octave_jit_pow_complex_scalar(), octave::octave_jit_pow_scalar_complex(), octave::octave_jit_pow_scalar_scalar(), octave::octave_jit_print_any(), octave::octave_jit_print_scalar(), octave::octave_jit_release_any(), octave::octave_jit_release_matrix(), octave_value::op_add, octave_value::op_decr, octave_value::op_div, octave_value::op_el_and, octave_value::op_el_div, octave_value::op_el_ldiv, octave_value::op_el_mul, octave_value::op_el_or, octave_value::op_el_pow, octave_value::op_eq, octave_value::op_ge, octave_value::op_gt, octave_value::op_hermitian, octave_value::op_incr, octave_value::op_ldiv, octave_value::op_le, octave_value::op_lt, octave_value::op_mul, octave_value::op_ne, octave_value::op_pow, octave_value::op_sub, octave_value::op_transpose, octave_value::op_uminus, octave_value::op_uplus, octave::jit_operation::overload(), pack_complex(), paren_subsasgn_fn, paren_subsref_fn, real(), register_generic(), register_intrinsic(), s_in_construction, octave::jit_type::set_pack(), octave::jit_type::set_packed_type(), octave::jit_type::set_unpack(), octave::jit_type::to_llvm(), octave::jit_type::type_id(), octave_value::unary_op_as_string(), and unpack_complex().

Member Function Documentation

◆ add_binary_fcmp()

void octave::jit_typeinfo::add_binary_fcmp ( jit_type ty,
int  op,
int  llvm_op 
)
private

◆ add_binary_icmp()

void octave::jit_typeinfo::add_binary_icmp ( jit_type ty,
int  op,
int  llvm_op 
)
private

◆ add_binary_op()

void octave::jit_typeinfo::add_binary_op ( jit_type ty,
int  op,
int  llvm_op 
)
private

◆ add_builtin()

void octave::jit_typeinfo::add_builtin ( const std::string &  name)
private

◆ add_print()

void octave::jit_typeinfo::add_print ( jit_type ty,
void *  fptr 
)
private

◆ binary_op()

◆ cast() [1/2]

static const jit_operation& octave::jit_typeinfo::cast ( jit_type result)
inlinestatic

◆ cast() [2/2]

static const jit_function& octave::jit_typeinfo::cast ( jit_type to,
jit_type from 
)
inlinestatic

Definition at line 708 of file jit-typeinfo.h.

References do_cast().

◆ complex_imag() [1/2]

llvm::Value * octave::jit_typeinfo::complex_imag ( llvm::Value *  cx)
private

Definition at line 2320 of file jit-typeinfo.cc.

References m_builder.

Referenced by jit_typeinfo(), and complex_new().

◆ complex_imag() [2/2]

llvm::Value * octave::jit_typeinfo::complex_imag ( llvm::Value *  cx,
llvm::Value *  imag 
)
private

Definition at line 2326 of file jit-typeinfo.cc.

References imag(), and m_builder.

◆ complex_new()

llvm::Value * octave::jit_typeinfo::complex_new ( llvm::Value *  real,
llvm::Value *  imag 
)
private

◆ complex_real() [1/2]

llvm::Value * octave::jit_typeinfo::complex_real ( llvm::Value *  cx)
private

Definition at line 2308 of file jit-typeinfo.cc.

References m_builder.

Referenced by jit_typeinfo(), and complex_new().

◆ complex_real() [2/2]

llvm::Value * octave::jit_typeinfo::complex_real ( llvm::Value *  cx,
llvm::Value *  real 
)
private

Definition at line 2314 of file jit-typeinfo.cc.

References m_builder, and real().

◆ create_complex()

static llvm::Value* octave::jit_typeinfo::create_complex ( llvm::Value *  real,
llvm::Value *  imag 
)
inlinestatic

Definition at line 739 of file jit-typeinfo.h.

References complex_new(), imag(), and real().

◆ create_external() [1/4]

template<typename fn_ptr_type >
jit_function octave::jit_typeinfo::create_external ( fn_ptr_type  fn,
const llvm::Twine &  name,
jit_type ret,
const std::vector< jit_type * > &  args 
) const

◆ create_external() [2/4]

template<typename T >
jit_function octave::jit_typeinfo::create_external ( fn,
const llvm::Twine &  name,
jit_type ret,
const signature_vec args = signature_vec() 
) const
private

◆ create_external() [3/4]

template<typename T , typename ... Args>
jit_function octave::jit_typeinfo::create_external ( fn,
const llvm::Twine &  name,
jit_type ret,
jit_type arg1,
Args...  other_args 
) const
inlineprivate

Definition at line 816 of file jit-typeinfo.h.

References name.

◆ create_external() [4/4]

template<typename T , typename ... Args>
jit_function octave::jit_typeinfo::create_external ( fn,
const llvm::Twine &  name,
jit_type ret,
signature_vec args,
jit_type arg1,
Args...  other_args 
) const
inlineprivate

Definition at line 807 of file jit-typeinfo.h.

References name.

◆ create_identity()

jit_function octave::jit_typeinfo::create_identity ( jit_type type)
private

◆ create_internal() [1/3]

jit_function octave::jit_typeinfo::create_internal ( const llvm::Twine &  name,
jit_type ret,
const signature_vec args = signature_vec () 
) const
inlineprivate

◆ create_internal() [2/3]

template<typename ... Args>
jit_function octave::jit_typeinfo::create_internal ( const llvm::Twine &  name,
jit_type ret,
jit_type arg1,
Args...  other_args 
) const
inlineprivate

Definition at line 844 of file jit-typeinfo.h.

References name.

◆ create_internal() [3/3]

template<typename ... Args>
jit_function octave::jit_typeinfo::create_internal ( const llvm::Twine &  name,
jit_type ret,
signature_vec args,
jit_type arg1,
Args...  other_args 
) const
inlineprivate

Definition at line 835 of file jit-typeinfo.h.

References name.

◆ create_undef()

static const jit_operation& octave::jit_typeinfo::create_undef ( void  )
inlinestatic

Definition at line 734 of file jit-typeinfo.h.

References m_create_undef_fn.

Referenced by octave::jit_convert::create_variable().

◆ destroy()

static const jit_operation& octave::jit_typeinfo::destroy ( void  )
inlinestatic

Definition at line 668 of file jit-typeinfo.h.

References m_destroy_fn.

Referenced by octave::jit_convert::jit_convert().

◆ do_binary_op()

const jit_operation& octave::jit_typeinfo::do_binary_op ( int  op) const
inlineprivate

Definition at line 756 of file jit-typeinfo.h.

Referenced by binary_op().

◆ do_cast() [1/2]

const jit_operation& octave::jit_typeinfo::do_cast ( jit_type to)
inlineprivate

Definition at line 768 of file jit-typeinfo.h.

References octave::jit_type::type_id().

Referenced by cast(), and register_generic().

◆ do_cast() [2/2]

const jit_function& octave::jit_typeinfo::do_cast ( jit_type to,
jit_type from 
)
inlineprivate

Definition at line 780 of file jit-typeinfo.h.

◆ do_end()

const jit_function & octave::jit_typeinfo::do_end ( jit_value value,
jit_value index,
jit_value count 
)
private

◆ do_get_intN()

jit_type * octave::jit_typeinfo::do_get_intN ( size_t  nbits) const
private

Definition at line 2026 of file jit-typeinfo.cc.

References m_ints.

Referenced by jit_typeinfo(), add_print(), intN(), and register_generic().

◆ do_insert_error_check()

llvm::Value * octave::jit_typeinfo::do_insert_error_check ( llvm::IRBuilderD bld)
private

Definition at line 2139 of file jit-typeinfo.cc.

References m_lerror_state.

Referenced by insert_error_check().

◆ do_insert_interrupt_check()

llvm::Value * octave::jit_typeinfo::do_insert_interrupt_check ( llvm::IRBuilderD bld)
private

Definition at line 2145 of file jit-typeinfo.cc.

References m_loctave_interrupt_state.

Referenced by insert_interrupt_check().

◆ do_pack_complex()

llvm::Value * octave::jit_typeinfo::do_pack_complex ( llvm::IRBuilderD bld,
llvm::Value *  cplx 
) const
private

Definition at line 2280 of file jit-typeinfo.cc.

References imag(), m_complex_ret, and real().

Referenced by pack_complex().

◆ do_register_new_type()

jit_type * octave::jit_typeinfo::do_register_new_type ( const std::string &  name,
jit_type parent,
llvm::Type *  llvm_type,
bool  skip_paren = false 
)
private

Definition at line 2006 of file jit-typeinfo.cc.

References m_casts, m_id_to_type, m_identities, m_next_id, and name.

Referenced by jit_typeinfo(), add_builtin(), and register_new_type().

◆ do_type_of()

◆ do_unary_op()

const jit_operation& octave::jit_typeinfo::do_unary_op ( int  op) const
inlineprivate

Definition at line 762 of file jit-typeinfo.h.

Referenced by unary_op().

◆ end() [1/2]

static const jit_function& octave::jit_typeinfo::end ( jit_value value,
jit_value idx,
jit_value count 
)
inlinestatic

Definition at line 728 of file jit-typeinfo.h.

References do_end().

◆ end() [2/2]

static const jit_operation& octave::jit_typeinfo::end ( void  )
inlinestatic

Definition at line 723 of file jit-typeinfo.h.

References m_end_fn.

Referenced by octave::jit_magic_end::overload().

◆ find_builtin()

octave_builtin * octave::jit_typeinfo::find_builtin ( const std::string &  name)
private

◆ for_check()

static const jit_operation& octave::jit_typeinfo::for_check ( void  )
inlinestatic

Definition at line 683 of file jit-typeinfo.h.

References m_for_check_fn.

Referenced by octave::jit_convert::visit_simple_for_command().

◆ for_index()

static const jit_operation& octave::jit_typeinfo::for_index ( void  )
inlinestatic

Definition at line 688 of file jit-typeinfo.h.

References m_for_index_fn.

Referenced by octave::jit_convert::visit_simple_for_command().

◆ for_init()

static const jit_operation& octave::jit_typeinfo::for_init ( void  )
inlinestatic

Definition at line 678 of file jit-typeinfo.h.

References m_for_init_fn.

Referenced by octave::jit_convert::visit_simple_for_command().

◆ get_any()

◆ get_any_ptr()

static jit_type* octave::jit_typeinfo::get_any_ptr ( void  )
inlinestatic

Definition at line 552 of file jit-typeinfo.h.

References m_any_ptr.

Referenced by octave::jit_function_info::jit_function_info().

◆ get_bool()

static jit_type* octave::jit_typeinfo::get_bool ( void  )
inlinestatic

Definition at line 558 of file jit-typeinfo.h.

References m_boolean.

◆ get_complex()

static jit_type* octave::jit_typeinfo::get_complex ( void  )
inlinestatic

Definition at line 562 of file jit-typeinfo.h.

References m_complex.

Referenced by unpack_complex(), and octave::jit_convert::visit_constant().

◆ get_grab()

static const jit_function& octave::jit_typeinfo::get_grab ( jit_type type)
inlinestatic

Definition at line 653 of file jit-typeinfo.h.

References m_grab_fn, and octave::jit_operation::overload().

◆ get_index()

static jit_type* octave::jit_typeinfo::get_index ( void  )
inlinestatic

Definition at line 560 of file jit-typeinfo.h.

References m_index.

◆ get_index_llvm()

static llvm::Type* octave::jit_typeinfo::get_index_llvm ( void  )
inlinestatic

Definition at line 569 of file jit-typeinfo.h.

References m_index, and octave::jit_type::to_llvm().

◆ get_matrix()

static jit_type* octave::jit_typeinfo::get_matrix ( void  )
inlinestatic

Definition at line 546 of file jit-typeinfo.h.

References m_matrix.

Referenced by octave::jit_index_operation::generate().

◆ get_range()

static jit_type* octave::jit_typeinfo::get_range ( void  )
inlinestatic

Definition at line 554 of file jit-typeinfo.h.

References m_range.

Referenced by octave::jit_convert::visit_constant().

◆ get_release()

static const jit_function& octave::jit_typeinfo::get_release ( jit_type type)
inlinestatic

◆ get_scalar()

static jit_type* octave::jit_typeinfo::get_scalar ( void  )
inlinestatic

◆ get_scalar_llvm()

static llvm::Type* octave::jit_typeinfo::get_scalar_llvm ( void  )
inlinestatic

Definition at line 567 of file jit-typeinfo.h.

References m_scalar, and octave::jit_type::to_llvm().

Referenced by octave::jit_index_operation::create_arg_array().

◆ get_scalar_ptr()

static jit_type* octave::jit_typeinfo::get_scalar_ptr ( void  )
inlinestatic

Definition at line 550 of file jit-typeinfo.h.

References m_scalar_ptr.

◆ get_string()

static jit_type* octave::jit_typeinfo::get_string ( void  )
inlinestatic

Definition at line 556 of file jit-typeinfo.h.

References m_string.

◆ grab()

static const jit_operation& octave::jit_typeinfo::grab ( void  )
inlinestatic

◆ insert_error_check()

static llvm::Value* octave::jit_typeinfo::insert_error_check ( llvm::IRBuilderD bld)
inlinestatic

Definition at line 713 of file jit-typeinfo.h.

References do_insert_error_check().

Referenced by octave::jit_convert_llvm::visit().

◆ insert_interrupt_check()

static llvm::Value* octave::jit_typeinfo::insert_interrupt_check ( llvm::IRBuilderD bld)
inlinestatic

Definition at line 718 of file jit-typeinfo.h.

References do_insert_interrupt_check().

Referenced by octave::jit_convert_llvm::visit().

◆ instance()

jit_typeinfo & octave::jit_typeinfo::instance ( void  )
staticprivate

Definition at line 1098 of file jit-typeinfo.cc.

References panic_impossible, and s_in_construction.

◆ intN()

static jit_type* octave::jit_typeinfo::intN ( size_t  nbits)
inlinestatic

Definition at line 564 of file jit-typeinfo.h.

References do_get_intN().

◆ logically_true()

◆ make_range()

static const jit_operation& octave::jit_typeinfo::make_range ( void  )
inlinestatic

Definition at line 693 of file jit-typeinfo.h.

References m_make_range_fn.

Referenced by octave::jit_convert::visit_colon_expression().

◆ mirror_binary()

◆ pack_complex()

static llvm::Value* octave::jit_typeinfo::pack_complex ( llvm::IRBuilderD bld,
llvm::Value *  cplx 
)
inlinestatic

Definition at line 744 of file jit-typeinfo.h.

References do_pack_complex().

Referenced by jit_typeinfo().

◆ paren_subsasgn()

static const jit_operation& octave::jit_typeinfo::paren_subsasgn ( void  )
inlinestatic

Definition at line 620 of file jit-typeinfo.h.

References paren_subsasgn_fn.

Referenced by octave::jit_convert::resolve().

◆ paren_subsref()

static const jit_operation& octave::jit_typeinfo::paren_subsref ( void  )
inlinestatic

Definition at line 619 of file jit-typeinfo.h.

References paren_subsref_fn.

Referenced by octave::jit_convert::resolve().

◆ print_value()

static const jit_operation& octave::jit_typeinfo::print_value ( void  )
inlinestatic

Definition at line 673 of file jit-typeinfo.h.

References m_print_fn.

Referenced by octave::jit_convert::do_assign(), and octave::jit_convert::visit_statement().

◆ register_generic() [1/2]

◆ register_generic() [2/2]

void octave::jit_typeinfo::register_generic ( const std::string &  name,
jit_type result,
jit_type arg0 
)
inlineprivate

Definition at line 871 of file jit-typeinfo.h.

References name.

Referenced by jit_typeinfo().

◆ register_intrinsic() [1/2]

void octave::jit_typeinfo::register_intrinsic ( const std::string &  name,
size_t  id,
jit_type result,
const std::vector< jit_type * > &  args 
)
private

◆ register_intrinsic() [2/2]

void octave::jit_typeinfo::register_intrinsic ( const std::string &  name,
size_t  id,
jit_type result,
jit_type arg0 
)
inlineprivate

Definition at line 861 of file jit-typeinfo.h.

References name.

Referenced by jit_typeinfo().

◆ register_new_type()

static jit_type* octave::jit_typeinfo::register_new_type ( const std::string &  name,
jit_type parent,
llvm::Type *  llvm_type,
bool  skip_paren = false 
)
inlinestatic

Definition at line 525 of file jit-typeinfo.h.

References do_register_new_type(), and name.

◆ release()

static const jit_operation& octave::jit_typeinfo::release ( void  )
inlinestatic

Definition at line 658 of file jit-typeinfo.h.

References m_release_fn.

Referenced by octave::jit_infer::release_dead_phi(), and octave::jit_infer::release_temp().

◆ type_of()

◆ unary_op()

static const jit_operation& octave::jit_typeinfo::unary_op ( int  op)
inlinestatic

◆ unpack_complex()

llvm::Value * octave::jit_typeinfo::unpack_complex ( llvm::IRBuilderD bld,
llvm::Value *  result 
)
static

Definition at line 2293 of file jit-typeinfo.cc.

References get_complex(), imag(), m_complex_t, real(), and octave::jit_type::to_llvm().

Referenced by jit_typeinfo().

◆ wrap_complex()

llvm::Function* octave::jit_typeinfo::wrap_complex ( llvm::Function *  wrap)
private

Member Data Documentation

◆ jit_paren_subsasgn

friend octave::jit_typeinfo::jit_paren_subsasgn
private

Definition at line 615 of file jit-typeinfo.h.

◆ jit_paren_subsref

friend octave::jit_typeinfo::jit_paren_subsref
private

Definition at line 614 of file jit-typeinfo.h.

◆ m_any

jit_type* octave::jit_typeinfo::m_any
private

Definition at line 587 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), add_builtin(), do_type_of(), get_any(), and register_generic().

◆ m_any_call

jit_function octave::jit_typeinfo::m_any_call
private

Definition at line 923 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), and register_generic().

◆ m_any_ptr

jit_type* octave::jit_typeinfo::m_any_ptr
private

Definition at line 598 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), and get_any_ptr().

◆ m_any_t

llvm::Type* octave::jit_typeinfo::m_any_t
private

Definition at line 575 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), add_builtin(), and register_generic().

◆ m_base_jit_module

jit_module* octave::jit_typeinfo::m_base_jit_module
private

Definition at line 931 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), ~jit_typeinfo(), create_external(), and register_intrinsic().

◆ m_binary_ops

std::vector<jit_operation> octave::jit_typeinfo::m_binary_ops
private

Definition at line 908 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), add_binary_fcmp(), add_binary_icmp(), and add_binary_op().

◆ m_bool_t

llvm::Type* octave::jit_typeinfo::m_bool_t
private

Definition at line 576 of file jit-typeinfo.h.

Referenced by jit_typeinfo().

◆ m_boolean

jit_type* octave::jit_typeinfo::m_boolean
private

Definition at line 588 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), add_binary_fcmp(), add_binary_icmp(), and get_bool().

◆ m_builder

◆ m_builder_ptr

llvm::IRBuilderD* octave::jit_typeinfo::m_builder_ptr
private

Definition at line 933 of file jit-typeinfo.h.

Referenced by ~jit_typeinfo().

◆ m_builtins

std::map<std::string, jit_type *> octave::jit_typeinfo::m_builtins
private

Definition at line 906 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), add_builtin(), register_generic(), and register_intrinsic().

◆ m_casts

std::vector<jit_operation> octave::jit_typeinfo::m_casts
private

Definition at line 926 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), and do_register_new_type().

◆ m_complex

jit_type* octave::jit_typeinfo::m_complex
private

Definition at line 589 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), complex_new(), do_type_of(), and get_complex().

◆ m_complex_ret

llvm::StructType* octave::jit_typeinfo::m_complex_ret
private

Definition at line 603 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), and do_pack_complex().

◆ m_complex_t

llvm::Type* octave::jit_typeinfo::m_complex_t
private

Definition at line 577 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), and unpack_complex().

◆ m_create_undef_fn

jit_operation octave::jit_typeinfo::m_create_undef_fn
private

Definition at line 921 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), and create_undef().

◆ m_destroy_fn

jit_operation octave::jit_typeinfo::m_destroy_fn
private

Definition at line 912 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), and destroy().

◆ m_end1_fn

jit_operation octave::jit_typeinfo::m_end1_fn
private

Definition at line 919 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), and do_end().

◆ m_end_fn

jit_operation octave::jit_typeinfo::m_end_fn
private

Definition at line 920 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), do_end(), and end().

◆ m_for_check_fn

jit_operation octave::jit_typeinfo::m_for_check_fn
private

Definition at line 915 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), and for_check().

◆ m_for_index_fn

jit_operation octave::jit_typeinfo::m_for_index_fn
private

Definition at line 916 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), and for_index().

◆ m_for_init_fn

jit_operation octave::jit_typeinfo::m_for_init_fn
private

Definition at line 914 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), and for_init().

◆ m_grab_fn

jit_operation octave::jit_typeinfo::m_grab_fn
private

Definition at line 910 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), get_grab(), grab(), and register_generic().

◆ m_id_to_type

std::vector<jit_type*> octave::jit_typeinfo::m_id_to_type
private

Definition at line 534 of file jit-typeinfo.h.

Referenced by ~jit_typeinfo(), and do_register_new_type().

◆ m_identities

std::vector<jit_function> octave::jit_typeinfo::m_identities
private

Definition at line 929 of file jit-typeinfo.h.

Referenced by create_identity(), and do_register_new_type().

◆ m_index

◆ m_index_t

llvm::Type* octave::jit_typeinfo::m_index_t
private

◆ m_ints

std::map<size_t, jit_type *> octave::jit_typeinfo::m_ints
private

Definition at line 610 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), and do_get_intN().

◆ m_lerror_state

llvm::GlobalVariable* octave::jit_typeinfo::m_lerror_state
private

Definition at line 901 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), and do_insert_error_check().

◆ m_loctave_interrupt_state

llvm::GlobalVariable* octave::jit_typeinfo::m_loctave_interrupt_state
private

Definition at line 902 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), and do_insert_interrupt_check().

◆ m_logically_true_fn

jit_operation octave::jit_typeinfo::m_logically_true_fn
private

Definition at line 917 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), and logically_true().

◆ m_make_range_fn

jit_operation octave::jit_typeinfo::m_make_range_fn
private

Definition at line 918 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), and make_range().

◆ m_matrix

◆ m_matrix_t

llvm::StructType* octave::jit_typeinfo::m_matrix_t
private

Definition at line 583 of file jit-typeinfo.h.

Referenced by jit_typeinfo().

◆ m_next_id

int octave::jit_typeinfo::m_next_id
private

Definition at line 899 of file jit-typeinfo.h.

Referenced by do_register_new_type().

◆ m_print_fn

jit_operation octave::jit_typeinfo::m_print_fn
private

Definition at line 913 of file jit-typeinfo.h.

Referenced by add_print(), and print_value().

◆ m_range

jit_type* octave::jit_typeinfo::m_range
private

Definition at line 594 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), do_type_of(), and get_range().

◆ m_range_t

llvm::StructType* octave::jit_typeinfo::m_range_t
private

Definition at line 582 of file jit-typeinfo.h.

Referenced by jit_typeinfo().

◆ m_release_fn

jit_operation octave::jit_typeinfo::m_release_fn
private

Definition at line 911 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), get_release(), and release().

◆ m_scalar

◆ m_scalar_ptr

jit_type* octave::jit_typeinfo::m_scalar_ptr
private

◆ m_scalar_t

llvm::Type* octave::jit_typeinfo::m_scalar_t
private

Definition at line 579 of file jit-typeinfo.h.

Referenced by jit_typeinfo().

◆ m_sig_atomic_type

llvm::Type* octave::jit_typeinfo::m_sig_atomic_type
private

Definition at line 904 of file jit-typeinfo.h.

Referenced by jit_typeinfo().

◆ m_string

jit_type* octave::jit_typeinfo::m_string
private

Definition at line 592 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), and get_string().

◆ m_string_t

llvm::Type* octave::jit_typeinfo::m_string_t
private

Definition at line 580 of file jit-typeinfo.h.

Referenced by jit_typeinfo().

◆ m_unary_ops

std::vector<jit_operation> octave::jit_typeinfo::m_unary_ops
private

Definition at line 909 of file jit-typeinfo.h.

Referenced by jit_typeinfo().

◆ m_unknown_function

jit_type* octave::jit_typeinfo::m_unknown_function
private

Definition at line 599 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), and do_type_of().

◆ paren_subsasgn_fn

jit_paren_subsasgn octave::jit_typeinfo::paren_subsasgn_fn
private

Definition at line 625 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), and paren_subsasgn().

◆ paren_subsref_fn

jit_paren_subsref octave::jit_typeinfo::paren_subsref_fn
private

Definition at line 624 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), paren_subsref(), register_generic(), and register_intrinsic().

◆ s_in_construction

bool octave::jit_typeinfo::s_in_construction = false
staticprivate

Definition at line 519 of file jit-typeinfo.h.

Referenced by jit_typeinfo(), and instance().


The documentation for this class was generated from the following files: