27 #if ! defined (octave_jit_util_h)
28 #define octave_jit_util_h 1
30 #include "octave-config.h"
32 #if defined (HAVE_LLVM)
36 #if defined (HAVE_LLVM_IR_DATALAYOUT_H) || defined (HAVE_LLVM_DATALAYOUT_H)
37 # define HAVE_LLVM_DATALAYOUT
47 #if defined (LEGACY_PASSMANAGER)
50 class FunctionPassManager;
54 class FunctionPassManager;
57 class ExecutionEngine;
70 template <
bool preserveNames>
73 template <
bool preserveNames,
typename T,
typename Inserter>
101 std::ostream&
operator<< (std::ostream& os,
const llvm::Value& v);
103 template <
typename HOLDER_T,
typename SUB_T>
109 template <
typename LIST_T,
typename NODE_T>
120 use_head->stash_value (0);
133 template <
typename LIST_T,
typename NODE_T>
154 jit_ilist *ilist =
mvalue;
155 NODE_T *sthis =
static_cast<NODE_T *
> (
this);
177 jit_ilist *ilist =
mvalue;
203 template <
typename T,
typename U>
206 return dynamic_cast<T *
> (
value);
209 #define JIT_ASSIGN_ARG(i) the_args[i] = arg ## i;
210 #define JIT_EXPAND(ret, fname, type, isconst, N) \
211 ret fname (JIT_PARAM_ARGS OCT_MAKE_DECL_LIST (type, arg, N)) isconst \
213 std::vector<type> the_args (N); \
214 OCT_ITERATE_MACRO (JIT_ASSIGN_ARG, N); \
215 return fname (JIT_PARAMS the_args); \
std::ostream & operator<<(std::ostream &os, const llvm::Value &v)
void stash_value(LIST_T *avalue)
jit_internal_list< LIST_T, NODE_T > jit_ilist
LIST_T * value(void) const
size_t use_count(void) const
NODE_T * first_use(void) const
OCTAVE_EXPORT octave_value_list or N dimensional array whose elements are all equal to the IEEE symbol zero divided by nd tex zero divided by nd ifnottex and any operation involving another NaN value(5+NaN).Note that NaN always compares not equal to NaN(NaN!
NODE_T * prev(void) const
NODE_T * next(void) const
If this string is the system will ring the terminal sometimes it is useful to be able to print the original representation of the string
jit_fail_exception(const std::string &reason)
IRBuilder< true, ConstantFolder, IRBuilderDefaultInserter< true > > IRBuilderD
virtual ~jit_internal_list(void)