GNU Octave  4.0.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Macros | Functions | Variables
jit-typeinfo.cc File Reference
#include "jit-typeinfo.h"
#include <llvm/Analysis/Verifier.h>
#include <llvm/ExecutionEngine/ExecutionEngine.h>
#include <llvm/GlobalVariable.h>
#include <llvm/LLVMContext.h>
#include <llvm/Function.h>
#include <llvm/Instructions.h>
#include <llvm/Intrinsics.h>
#include <llvm/IRBuilder.h>
#include <llvm/Support/raw_os_ostream.h>
#include "jit-ir.h"
#include "ov.h"
#include "ov-builtin.h"
#include "ov-complex.h"
#include "ov-scalar.h"
#include "pager.h"
Include dependency graph for jit-typeinfo.cc:

Go to the source code of this file.

Macros

#define __STDC_CONSTANT_MACROS
 
#define __STDC_LIMIT_MACROS
 
#define JIT_FN(fn)   engine, &fn, #fn
 

Functions

static void gripe_bad_result (void)
 
std::ostream & jit_print (std::ostream &os, jit_type *atype)
 
static void make_indices (double *indices, octave_idx_type idx_count, Array< idx_vector > &result)
 
octave_base_valueoctave_jit_binary_any_any (octave_value::binary_op op, octave_base_value *lhs, octave_base_value *rhs)
 
octave_base_valueoctave_jit_call (octave_builtin::fcn fn, size_t nargin, octave_base_value **argin, jit_type *result_type)
 
octave_base_valueoctave_jit_cast_any_complex (Complex c)
 
octave_base_valueoctave_jit_cast_any_matrix (jit_matrix *m)
 
octave_base_valueoctave_jit_cast_any_range (jit_range *rng)
 
octave_base_valueoctave_jit_cast_any_scalar (double value)
 
Complex octave_jit_cast_complex_any (octave_base_value *obv)
 
jit_matrix octave_jit_cast_matrix_any (octave_base_value *obv)
 
jit_range octave_jit_cast_range_any (octave_base_value *obv)
 
double octave_jit_cast_scalar_any (octave_base_value *obv)
 
Complex octave_jit_complex_div (Complex lhs, Complex rhs)
 
Complex octave_jit_complex_mul (Complex lhs, Complex rhs)
 
octave_idx_type octave_jit_compute_nelem (double base, double limit, double inc)
 
octave_base_valueoctave_jit_create_undef (void)
 
double octave_jit_end_matrix (jit_matrix *mat, octave_idx_type idx, octave_idx_type count)
 
void octave_jit_gindex_range (int nd, int dim, octave_idx_type iext, octave_idx_type ext)
 
void octave_jit_ginvalid_index (void)
 
octave_base_valueoctave_jit_grab_any (octave_base_value *obv)
 
jit_matrix octave_jit_grab_matrix (jit_matrix *m)
 
void octave_jit_gripe_nan_to_logical_conversion (void)
 
double octave_jit_paren_scalar (jit_matrix *mat, double *indicies, octave_idx_type idx_count)
 
jit_matrix octave_jit_paren_scalar_subsasgn (jit_matrix *mat, double *indices, octave_idx_type idx_count, double value)
 
jit_matrix octave_jit_paren_subsasgn_impl (jit_matrix *mat, octave_idx_type index, double value)
 
jit_matrix octave_jit_paren_subsasgn_matrix_range (jit_matrix *mat, jit_range *index, double value)
 
Complex octave_jit_pow_complex_complex (Complex lhs, Complex rhs)
 
Complex octave_jit_pow_complex_scalar (Complex lhs, double rhs)
 
Complex octave_jit_pow_scalar_complex (double lhs, Complex rhs)
 
Complex octave_jit_pow_scalar_scalar (double lhs, double rhs)
 
void octave_jit_print_any (const char *name, octave_base_value *obv)
 
void octave_jit_print_matrix (jit_matrix *m)
 
void octave_jit_print_scalar (const char *name, double value)
 
void octave_jit_release_any (octave_base_value *obv)
 
void octave_jit_release_matrix (jit_matrix *m)
 
std::ostream & operator<< (std::ostream &os, const jit_range &rng)
 
std::ostream & operator<< (std::ostream &os, const jit_matrix &mat)
 
std::ostream & operator<< (std::ostream &os, const jit_function &fn)
 
static int xisint (double x)
 

Variables

static llvm::LLVMContext & context = llvm::getGlobalContext ()
 

Macro Definition Documentation

#define __STDC_CONSTANT_MACROS

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

#define __STDC_LIMIT_MACROS

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

#define JIT_FN (   fn)    engine, &fn, #fn

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

Referenced by jit_typeinfo::jit_typeinfo().

Function Documentation

static void gripe_bad_result ( void  )
static

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

References error().

Referenced by octave_jit_call().

std::ostream& jit_print ( std::ostream &  os,
jit_type atype 
)

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

References jit_type::name().

static void make_indices ( double indices,
octave_idx_type  idx_count,
Array< idx_vector > &  result 
)
static

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

References Array< T >::resize().

Referenced by octave_jit_paren_scalar(), and octave_jit_paren_scalar_subsasgn().

octave_base_value* octave_jit_binary_any_any ( octave_value::binary_op  op,
octave_base_value lhs,
octave_base_value rhs 
)
octave_base_value* octave_jit_call ( octave_builtin::fcn  fn,
size_t  nargin,
octave_base_value **  argin,
jit_type result_type 
)
octave_base_value* octave_jit_cast_any_complex ( Complex  c)

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

Referenced by jit_typeinfo::jit_typeinfo().

octave_base_value* octave_jit_cast_any_matrix ( jit_matrix m)
octave_base_value* octave_jit_cast_any_range ( jit_range rng)

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

References octave_base_value::grab(), and octave_value::internal_rep().

Referenced by jit_typeinfo::jit_typeinfo().

octave_base_value* octave_jit_cast_any_scalar ( double  value)

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

Referenced by jit_typeinfo::jit_typeinfo().

Complex octave_jit_cast_complex_any ( octave_base_value obv)
jit_matrix octave_jit_cast_matrix_any ( octave_base_value obv)
jit_range octave_jit_cast_range_any ( octave_base_value obv)
double octave_jit_cast_scalar_any ( octave_base_value obv)
Complex octave_jit_complex_div ( Complex  lhs,
Complex  rhs 
)

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

References gripe_divide_by_zero().

Referenced by jit_typeinfo::jit_typeinfo().

Complex octave_jit_complex_mul ( Complex  lhs,
Complex  rhs 
)

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

Referenced by jit_typeinfo::jit_typeinfo().

octave_idx_type octave_jit_compute_nelem ( double  base,
double  limit,
double  inc 
)

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

References Range::nelem().

Referenced by jit_typeinfo::jit_typeinfo().

octave_base_value* octave_jit_create_undef ( void  )

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

References octave_base_value::grab(), and octave_value::internal_rep().

Referenced by jit_typeinfo::jit_typeinfo().

double octave_jit_end_matrix ( jit_matrix mat,
octave_idx_type  idx,
octave_idx_type  count 
)

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

References jit_array< T, U >::dimensions.

Referenced by jit_typeinfo::jit_typeinfo().

void octave_jit_gindex_range ( int  nd,
int  dim,
octave_idx_type  iext,
octave_idx_type  ext 
)
void octave_jit_ginvalid_index ( void  )

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

References gripe_invalid_index(), and gripe_library_execution_error().

Referenced by jit_typeinfo::jit_typeinfo().

octave_base_value* octave_jit_grab_any ( octave_base_value obv)

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

References octave_base_value::grab().

Referenced by jit_typeinfo::jit_typeinfo().

jit_matrix octave_jit_grab_matrix ( jit_matrix m)

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

References jit_array< T, U >::array.

Referenced by jit_typeinfo::jit_typeinfo().

void octave_jit_gripe_nan_to_logical_conversion ( void  )
double octave_jit_paren_scalar ( jit_matrix mat,
double indicies,
octave_idx_type  idx_count 
)
jit_matrix octave_jit_paren_scalar_subsasgn ( jit_matrix mat,
double indices,
octave_idx_type  idx_count,
double  value 
)
jit_matrix octave_jit_paren_subsasgn_impl ( jit_matrix mat,
octave_idx_type  index,
double  value 
)
jit_matrix octave_jit_paren_subsasgn_matrix_range ( jit_matrix mat,
jit_range index,
double  value 
)
Complex octave_jit_pow_complex_complex ( Complex  lhs,
Complex  rhs 
)

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

References octave_jit_pow_scalar_scalar(), and pow().

Referenced by jit_typeinfo::jit_typeinfo().

Complex octave_jit_pow_complex_scalar ( Complex  lhs,
double  rhs 
)

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

References octave_jit_pow_scalar_scalar(), and pow().

Referenced by jit_typeinfo::jit_typeinfo().

Complex octave_jit_pow_scalar_complex ( double  lhs,
Complex  rhs 
)

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

References octave_jit_pow_scalar_scalar(), and pow().

Referenced by jit_typeinfo::jit_typeinfo().

Complex octave_jit_pow_scalar_scalar ( double  lhs,
double  rhs 
)
void octave_jit_print_any ( const char name,
octave_base_value obv 
)

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

References octave_stdout, and octave_base_value::print_with_name().

Referenced by jit_typeinfo::jit_typeinfo().

void octave_jit_print_matrix ( jit_matrix m)

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

void octave_jit_print_scalar ( const char name,
double  value 
)

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

References octave_stdout, and octave_value::print_with_name().

Referenced by jit_typeinfo::jit_typeinfo().

void octave_jit_release_any ( octave_base_value obv)

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

References octave_base_value::release().

Referenced by jit_typeinfo::jit_typeinfo().

void octave_jit_release_matrix ( jit_matrix m)

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

References jit_array< T, U >::array.

Referenced by jit_typeinfo::jit_typeinfo().

std::ostream& operator<< ( std::ostream &  os,
const jit_range rng 
)

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

References jit_range::base, jit_range::inc, jit_range::limit, and jit_range::nelem.

std::ostream& operator<< ( std::ostream &  os,
const jit_matrix mat 
)
std::ostream& operator<< ( std::ostream &  os,
const jit_function fn 
)

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

References jit_function::call_conv, and jit_function::to_llvm().

static int xisint ( double  x)
inlinestatic

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

References D_NINT(), max(), and min().

Referenced by octave_jit_pow_scalar_scalar().

Variable Documentation

llvm::LLVMContext& context = llvm::getGlobalContext ()
static

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

Referenced by symbol_table::all_variables(), lexical_feedback::bbp_nesting_level::anon_fcn_body(), symbol_table::symbol_record::symbol_record_rep::assign(), symbol_table::symbol_record::assign(), symbol_table::assign(), lexical_feedback::bbp_nesting_level::brace(), lexical_feedback::bbp_nesting_level::bracket(), jit_function::call(), call_mex(), mex::cleanup(), lexical_feedback::bbp_nesting_level::clear(), jit_typeinfo::create_int(), octave_call_stack::do_backtrace(), octave_user_function::do_multi_index_op(), symbol_table::symbol_record::symbol_record_rep::do_non_const_unary_op(), execute_command_line_file(), execute_startup_files(), Fassignin(), Fevalin(), symbol_table::force_assign(), symbol_table::force_varref(), Fsource(), Fwarning(), lexical_feedback::bbp_nesting_level::is_anon_fcn_body(), lexical_feedback::bbp_nesting_level::is_brace(), lexical_feedback::bbp_nesting_level::is_bracket(), lexical_feedback::bbp_nesting_level::is_bracket_or_brace(), symbol_table::symbol_record::symbol_record_rep::is_defined(), symbol_table::symbol_record::is_defined(), lexical_feedback::bbp_nesting_level::is_paren(), symbol_table::symbol_record::is_undefined(), symbol_table::symbol_record::is_variable(), jit_function::jit_function(), jit_typeinfo::jit_typeinfo(), jit_function::new_block(), lexical_feedback::bbp_nesting_level::none(), lexical_feedback::bbp_nesting_level::operator=(), lexical_feedback::bbp_nesting_level::paren(), octave_call_stack::push(), lexical_feedback::bbp_nesting_level::remove(), lexical_feedback::bbp_nesting_level::reset(), safe_source_file(), symbol_table::set_scope_and_context(), symbol_table::symbol_record::symbol_record_rep::varref(), symbol_table::symbol_record::varref(), symbol_table::varref(), symbol_table::symbol_record::symbol_record_rep::varval(), symbol_table::symbol_record::varval(), and symbol_table::varval().