src/cpp/analysis/VisitDollarVar.cpp \
src/cpp/analysis/VisitVarDec.cpp \
src/cpp/analysis/XBlock.cpp \
-src/cpp/jit/JITVisitor.cpp \
-src/cpp/jit/JITValues.cpp \
-src/cpp/jit/jit_operations.cpp \
-src/cpp/jit/GlobalCFunctions.cpp \
src/cpp/analysis/check_____dotpower____.cpp \
src/cpp/analysis/check_rand.cpp \
src/cpp/analysis/check_____ge____.cpp \
src/cpp/analysis/check_sum.cpp \
src/cpp/analysis/check_____ldivide____.cpp \
src/cpp/analysis/check_acos.cpp \
-src/cpp/analysis/check_____dottimes____.cpp
+src/cpp/analysis/check_____dottimes____.cpp \
+src/cpp/jit/JITVisitor.cpp \
+src/cpp/jit/JITComplexVal.cpp \
+src/cpp/jit/MemoryManager.cpp \
+src/cpp/jit/JITCallExp.cpp \
+src/cpp/jit/JITForExp.cpp \
+src/cpp/jit/JITCall.cpp \
+src/cpp/jit/JITSize.cpp \
+src/cpp/jit/JITZeros.cpp \
+src/cpp/jit/JITBinOpCall.cpp \
+src/cpp/jit/JITUnaryOpCall.cpp \
+src/cpp/jit/JITOpExp.cpp \
+src/cpp/jit/JITShortcutBinOpCall.cpp \
+src/cpp/jit/ShortcutEval.cpp \
+src/cpp/jit/JITIfExp.cpp \
+src/cpp/jit/JITWhileExp.cpp \
+src/cpp/jit/JITBreakContinueExps.cpp \
+src/cpp/jit/JITSelectExp.cpp \
+src/cpp/jit/JITIntSelectExp.cpp \
+src/cpp/jit/JITOptimizedCall1.cpp \
+src/cpp/jit/JITSign.cpp \
+src/cpp/jit/JITSqrt.cpp \
+src/cpp/jit/JITLog.cpp \
+src/cpp/jit/JITAbs.cpp \
+src/cpp/jit/JITAngle.cpp \
+src/cpp/jit/JITReal.cpp \
+src/cpp/jit/JITImag.cpp \
+src/cpp/jit/JITImult.cpp \
+src/cpp/jit/JITConj.cpp \
+src/cpp/jit/JITFloor.cpp \
+src/cpp/jit/JITCeil.cpp \
+src/cpp/jit/JITRound.cpp \
+src/cpp/jit/JITAddition.cpp \
+src/cpp/jit/JITSubtraction.cpp \
+src/cpp/jit/JITOpposite.cpp \
+src/cpp/jit/JITMultiplication.cpp \
+src/cpp/jit/JITEquality.cpp \
+src/cpp/jit/JITShortcutOps.cpp \
+src/cpp/jit/JITNotEquality.cpp \
+src/cpp/jit/JITComparisons.cpp \
+src/cpp/jit/JITNegation.cpp \
+src/cpp/jit/JITRDivision.cpp \
+src/cpp/jit/JITPower.cpp \
+src/cpp/jit/FunctionSignature.cpp \
+src/cpp/jit/ScilabJITEventListener.cpp \
+src/cpp/jit/BaseFunctions1.cpp \
+src/cpp/jit/BaseFunctions2.cpp
if ENABLE_DEBUG
-I$(top_srcdir)/modules/localization/includes \
-I$(top_srcdir)/modules/io/includes \
-I$(top_srcdir)/modules/fileio/includes \
+ -I$(top_srcdir)/modules/special_functions/src/cpp \
$(LLVM_INCLUDE) \
$(LLVM_CPPFLAGS) \
$(LLVM_LDFLAGS) \
- $(LLVM_LIBS) \
+ $(LLVM_LIBS) \
$(EIGEN_CPPFLAGS) \
$(AM_CPPFLAGS)
src/cpp/analysis/VisitSimpleVar.cpp \
src/cpp/analysis/VisitDollarVar.cpp \
src/cpp/analysis/VisitVarDec.cpp src/cpp/analysis/XBlock.cpp \
- src/cpp/jit/JITVisitor.cpp src/cpp/jit/JITValues.cpp \
- src/cpp/jit/jit_operations.cpp \
- src/cpp/jit/GlobalCFunctions.cpp \
src/cpp/analysis/check_____dotpower____.cpp \
src/cpp/analysis/check_rand.cpp \
src/cpp/analysis/check_____ge____.cpp \
src/cpp/analysis/check_____ldivide____.cpp \
src/cpp/analysis/check_acos.cpp \
src/cpp/analysis/check_____dottimes____.cpp \
+ src/cpp/jit/JITVisitor.cpp src/cpp/jit/JITComplexVal.cpp \
+ src/cpp/jit/MemoryManager.cpp src/cpp/jit/JITCallExp.cpp \
+ src/cpp/jit/JITForExp.cpp src/cpp/jit/JITCall.cpp \
+ src/cpp/jit/JITSize.cpp src/cpp/jit/JITZeros.cpp \
+ src/cpp/jit/JITBinOpCall.cpp src/cpp/jit/JITUnaryOpCall.cpp \
+ src/cpp/jit/JITOpExp.cpp src/cpp/jit/JITShortcutBinOpCall.cpp \
+ src/cpp/jit/ShortcutEval.cpp src/cpp/jit/JITIfExp.cpp \
+ src/cpp/jit/JITWhileExp.cpp \
+ src/cpp/jit/JITBreakContinueExps.cpp \
+ src/cpp/jit/JITSelectExp.cpp src/cpp/jit/JITIntSelectExp.cpp \
+ src/cpp/jit/JITOptimizedCall1.cpp src/cpp/jit/JITSign.cpp \
+ src/cpp/jit/JITSqrt.cpp src/cpp/jit/JITLog.cpp \
+ src/cpp/jit/JITAbs.cpp src/cpp/jit/JITAngle.cpp \
+ src/cpp/jit/JITReal.cpp src/cpp/jit/JITImag.cpp \
+ src/cpp/jit/JITImult.cpp src/cpp/jit/JITConj.cpp \
+ src/cpp/jit/JITFloor.cpp src/cpp/jit/JITCeil.cpp \
+ src/cpp/jit/JITRound.cpp src/cpp/jit/JITAddition.cpp \
+ src/cpp/jit/JITSubtraction.cpp src/cpp/jit/JITOpposite.cpp \
+ src/cpp/jit/JITMultiplication.cpp src/cpp/jit/JITEquality.cpp \
+ src/cpp/jit/JITShortcutOps.cpp src/cpp/jit/JITNotEquality.cpp \
+ src/cpp/jit/JITComparisons.cpp src/cpp/jit/JITNegation.cpp \
+ src/cpp/jit/JITRDivision.cpp src/cpp/jit/JITPower.cpp \
+ src/cpp/jit/FunctionSignature.cpp \
+ src/cpp/jit/ScilabJITEventListener.cpp \
+ src/cpp/jit/BaseFunctions1.cpp src/cpp/jit/BaseFunctions2.cpp \
src/cpp/types/inspector.cpp
am__dirstamp = $(am__leading_dot)dirstamp
@ENABLE_DEBUG_TRUE@am__objects_1 = \
src/cpp/analysis/libsciast_la-VisitDollarVar.lo \
src/cpp/analysis/libsciast_la-VisitVarDec.lo \
src/cpp/analysis/libsciast_la-XBlock.lo \
- src/cpp/jit/libsciast_la-JITVisitor.lo \
- src/cpp/jit/libsciast_la-JITValues.lo \
- src/cpp/jit/libsciast_la-jit_operations.lo \
- src/cpp/jit/libsciast_la-GlobalCFunctions.lo \
src/cpp/analysis/libsciast_la-check_____dotpower____.lo \
src/cpp/analysis/libsciast_la-check_rand.lo \
src/cpp/analysis/libsciast_la-check_____ge____.lo \
src/cpp/analysis/libsciast_la-check_____ldivide____.lo \
src/cpp/analysis/libsciast_la-check_acos.lo \
src/cpp/analysis/libsciast_la-check_____dottimes____.lo \
- $(am__objects_1)
+ src/cpp/jit/libsciast_la-JITVisitor.lo \
+ src/cpp/jit/libsciast_la-JITComplexVal.lo \
+ src/cpp/jit/libsciast_la-MemoryManager.lo \
+ src/cpp/jit/libsciast_la-JITCallExp.lo \
+ src/cpp/jit/libsciast_la-JITForExp.lo \
+ src/cpp/jit/libsciast_la-JITCall.lo \
+ src/cpp/jit/libsciast_la-JITSize.lo \
+ src/cpp/jit/libsciast_la-JITZeros.lo \
+ src/cpp/jit/libsciast_la-JITBinOpCall.lo \
+ src/cpp/jit/libsciast_la-JITUnaryOpCall.lo \
+ src/cpp/jit/libsciast_la-JITOpExp.lo \
+ src/cpp/jit/libsciast_la-JITShortcutBinOpCall.lo \
+ src/cpp/jit/libsciast_la-ShortcutEval.lo \
+ src/cpp/jit/libsciast_la-JITIfExp.lo \
+ src/cpp/jit/libsciast_la-JITWhileExp.lo \
+ src/cpp/jit/libsciast_la-JITBreakContinueExps.lo \
+ src/cpp/jit/libsciast_la-JITSelectExp.lo \
+ src/cpp/jit/libsciast_la-JITIntSelectExp.lo \
+ src/cpp/jit/libsciast_la-JITOptimizedCall1.lo \
+ src/cpp/jit/libsciast_la-JITSign.lo \
+ src/cpp/jit/libsciast_la-JITSqrt.lo \
+ src/cpp/jit/libsciast_la-JITLog.lo \
+ src/cpp/jit/libsciast_la-JITAbs.lo \
+ src/cpp/jit/libsciast_la-JITAngle.lo \
+ src/cpp/jit/libsciast_la-JITReal.lo \
+ src/cpp/jit/libsciast_la-JITImag.lo \
+ src/cpp/jit/libsciast_la-JITImult.lo \
+ src/cpp/jit/libsciast_la-JITConj.lo \
+ src/cpp/jit/libsciast_la-JITFloor.lo \
+ src/cpp/jit/libsciast_la-JITCeil.lo \
+ src/cpp/jit/libsciast_la-JITRound.lo \
+ src/cpp/jit/libsciast_la-JITAddition.lo \
+ src/cpp/jit/libsciast_la-JITSubtraction.lo \
+ src/cpp/jit/libsciast_la-JITOpposite.lo \
+ src/cpp/jit/libsciast_la-JITMultiplication.lo \
+ src/cpp/jit/libsciast_la-JITEquality.lo \
+ src/cpp/jit/libsciast_la-JITShortcutOps.lo \
+ src/cpp/jit/libsciast_la-JITNotEquality.lo \
+ src/cpp/jit/libsciast_la-JITComparisons.lo \
+ src/cpp/jit/libsciast_la-JITNegation.lo \
+ src/cpp/jit/libsciast_la-JITRDivision.lo \
+ src/cpp/jit/libsciast_la-JITPower.lo \
+ src/cpp/jit/libsciast_la-FunctionSignature.lo \
+ src/cpp/jit/libsciast_la-ScilabJITEventListener.lo \
+ src/cpp/jit/libsciast_la-BaseFunctions1.lo \
+ src/cpp/jit/libsciast_la-BaseFunctions2.lo $(am__objects_1)
libsciast_la_OBJECTS = $(am_libsciast_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
src/cpp/analysis/VisitSimpleVar.cpp \
src/cpp/analysis/VisitDollarVar.cpp \
src/cpp/analysis/VisitVarDec.cpp src/cpp/analysis/XBlock.cpp \
- src/cpp/jit/JITVisitor.cpp src/cpp/jit/JITValues.cpp \
- src/cpp/jit/jit_operations.cpp \
- src/cpp/jit/GlobalCFunctions.cpp \
src/cpp/analysis/check_____dotpower____.cpp \
src/cpp/analysis/check_rand.cpp \
src/cpp/analysis/check_____ge____.cpp \
src/cpp/analysis/check_sum.cpp \
src/cpp/analysis/check_____ldivide____.cpp \
src/cpp/analysis/check_acos.cpp \
- src/cpp/analysis/check_____dottimes____.cpp $(am__append_1)
+ src/cpp/analysis/check_____dottimes____.cpp \
+ src/cpp/jit/JITVisitor.cpp src/cpp/jit/JITComplexVal.cpp \
+ src/cpp/jit/MemoryManager.cpp src/cpp/jit/JITCallExp.cpp \
+ src/cpp/jit/JITForExp.cpp src/cpp/jit/JITCall.cpp \
+ src/cpp/jit/JITSize.cpp src/cpp/jit/JITZeros.cpp \
+ src/cpp/jit/JITBinOpCall.cpp src/cpp/jit/JITUnaryOpCall.cpp \
+ src/cpp/jit/JITOpExp.cpp src/cpp/jit/JITShortcutBinOpCall.cpp \
+ src/cpp/jit/ShortcutEval.cpp src/cpp/jit/JITIfExp.cpp \
+ src/cpp/jit/JITWhileExp.cpp \
+ src/cpp/jit/JITBreakContinueExps.cpp \
+ src/cpp/jit/JITSelectExp.cpp src/cpp/jit/JITIntSelectExp.cpp \
+ src/cpp/jit/JITOptimizedCall1.cpp src/cpp/jit/JITSign.cpp \
+ src/cpp/jit/JITSqrt.cpp src/cpp/jit/JITLog.cpp \
+ src/cpp/jit/JITAbs.cpp src/cpp/jit/JITAngle.cpp \
+ src/cpp/jit/JITReal.cpp src/cpp/jit/JITImag.cpp \
+ src/cpp/jit/JITImult.cpp src/cpp/jit/JITConj.cpp \
+ src/cpp/jit/JITFloor.cpp src/cpp/jit/JITCeil.cpp \
+ src/cpp/jit/JITRound.cpp src/cpp/jit/JITAddition.cpp \
+ src/cpp/jit/JITSubtraction.cpp src/cpp/jit/JITOpposite.cpp \
+ src/cpp/jit/JITMultiplication.cpp src/cpp/jit/JITEquality.cpp \
+ src/cpp/jit/JITShortcutOps.cpp src/cpp/jit/JITNotEquality.cpp \
+ src/cpp/jit/JITComparisons.cpp src/cpp/jit/JITNegation.cpp \
+ src/cpp/jit/JITRDivision.cpp src/cpp/jit/JITPower.cpp \
+ src/cpp/jit/FunctionSignature.cpp \
+ src/cpp/jit/ScilabJITEventListener.cpp \
+ src/cpp/jit/BaseFunctions1.cpp src/cpp/jit/BaseFunctions2.cpp \
+ $(am__append_1)
libsciast_la_CPPFLAGS = \
-I$(srcdir)/src/cpp \
-I$(srcdir)/includes/ast \
-I$(top_srcdir)/modules/localization/includes \
-I$(top_srcdir)/modules/io/includes \
-I$(top_srcdir)/modules/fileio/includes \
+ -I$(top_srcdir)/modules/special_functions/src/cpp \
$(LLVM_INCLUDE) \
$(LLVM_CPPFLAGS) \
$(LLVM_LDFLAGS) \
- $(LLVM_LIBS) \
+ $(LLVM_LIBS) \
$(EIGEN_CPPFLAGS) \
$(AM_CPPFLAGS)
src/cpp/analysis/libsciast_la-XBlock.lo: \
src/cpp/analysis/$(am__dirstamp) \
src/cpp/analysis/$(DEPDIR)/$(am__dirstamp)
-src/cpp/jit/$(am__dirstamp):
- @$(MKDIR_P) src/cpp/jit
- @: > src/cpp/jit/$(am__dirstamp)
-src/cpp/jit/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) src/cpp/jit/$(DEPDIR)
- @: > src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
-src/cpp/jit/libsciast_la-JITVisitor.lo: src/cpp/jit/$(am__dirstamp) \
- src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
-src/cpp/jit/libsciast_la-JITValues.lo: src/cpp/jit/$(am__dirstamp) \
- src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
-src/cpp/jit/libsciast_la-jit_operations.lo: \
- src/cpp/jit/$(am__dirstamp) \
- src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
-src/cpp/jit/libsciast_la-GlobalCFunctions.lo: \
- src/cpp/jit/$(am__dirstamp) \
- src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
src/cpp/analysis/libsciast_la-check_____dotpower____.lo: \
src/cpp/analysis/$(am__dirstamp) \
src/cpp/analysis/$(DEPDIR)/$(am__dirstamp)
src/cpp/analysis/libsciast_la-check_____dottimes____.lo: \
src/cpp/analysis/$(am__dirstamp) \
src/cpp/analysis/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/$(am__dirstamp):
+ @$(MKDIR_P) src/cpp/jit
+ @: > src/cpp/jit/$(am__dirstamp)
+src/cpp/jit/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) src/cpp/jit/$(DEPDIR)
+ @: > src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITVisitor.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITComplexVal.lo: \
+ src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-MemoryManager.lo: \
+ src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITCallExp.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITForExp.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITCall.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITSize.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITZeros.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITBinOpCall.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITUnaryOpCall.lo: \
+ src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITOpExp.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITShortcutBinOpCall.lo: \
+ src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-ShortcutEval.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITIfExp.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITWhileExp.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITBreakContinueExps.lo: \
+ src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITSelectExp.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITIntSelectExp.lo: \
+ src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITOptimizedCall1.lo: \
+ src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITSign.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITSqrt.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITLog.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITAbs.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITAngle.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITReal.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITImag.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITImult.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITConj.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITFloor.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITCeil.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITRound.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITAddition.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITSubtraction.lo: \
+ src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITOpposite.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITMultiplication.lo: \
+ src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITEquality.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITShortcutOps.lo: \
+ src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITNotEquality.lo: \
+ src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITComparisons.lo: \
+ src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITNegation.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITRDivision.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-JITPower.lo: src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-FunctionSignature.lo: \
+ src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-ScilabJITEventListener.lo: \
+ src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-BaseFunctions1.lo: \
+ src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
+src/cpp/jit/libsciast_la-BaseFunctions2.lo: \
+ src/cpp/jit/$(am__dirstamp) \
+ src/cpp/jit/$(DEPDIR)/$(am__dirstamp)
src/cpp/types/libsciast_la-inspector.lo: \
src/cpp/types/$(am__dirstamp) \
src/cpp/types/$(DEPDIR)/$(am__dirstamp)
@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/ast/$(DEPDIR)/libsciast_la-shortcutvisitor.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/ast/$(DEPDIR)/libsciast_la-treevisitor.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/ast/$(DEPDIR)/libsciast_la-visitor_common.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-GlobalCFunctions.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITValues.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-BaseFunctions1.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-BaseFunctions2.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-FunctionSignature.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITAbs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITAddition.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITAngle.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITBinOpCall.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITBreakContinueExps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITCall.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITCallExp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITCeil.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITComparisons.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITComplexVal.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITConj.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITEquality.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITFloor.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITForExp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITIfExp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITImag.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITImult.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITIntSelectExp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITLog.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITMultiplication.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITNegation.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITNotEquality.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITOpExp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITOpposite.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITOptimizedCall1.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITPower.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITRDivision.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITReal.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITRound.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITSelectExp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITShortcutBinOpCall.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITShortcutOps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITSign.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITSize.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITSqrt.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITSubtraction.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITUnaryOpCall.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITVisitor.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-jit_operations.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITWhileExp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-JITZeros.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-MemoryManager.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-ScilabJITEventListener.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/jit/$(DEPDIR)/libsciast_la-ShortcutEval.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/operations/$(DEPDIR)/libsciast_la-interface_addition.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/operations/$(DEPDIR)/libsciast_la-operations.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/operations/$(DEPDIR)/libsciast_la-types_addition.Plo@am__quote@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/analysis/libsciast_la-XBlock.lo `test -f 'src/cpp/analysis/XBlock.cpp' || echo '$(srcdir)/'`src/cpp/analysis/XBlock.cpp
-src/cpp/jit/libsciast_la-JITVisitor.lo: src/cpp/jit/JITVisitor.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITVisitor.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITVisitor.Tpo -c -o src/cpp/jit/libsciast_la-JITVisitor.lo `test -f 'src/cpp/jit/JITVisitor.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITVisitor.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITVisitor.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITVisitor.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITVisitor.cpp' object='src/cpp/jit/libsciast_la-JITVisitor.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITVisitor.lo `test -f 'src/cpp/jit/JITVisitor.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITVisitor.cpp
-
-src/cpp/jit/libsciast_la-JITValues.lo: src/cpp/jit/JITValues.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITValues.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITValues.Tpo -c -o src/cpp/jit/libsciast_la-JITValues.lo `test -f 'src/cpp/jit/JITValues.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITValues.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITValues.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITValues.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITValues.cpp' object='src/cpp/jit/libsciast_la-JITValues.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITValues.lo `test -f 'src/cpp/jit/JITValues.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITValues.cpp
-
-src/cpp/jit/libsciast_la-jit_operations.lo: src/cpp/jit/jit_operations.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-jit_operations.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-jit_operations.Tpo -c -o src/cpp/jit/libsciast_la-jit_operations.lo `test -f 'src/cpp/jit/jit_operations.cpp' || echo '$(srcdir)/'`src/cpp/jit/jit_operations.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-jit_operations.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-jit_operations.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/jit_operations.cpp' object='src/cpp/jit/libsciast_la-jit_operations.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-jit_operations.lo `test -f 'src/cpp/jit/jit_operations.cpp' || echo '$(srcdir)/'`src/cpp/jit/jit_operations.cpp
-
-src/cpp/jit/libsciast_la-GlobalCFunctions.lo: src/cpp/jit/GlobalCFunctions.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-GlobalCFunctions.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-GlobalCFunctions.Tpo -c -o src/cpp/jit/libsciast_la-GlobalCFunctions.lo `test -f 'src/cpp/jit/GlobalCFunctions.cpp' || echo '$(srcdir)/'`src/cpp/jit/GlobalCFunctions.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-GlobalCFunctions.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-GlobalCFunctions.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/GlobalCFunctions.cpp' object='src/cpp/jit/libsciast_la-GlobalCFunctions.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-GlobalCFunctions.lo `test -f 'src/cpp/jit/GlobalCFunctions.cpp' || echo '$(srcdir)/'`src/cpp/jit/GlobalCFunctions.cpp
-
src/cpp/analysis/libsciast_la-check_____dotpower____.lo: src/cpp/analysis/check_____dotpower____.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/analysis/libsciast_la-check_____dotpower____.lo -MD -MP -MF src/cpp/analysis/$(DEPDIR)/libsciast_la-check_____dotpower____.Tpo -c -o src/cpp/analysis/libsciast_la-check_____dotpower____.lo `test -f 'src/cpp/analysis/check_____dotpower____.cpp' || echo '$(srcdir)/'`src/cpp/analysis/check_____dotpower____.cpp
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/analysis/$(DEPDIR)/libsciast_la-check_____dotpower____.Tpo src/cpp/analysis/$(DEPDIR)/libsciast_la-check_____dotpower____.Plo
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/analysis/libsciast_la-check_____dottimes____.lo `test -f 'src/cpp/analysis/check_____dottimes____.cpp' || echo '$(srcdir)/'`src/cpp/analysis/check_____dottimes____.cpp
+src/cpp/jit/libsciast_la-JITVisitor.lo: src/cpp/jit/JITVisitor.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITVisitor.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITVisitor.Tpo -c -o src/cpp/jit/libsciast_la-JITVisitor.lo `test -f 'src/cpp/jit/JITVisitor.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITVisitor.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITVisitor.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITVisitor.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITVisitor.cpp' object='src/cpp/jit/libsciast_la-JITVisitor.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITVisitor.lo `test -f 'src/cpp/jit/JITVisitor.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITVisitor.cpp
+
+src/cpp/jit/libsciast_la-JITComplexVal.lo: src/cpp/jit/JITComplexVal.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITComplexVal.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITComplexVal.Tpo -c -o src/cpp/jit/libsciast_la-JITComplexVal.lo `test -f 'src/cpp/jit/JITComplexVal.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITComplexVal.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITComplexVal.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITComplexVal.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITComplexVal.cpp' object='src/cpp/jit/libsciast_la-JITComplexVal.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITComplexVal.lo `test -f 'src/cpp/jit/JITComplexVal.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITComplexVal.cpp
+
+src/cpp/jit/libsciast_la-MemoryManager.lo: src/cpp/jit/MemoryManager.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-MemoryManager.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-MemoryManager.Tpo -c -o src/cpp/jit/libsciast_la-MemoryManager.lo `test -f 'src/cpp/jit/MemoryManager.cpp' || echo '$(srcdir)/'`src/cpp/jit/MemoryManager.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-MemoryManager.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-MemoryManager.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/MemoryManager.cpp' object='src/cpp/jit/libsciast_la-MemoryManager.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-MemoryManager.lo `test -f 'src/cpp/jit/MemoryManager.cpp' || echo '$(srcdir)/'`src/cpp/jit/MemoryManager.cpp
+
+src/cpp/jit/libsciast_la-JITCallExp.lo: src/cpp/jit/JITCallExp.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITCallExp.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITCallExp.Tpo -c -o src/cpp/jit/libsciast_la-JITCallExp.lo `test -f 'src/cpp/jit/JITCallExp.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITCallExp.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITCallExp.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITCallExp.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITCallExp.cpp' object='src/cpp/jit/libsciast_la-JITCallExp.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITCallExp.lo `test -f 'src/cpp/jit/JITCallExp.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITCallExp.cpp
+
+src/cpp/jit/libsciast_la-JITForExp.lo: src/cpp/jit/JITForExp.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITForExp.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITForExp.Tpo -c -o src/cpp/jit/libsciast_la-JITForExp.lo `test -f 'src/cpp/jit/JITForExp.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITForExp.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITForExp.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITForExp.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITForExp.cpp' object='src/cpp/jit/libsciast_la-JITForExp.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITForExp.lo `test -f 'src/cpp/jit/JITForExp.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITForExp.cpp
+
+src/cpp/jit/libsciast_la-JITCall.lo: src/cpp/jit/JITCall.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITCall.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITCall.Tpo -c -o src/cpp/jit/libsciast_la-JITCall.lo `test -f 'src/cpp/jit/JITCall.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITCall.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITCall.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITCall.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITCall.cpp' object='src/cpp/jit/libsciast_la-JITCall.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITCall.lo `test -f 'src/cpp/jit/JITCall.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITCall.cpp
+
+src/cpp/jit/libsciast_la-JITSize.lo: src/cpp/jit/JITSize.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITSize.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITSize.Tpo -c -o src/cpp/jit/libsciast_la-JITSize.lo `test -f 'src/cpp/jit/JITSize.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITSize.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITSize.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITSize.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITSize.cpp' object='src/cpp/jit/libsciast_la-JITSize.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITSize.lo `test -f 'src/cpp/jit/JITSize.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITSize.cpp
+
+src/cpp/jit/libsciast_la-JITZeros.lo: src/cpp/jit/JITZeros.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITZeros.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITZeros.Tpo -c -o src/cpp/jit/libsciast_la-JITZeros.lo `test -f 'src/cpp/jit/JITZeros.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITZeros.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITZeros.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITZeros.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITZeros.cpp' object='src/cpp/jit/libsciast_la-JITZeros.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITZeros.lo `test -f 'src/cpp/jit/JITZeros.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITZeros.cpp
+
+src/cpp/jit/libsciast_la-JITBinOpCall.lo: src/cpp/jit/JITBinOpCall.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITBinOpCall.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITBinOpCall.Tpo -c -o src/cpp/jit/libsciast_la-JITBinOpCall.lo `test -f 'src/cpp/jit/JITBinOpCall.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITBinOpCall.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITBinOpCall.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITBinOpCall.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITBinOpCall.cpp' object='src/cpp/jit/libsciast_la-JITBinOpCall.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITBinOpCall.lo `test -f 'src/cpp/jit/JITBinOpCall.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITBinOpCall.cpp
+
+src/cpp/jit/libsciast_la-JITUnaryOpCall.lo: src/cpp/jit/JITUnaryOpCall.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITUnaryOpCall.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITUnaryOpCall.Tpo -c -o src/cpp/jit/libsciast_la-JITUnaryOpCall.lo `test -f 'src/cpp/jit/JITUnaryOpCall.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITUnaryOpCall.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITUnaryOpCall.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITUnaryOpCall.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITUnaryOpCall.cpp' object='src/cpp/jit/libsciast_la-JITUnaryOpCall.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITUnaryOpCall.lo `test -f 'src/cpp/jit/JITUnaryOpCall.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITUnaryOpCall.cpp
+
+src/cpp/jit/libsciast_la-JITOpExp.lo: src/cpp/jit/JITOpExp.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITOpExp.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITOpExp.Tpo -c -o src/cpp/jit/libsciast_la-JITOpExp.lo `test -f 'src/cpp/jit/JITOpExp.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITOpExp.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITOpExp.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITOpExp.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITOpExp.cpp' object='src/cpp/jit/libsciast_la-JITOpExp.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITOpExp.lo `test -f 'src/cpp/jit/JITOpExp.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITOpExp.cpp
+
+src/cpp/jit/libsciast_la-JITShortcutBinOpCall.lo: src/cpp/jit/JITShortcutBinOpCall.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITShortcutBinOpCall.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITShortcutBinOpCall.Tpo -c -o src/cpp/jit/libsciast_la-JITShortcutBinOpCall.lo `test -f 'src/cpp/jit/JITShortcutBinOpCall.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITShortcutBinOpCall.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITShortcutBinOpCall.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITShortcutBinOpCall.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITShortcutBinOpCall.cpp' object='src/cpp/jit/libsciast_la-JITShortcutBinOpCall.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITShortcutBinOpCall.lo `test -f 'src/cpp/jit/JITShortcutBinOpCall.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITShortcutBinOpCall.cpp
+
+src/cpp/jit/libsciast_la-ShortcutEval.lo: src/cpp/jit/ShortcutEval.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-ShortcutEval.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-ShortcutEval.Tpo -c -o src/cpp/jit/libsciast_la-ShortcutEval.lo `test -f 'src/cpp/jit/ShortcutEval.cpp' || echo '$(srcdir)/'`src/cpp/jit/ShortcutEval.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-ShortcutEval.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-ShortcutEval.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/ShortcutEval.cpp' object='src/cpp/jit/libsciast_la-ShortcutEval.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-ShortcutEval.lo `test -f 'src/cpp/jit/ShortcutEval.cpp' || echo '$(srcdir)/'`src/cpp/jit/ShortcutEval.cpp
+
+src/cpp/jit/libsciast_la-JITIfExp.lo: src/cpp/jit/JITIfExp.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITIfExp.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITIfExp.Tpo -c -o src/cpp/jit/libsciast_la-JITIfExp.lo `test -f 'src/cpp/jit/JITIfExp.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITIfExp.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITIfExp.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITIfExp.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITIfExp.cpp' object='src/cpp/jit/libsciast_la-JITIfExp.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITIfExp.lo `test -f 'src/cpp/jit/JITIfExp.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITIfExp.cpp
+
+src/cpp/jit/libsciast_la-JITWhileExp.lo: src/cpp/jit/JITWhileExp.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITWhileExp.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITWhileExp.Tpo -c -o src/cpp/jit/libsciast_la-JITWhileExp.lo `test -f 'src/cpp/jit/JITWhileExp.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITWhileExp.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITWhileExp.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITWhileExp.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITWhileExp.cpp' object='src/cpp/jit/libsciast_la-JITWhileExp.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITWhileExp.lo `test -f 'src/cpp/jit/JITWhileExp.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITWhileExp.cpp
+
+src/cpp/jit/libsciast_la-JITBreakContinueExps.lo: src/cpp/jit/JITBreakContinueExps.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITBreakContinueExps.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITBreakContinueExps.Tpo -c -o src/cpp/jit/libsciast_la-JITBreakContinueExps.lo `test -f 'src/cpp/jit/JITBreakContinueExps.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITBreakContinueExps.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITBreakContinueExps.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITBreakContinueExps.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITBreakContinueExps.cpp' object='src/cpp/jit/libsciast_la-JITBreakContinueExps.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITBreakContinueExps.lo `test -f 'src/cpp/jit/JITBreakContinueExps.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITBreakContinueExps.cpp
+
+src/cpp/jit/libsciast_la-JITSelectExp.lo: src/cpp/jit/JITSelectExp.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITSelectExp.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITSelectExp.Tpo -c -o src/cpp/jit/libsciast_la-JITSelectExp.lo `test -f 'src/cpp/jit/JITSelectExp.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITSelectExp.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITSelectExp.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITSelectExp.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITSelectExp.cpp' object='src/cpp/jit/libsciast_la-JITSelectExp.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITSelectExp.lo `test -f 'src/cpp/jit/JITSelectExp.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITSelectExp.cpp
+
+src/cpp/jit/libsciast_la-JITIntSelectExp.lo: src/cpp/jit/JITIntSelectExp.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITIntSelectExp.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITIntSelectExp.Tpo -c -o src/cpp/jit/libsciast_la-JITIntSelectExp.lo `test -f 'src/cpp/jit/JITIntSelectExp.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITIntSelectExp.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITIntSelectExp.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITIntSelectExp.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITIntSelectExp.cpp' object='src/cpp/jit/libsciast_la-JITIntSelectExp.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITIntSelectExp.lo `test -f 'src/cpp/jit/JITIntSelectExp.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITIntSelectExp.cpp
+
+src/cpp/jit/libsciast_la-JITOptimizedCall1.lo: src/cpp/jit/JITOptimizedCall1.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITOptimizedCall1.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITOptimizedCall1.Tpo -c -o src/cpp/jit/libsciast_la-JITOptimizedCall1.lo `test -f 'src/cpp/jit/JITOptimizedCall1.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITOptimizedCall1.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITOptimizedCall1.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITOptimizedCall1.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITOptimizedCall1.cpp' object='src/cpp/jit/libsciast_la-JITOptimizedCall1.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITOptimizedCall1.lo `test -f 'src/cpp/jit/JITOptimizedCall1.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITOptimizedCall1.cpp
+
+src/cpp/jit/libsciast_la-JITSign.lo: src/cpp/jit/JITSign.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITSign.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITSign.Tpo -c -o src/cpp/jit/libsciast_la-JITSign.lo `test -f 'src/cpp/jit/JITSign.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITSign.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITSign.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITSign.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITSign.cpp' object='src/cpp/jit/libsciast_la-JITSign.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITSign.lo `test -f 'src/cpp/jit/JITSign.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITSign.cpp
+
+src/cpp/jit/libsciast_la-JITSqrt.lo: src/cpp/jit/JITSqrt.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITSqrt.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITSqrt.Tpo -c -o src/cpp/jit/libsciast_la-JITSqrt.lo `test -f 'src/cpp/jit/JITSqrt.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITSqrt.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITSqrt.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITSqrt.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITSqrt.cpp' object='src/cpp/jit/libsciast_la-JITSqrt.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITSqrt.lo `test -f 'src/cpp/jit/JITSqrt.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITSqrt.cpp
+
+src/cpp/jit/libsciast_la-JITLog.lo: src/cpp/jit/JITLog.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITLog.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITLog.Tpo -c -o src/cpp/jit/libsciast_la-JITLog.lo `test -f 'src/cpp/jit/JITLog.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITLog.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITLog.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITLog.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITLog.cpp' object='src/cpp/jit/libsciast_la-JITLog.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITLog.lo `test -f 'src/cpp/jit/JITLog.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITLog.cpp
+
+src/cpp/jit/libsciast_la-JITAbs.lo: src/cpp/jit/JITAbs.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITAbs.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITAbs.Tpo -c -o src/cpp/jit/libsciast_la-JITAbs.lo `test -f 'src/cpp/jit/JITAbs.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITAbs.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITAbs.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITAbs.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITAbs.cpp' object='src/cpp/jit/libsciast_la-JITAbs.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITAbs.lo `test -f 'src/cpp/jit/JITAbs.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITAbs.cpp
+
+src/cpp/jit/libsciast_la-JITAngle.lo: src/cpp/jit/JITAngle.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITAngle.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITAngle.Tpo -c -o src/cpp/jit/libsciast_la-JITAngle.lo `test -f 'src/cpp/jit/JITAngle.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITAngle.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITAngle.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITAngle.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITAngle.cpp' object='src/cpp/jit/libsciast_la-JITAngle.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITAngle.lo `test -f 'src/cpp/jit/JITAngle.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITAngle.cpp
+
+src/cpp/jit/libsciast_la-JITReal.lo: src/cpp/jit/JITReal.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITReal.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITReal.Tpo -c -o src/cpp/jit/libsciast_la-JITReal.lo `test -f 'src/cpp/jit/JITReal.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITReal.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITReal.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITReal.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITReal.cpp' object='src/cpp/jit/libsciast_la-JITReal.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITReal.lo `test -f 'src/cpp/jit/JITReal.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITReal.cpp
+
+src/cpp/jit/libsciast_la-JITImag.lo: src/cpp/jit/JITImag.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITImag.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITImag.Tpo -c -o src/cpp/jit/libsciast_la-JITImag.lo `test -f 'src/cpp/jit/JITImag.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITImag.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITImag.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITImag.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITImag.cpp' object='src/cpp/jit/libsciast_la-JITImag.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITImag.lo `test -f 'src/cpp/jit/JITImag.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITImag.cpp
+
+src/cpp/jit/libsciast_la-JITImult.lo: src/cpp/jit/JITImult.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITImult.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITImult.Tpo -c -o src/cpp/jit/libsciast_la-JITImult.lo `test -f 'src/cpp/jit/JITImult.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITImult.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITImult.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITImult.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITImult.cpp' object='src/cpp/jit/libsciast_la-JITImult.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITImult.lo `test -f 'src/cpp/jit/JITImult.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITImult.cpp
+
+src/cpp/jit/libsciast_la-JITConj.lo: src/cpp/jit/JITConj.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITConj.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITConj.Tpo -c -o src/cpp/jit/libsciast_la-JITConj.lo `test -f 'src/cpp/jit/JITConj.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITConj.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITConj.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITConj.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITConj.cpp' object='src/cpp/jit/libsciast_la-JITConj.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITConj.lo `test -f 'src/cpp/jit/JITConj.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITConj.cpp
+
+src/cpp/jit/libsciast_la-JITFloor.lo: src/cpp/jit/JITFloor.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITFloor.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITFloor.Tpo -c -o src/cpp/jit/libsciast_la-JITFloor.lo `test -f 'src/cpp/jit/JITFloor.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITFloor.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITFloor.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITFloor.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITFloor.cpp' object='src/cpp/jit/libsciast_la-JITFloor.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITFloor.lo `test -f 'src/cpp/jit/JITFloor.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITFloor.cpp
+
+src/cpp/jit/libsciast_la-JITCeil.lo: src/cpp/jit/JITCeil.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITCeil.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITCeil.Tpo -c -o src/cpp/jit/libsciast_la-JITCeil.lo `test -f 'src/cpp/jit/JITCeil.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITCeil.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITCeil.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITCeil.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITCeil.cpp' object='src/cpp/jit/libsciast_la-JITCeil.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITCeil.lo `test -f 'src/cpp/jit/JITCeil.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITCeil.cpp
+
+src/cpp/jit/libsciast_la-JITRound.lo: src/cpp/jit/JITRound.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITRound.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITRound.Tpo -c -o src/cpp/jit/libsciast_la-JITRound.lo `test -f 'src/cpp/jit/JITRound.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITRound.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITRound.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITRound.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITRound.cpp' object='src/cpp/jit/libsciast_la-JITRound.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITRound.lo `test -f 'src/cpp/jit/JITRound.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITRound.cpp
+
+src/cpp/jit/libsciast_la-JITAddition.lo: src/cpp/jit/JITAddition.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITAddition.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITAddition.Tpo -c -o src/cpp/jit/libsciast_la-JITAddition.lo `test -f 'src/cpp/jit/JITAddition.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITAddition.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITAddition.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITAddition.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITAddition.cpp' object='src/cpp/jit/libsciast_la-JITAddition.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITAddition.lo `test -f 'src/cpp/jit/JITAddition.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITAddition.cpp
+
+src/cpp/jit/libsciast_la-JITSubtraction.lo: src/cpp/jit/JITSubtraction.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITSubtraction.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITSubtraction.Tpo -c -o src/cpp/jit/libsciast_la-JITSubtraction.lo `test -f 'src/cpp/jit/JITSubtraction.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITSubtraction.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITSubtraction.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITSubtraction.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITSubtraction.cpp' object='src/cpp/jit/libsciast_la-JITSubtraction.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITSubtraction.lo `test -f 'src/cpp/jit/JITSubtraction.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITSubtraction.cpp
+
+src/cpp/jit/libsciast_la-JITOpposite.lo: src/cpp/jit/JITOpposite.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITOpposite.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITOpposite.Tpo -c -o src/cpp/jit/libsciast_la-JITOpposite.lo `test -f 'src/cpp/jit/JITOpposite.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITOpposite.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITOpposite.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITOpposite.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITOpposite.cpp' object='src/cpp/jit/libsciast_la-JITOpposite.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITOpposite.lo `test -f 'src/cpp/jit/JITOpposite.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITOpposite.cpp
+
+src/cpp/jit/libsciast_la-JITMultiplication.lo: src/cpp/jit/JITMultiplication.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITMultiplication.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITMultiplication.Tpo -c -o src/cpp/jit/libsciast_la-JITMultiplication.lo `test -f 'src/cpp/jit/JITMultiplication.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITMultiplication.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITMultiplication.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITMultiplication.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITMultiplication.cpp' object='src/cpp/jit/libsciast_la-JITMultiplication.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITMultiplication.lo `test -f 'src/cpp/jit/JITMultiplication.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITMultiplication.cpp
+
+src/cpp/jit/libsciast_la-JITEquality.lo: src/cpp/jit/JITEquality.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITEquality.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITEquality.Tpo -c -o src/cpp/jit/libsciast_la-JITEquality.lo `test -f 'src/cpp/jit/JITEquality.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITEquality.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITEquality.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITEquality.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITEquality.cpp' object='src/cpp/jit/libsciast_la-JITEquality.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITEquality.lo `test -f 'src/cpp/jit/JITEquality.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITEquality.cpp
+
+src/cpp/jit/libsciast_la-JITShortcutOps.lo: src/cpp/jit/JITShortcutOps.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITShortcutOps.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITShortcutOps.Tpo -c -o src/cpp/jit/libsciast_la-JITShortcutOps.lo `test -f 'src/cpp/jit/JITShortcutOps.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITShortcutOps.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITShortcutOps.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITShortcutOps.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITShortcutOps.cpp' object='src/cpp/jit/libsciast_la-JITShortcutOps.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITShortcutOps.lo `test -f 'src/cpp/jit/JITShortcutOps.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITShortcutOps.cpp
+
+src/cpp/jit/libsciast_la-JITNotEquality.lo: src/cpp/jit/JITNotEquality.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITNotEquality.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITNotEquality.Tpo -c -o src/cpp/jit/libsciast_la-JITNotEquality.lo `test -f 'src/cpp/jit/JITNotEquality.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITNotEquality.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITNotEquality.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITNotEquality.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITNotEquality.cpp' object='src/cpp/jit/libsciast_la-JITNotEquality.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITNotEquality.lo `test -f 'src/cpp/jit/JITNotEquality.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITNotEquality.cpp
+
+src/cpp/jit/libsciast_la-JITComparisons.lo: src/cpp/jit/JITComparisons.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITComparisons.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITComparisons.Tpo -c -o src/cpp/jit/libsciast_la-JITComparisons.lo `test -f 'src/cpp/jit/JITComparisons.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITComparisons.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITComparisons.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITComparisons.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITComparisons.cpp' object='src/cpp/jit/libsciast_la-JITComparisons.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITComparisons.lo `test -f 'src/cpp/jit/JITComparisons.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITComparisons.cpp
+
+src/cpp/jit/libsciast_la-JITNegation.lo: src/cpp/jit/JITNegation.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITNegation.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITNegation.Tpo -c -o src/cpp/jit/libsciast_la-JITNegation.lo `test -f 'src/cpp/jit/JITNegation.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITNegation.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITNegation.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITNegation.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITNegation.cpp' object='src/cpp/jit/libsciast_la-JITNegation.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITNegation.lo `test -f 'src/cpp/jit/JITNegation.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITNegation.cpp
+
+src/cpp/jit/libsciast_la-JITRDivision.lo: src/cpp/jit/JITRDivision.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITRDivision.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITRDivision.Tpo -c -o src/cpp/jit/libsciast_la-JITRDivision.lo `test -f 'src/cpp/jit/JITRDivision.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITRDivision.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITRDivision.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITRDivision.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITRDivision.cpp' object='src/cpp/jit/libsciast_la-JITRDivision.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITRDivision.lo `test -f 'src/cpp/jit/JITRDivision.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITRDivision.cpp
+
+src/cpp/jit/libsciast_la-JITPower.lo: src/cpp/jit/JITPower.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-JITPower.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-JITPower.Tpo -c -o src/cpp/jit/libsciast_la-JITPower.lo `test -f 'src/cpp/jit/JITPower.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITPower.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-JITPower.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-JITPower.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/JITPower.cpp' object='src/cpp/jit/libsciast_la-JITPower.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-JITPower.lo `test -f 'src/cpp/jit/JITPower.cpp' || echo '$(srcdir)/'`src/cpp/jit/JITPower.cpp
+
+src/cpp/jit/libsciast_la-FunctionSignature.lo: src/cpp/jit/FunctionSignature.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-FunctionSignature.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-FunctionSignature.Tpo -c -o src/cpp/jit/libsciast_la-FunctionSignature.lo `test -f 'src/cpp/jit/FunctionSignature.cpp' || echo '$(srcdir)/'`src/cpp/jit/FunctionSignature.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-FunctionSignature.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-FunctionSignature.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/FunctionSignature.cpp' object='src/cpp/jit/libsciast_la-FunctionSignature.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-FunctionSignature.lo `test -f 'src/cpp/jit/FunctionSignature.cpp' || echo '$(srcdir)/'`src/cpp/jit/FunctionSignature.cpp
+
+src/cpp/jit/libsciast_la-ScilabJITEventListener.lo: src/cpp/jit/ScilabJITEventListener.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-ScilabJITEventListener.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-ScilabJITEventListener.Tpo -c -o src/cpp/jit/libsciast_la-ScilabJITEventListener.lo `test -f 'src/cpp/jit/ScilabJITEventListener.cpp' || echo '$(srcdir)/'`src/cpp/jit/ScilabJITEventListener.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-ScilabJITEventListener.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-ScilabJITEventListener.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/ScilabJITEventListener.cpp' object='src/cpp/jit/libsciast_la-ScilabJITEventListener.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-ScilabJITEventListener.lo `test -f 'src/cpp/jit/ScilabJITEventListener.cpp' || echo '$(srcdir)/'`src/cpp/jit/ScilabJITEventListener.cpp
+
+src/cpp/jit/libsciast_la-BaseFunctions1.lo: src/cpp/jit/BaseFunctions1.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-BaseFunctions1.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-BaseFunctions1.Tpo -c -o src/cpp/jit/libsciast_la-BaseFunctions1.lo `test -f 'src/cpp/jit/BaseFunctions1.cpp' || echo '$(srcdir)/'`src/cpp/jit/BaseFunctions1.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-BaseFunctions1.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-BaseFunctions1.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/BaseFunctions1.cpp' object='src/cpp/jit/libsciast_la-BaseFunctions1.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-BaseFunctions1.lo `test -f 'src/cpp/jit/BaseFunctions1.cpp' || echo '$(srcdir)/'`src/cpp/jit/BaseFunctions1.cpp
+
+src/cpp/jit/libsciast_la-BaseFunctions2.lo: src/cpp/jit/BaseFunctions2.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/jit/libsciast_la-BaseFunctions2.lo -MD -MP -MF src/cpp/jit/$(DEPDIR)/libsciast_la-BaseFunctions2.Tpo -c -o src/cpp/jit/libsciast_la-BaseFunctions2.lo `test -f 'src/cpp/jit/BaseFunctions2.cpp' || echo '$(srcdir)/'`src/cpp/jit/BaseFunctions2.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/jit/$(DEPDIR)/libsciast_la-BaseFunctions2.Tpo src/cpp/jit/$(DEPDIR)/libsciast_la-BaseFunctions2.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/jit/BaseFunctions2.cpp' object='src/cpp/jit/libsciast_la-BaseFunctions2.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/jit/libsciast_la-BaseFunctions2.lo `test -f 'src/cpp/jit/BaseFunctions2.cpp' || echo '$(srcdir)/'`src/cpp/jit/BaseFunctions2.cpp
+
src/cpp/types/libsciast_la-inspector.lo: src/cpp/types/inspector.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciast_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/types/libsciast_la-inspector.lo -MD -MP -MF src/cpp/types/$(DEPDIR)/libsciast_la-inspector.Tpo -c -o src/cpp/types/libsciast_la-inspector.lo `test -f 'src/cpp/types/inspector.cpp' || echo '$(srcdir)/'`src/cpp/types/inspector.cpp
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/types/$(DEPDIR)/libsciast_la-inspector.Tpo src/cpp/types/$(DEPDIR)/libsciast_la-inspector.Plo
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>includes/ast;includes/parse;includes/exps;includes/symbol;includes/types;includes/system_env;includes/operations;includes/jit;includes/analysis;../../libs/intl;../../libs/Eigen/includes;../functions_manager/includes;../core/includes;../elementary_functions/includes;../ast/includes/operations;../localization/includes;../output_stream/includes;../string/includes;../api_scilab/includes;../threads/includes;../console/includes;../graphic_objects/includes;../dynamic_link/includes;../io/includes;../fileio/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>includes/ast;includes/parse;includes/exps;includes/symbol;includes/types;includes/system_env;includes/operations;includes/jit;includes/analysis;../../libs/intl;../../libs/Eigen/includes;../functions_manager/includes;../core/includes;../elementary_functions/includes;../ast/includes/operations;../localization/includes;../output_stream/includes;../string/includes;../api_scilab/includes;../threads/includes;../console/includes;../graphic_objects/includes;../dynamic_link/includes;../io/includes;../fileio/includes;../special_functions/src/cpp;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;AST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>includes/ast;includes/parse;includes/exps;includes/symbol;includes/types;includes/system_env;includes/operations;includes/jit;includes/analysis;../../libs/intl;../../libs/Eigen/includes;../functions_manager/includes;../core/includes;../elementary_functions/includes;../ast/includes/operations;../localization/includes;../output_stream/includes;../string/includes;../api_scilab/includes;../threads/includes;../console/includes;../graphic_objects/includes;../dynamic_link/includes;../io/includes;../fileio/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>includes/ast;includes/parse;includes/exps;includes/symbol;includes/types;includes/system_env;includes/operations;includes/jit;includes/analysis;../../libs/intl;../../libs/Eigen/includes;../functions_manager/includes;../core/includes;../elementary_functions/includes;../ast/includes/operations;../localization/includes;../output_stream/includes;../string/includes;../api_scilab/includes;../threads/includes;../console/includes;../graphic_objects/includes;../dynamic_link/includes;../io/includes;../fileio/includes;../special_functions/src/cpp;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;AST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
- <AdditionalIncludeDirectories>includes/ast;includes/parse;includes/exps;includes/symbol;includes/types;includes/system_env;includes/operations;includes/jit;includes/analysis;../../libs/intl;../../libs/Eigen/includes;../functions_manager/includes;../core/includes;../elementary_functions/includes;../ast/includes/operations;../localization/includes;../output_stream/includes;../string/includes;../api_scilab/includes;../threads/includes;../console/includes;../graphic_objects/includes;../dynamic_link/includes;../io/includes;../fileio/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>includes/ast;includes/parse;includes/exps;includes/symbol;includes/types;includes/system_env;includes/operations;includes/jit;includes/analysis;../../libs/intl;../../libs/Eigen/includes;../functions_manager/includes;../core/includes;../elementary_functions/includes;../ast/includes/operations;../localization/includes;../output_stream/includes;../string/includes;../api_scilab/includes;../threads/includes;../console/includes;../graphic_objects/includes;../dynamic_link/includes;../io/includes;../fileio/includes;../special_functions/src/cpp;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;AST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
- <AdditionalIncludeDirectories>includes/ast;includes/parse;includes/exps;includes/symbol;includes/types;includes/system_env;includes/operations;includes/jit;includes/analysis;../../libs/intl;../../libs/Eigen/includes;../functions_manager/includes;../core/includes;../elementary_functions/includes;../ast/includes/operations;../localization/includes;../output_stream/includes;../string/includes;../api_scilab/includes;../threads/includes;../console/includes;../graphic_objects/includes;../dynamic_link/includes;../io/includes;../fileio/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>includes/ast;includes/parse;includes/exps;includes/symbol;includes/types;includes/system_env;includes/operations;includes/jit;includes/analysis;../../libs/intl;../../libs/Eigen/includes;../functions_manager/includes;../core/includes;../elementary_functions/includes;../ast/includes/operations;../localization/includes;../output_stream/includes;../string/includes;../api_scilab/includes;../threads/includes;../console/includes;../graphic_objects/includes;../dynamic_link/includes;../io/includes;../fileio/includes;../special_functions/src/cpp;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;AST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<ClInclude Include="includes\exps\var.hxx" />
<ClInclude Include="includes\exps\vardec.hxx" />
<ClInclude Include="includes\exps\whileexp.hxx" />
- <ClInclude Include="includes\jit\JITValues.hxx" />
+ <ClInclude Include="includes\jit\BaseFunctions.hxx" />
+ <ClInclude Include="includes\jit\BaseFunctionsAgain.hxx" />
+ <ClInclude Include="includes\jit\BaseFunctionsMacros.h" />
+ <ClInclude Include="includes\jit\BaseFunctionsMacros2.h" />
+ <ClInclude Include="includes\jit\BaseFunctionsMacros3.h" />
+ <ClInclude Include="includes\jit\base\addition.hxx" />
+ <ClInclude Include="includes\jit\base\and.hxx" />
+ <ClInclude Include="includes\jit\base\binary.hxx" />
+ <ClInclude Include="includes\jit\base\binary_functors.hxx" />
+ <ClInclude Include="includes\jit\base\elem_functions.hxx" />
+ <ClInclude Include="includes\jit\base\equal.hxx" />
+ <ClInclude Include="includes\jit\base\exponentiation.hxx" />
+ <ClInclude Include="includes\jit\base\functors.hxx" />
+ <ClInclude Include="includes\jit\base\greater_or_eq.hxx" />
+ <ClInclude Include="includes\jit\base\greater_than.hxx" />
+ <ClInclude Include="includes\jit\base\ldivision.hxx" />
+ <ClInclude Include="includes\jit\base\lower_or_eq.hxx" />
+ <ClInclude Include="includes\jit\base\lower_than.hxx" />
+ <ClInclude Include="includes\jit\base\not_equal.hxx" />
+ <ClInclude Include="includes\jit\base\or.hxx" />
+ <ClInclude Include="includes\jit\base\product.hxx" />
+ <ClInclude Include="includes\jit\base\rdivision.hxx" />
+ <ClInclude Include="includes\jit\base\subtraction.hxx" />
+ <ClInclude Include="includes\jit\base\tools.hxx" />
+ <ClInclude Include="includes\jit\base\vectorization.hxx" />
+ <ClInclude Include="includes\jit\blocks\ShortcutEval.hxx" />
+ <ClInclude Include="includes\jit\calls\FunCallInitializer.hxx" />
+ <ClInclude Include="includes\jit\calls\FunctionSignature.hxx" />
+ <ClInclude Include="includes\jit\calls\JITAbs.hxx" />
+ <ClInclude Include="includes\jit\calls\JITAngle.hxx" />
+ <ClInclude Include="includes\jit\calls\JITBinOp.hxx" />
+ <ClInclude Include="includes\jit\calls\JITBinOpCall.hxx" />
+ <ClInclude Include="includes\jit\calls\JITCall.hxx" />
+ <ClInclude Include="includes\jit\calls\JITCall1.hxx" />
+ <ClInclude Include="includes\jit\calls\JITCeil.hxx" />
+ <ClInclude Include="includes\jit\calls\JITConj.hxx" />
+ <ClInclude Include="includes\jit\calls\JITFloor.hxx" />
+ <ClInclude Include="includes\jit\calls\JITGatewayCall.hxx" />
+ <ClInclude Include="includes\jit\calls\JITImag.hxx" />
+ <ClInclude Include="includes\jit\calls\JITImult.hxx" />
+ <ClInclude Include="includes\jit\calls\JITLog.hxx" />
+ <ClInclude Include="includes\jit\calls\JITOptimizedCall1.hxx" />
+ <ClInclude Include="includes\jit\calls\JITReal.hxx" />
+ <ClInclude Include="includes\jit\calls\JITRound.hxx" />
+ <ClInclude Include="includes\jit\calls\JITShortcutBinOpCall.hxx" />
+ <ClInclude Include="includes\jit\calls\JITSign.hxx" />
+ <ClInclude Include="includes\jit\calls\JITSize.hxx" />
+ <ClInclude Include="includes\jit\calls\JITSize1.hxx" />
+ <ClInclude Include="includes\jit\calls\JITSqrt.hxx" />
+ <ClInclude Include="includes\jit\calls\JITUnaryOpCall.hxx" />
+ <ClInclude Include="includes\jit\calls\JITZeros.hxx" />
+ <ClInclude Include="includes\jit\Cast.hxx" />
+ <ClInclude Include="includes\jit\Disassembler.hxx" />
+ <ClInclude Include="includes\jit\funs_interf.h" />
+ <ClInclude Include="includes\jit\JITArrayof.hxx" />
+ <ClInclude Include="includes\jit\JITArrayofs.hxx" />
+ <ClInclude Include="includes\jit\JITScalar.hxx" />
+ <ClInclude Include="includes\jit\JITScalars.hxx" />
+ <ClInclude Include="includes\jit\JITScilabVal.hxx" />
+ <ClInclude Include="includes\jit\JITVal.hxx" />
<ClInclude Include="includes\jit\JITVisitor.hxx" />
- <ClInclude Include="includes\jit\jit_operations.hxx" />
+ <ClInclude Include="includes\jit\MemoryManager.hxx" />
+ <ClInclude Include="includes\jit\ScilabJITEventListener.hxx" />
<ClInclude Include="includes\jit\ScilabJITTraits.hxx" />
<ClInclude Include="includes\operations\doublecomplex.h" />
<ClInclude Include="includes\operations\generic_operations.hxx" />
<ClCompile Include="src\cpp\ast\runvisitor.cpp" />
<ClCompile Include="src\cpp\ast\shortcutvisitor.cpp" />
<ClCompile Include="src\cpp\ast\visitor_common.cpp" />
- <ClCompile Include="src\cpp\jit\GlobalCFunctions.cpp" />
- <ClCompile Include="src\cpp\jit\JITValues.cpp" />
+ <ClCompile Include="src\cpp\jit\BaseFunctions1.cpp" />
+ <ClCompile Include="src\cpp\jit\BaseFunctions2.cpp" />
+ <ClCompile Include="src\cpp\jit\FunctionSignature.cpp" />
+ <ClCompile Include="src\cpp\jit\JITAbs.cpp" />
+ <ClCompile Include="src\cpp\jit\JITAddition.cpp" />
+ <ClCompile Include="src\cpp\jit\JITAngle.cpp" />
+ <ClCompile Include="src\cpp\jit\JITBinOpCall.cpp" />
+ <ClCompile Include="src\cpp\jit\JITBreakContinueExps.cpp" />
+ <ClCompile Include="src\cpp\jit\JITCall.cpp" />
+ <ClCompile Include="src\cpp\jit\JITCallExp.cpp" />
+ <ClCompile Include="src\cpp\jit\JITCeil.cpp" />
+ <ClCompile Include="src\cpp\jit\JITComparisons.cpp" />
+ <ClCompile Include="src\cpp\jit\JITComplexVal.cpp" />
+ <ClCompile Include="src\cpp\jit\JITConj.cpp" />
+ <ClCompile Include="src\cpp\jit\JITEquality.cpp" />
+ <ClCompile Include="src\cpp\jit\JITFloor.cpp" />
+ <ClCompile Include="src\cpp\jit\JITForExp.cpp" />
+ <ClCompile Include="src\cpp\jit\JITIfExp.cpp" />
+ <ClCompile Include="src\cpp\jit\JITImag.cpp" />
+ <ClCompile Include="src\cpp\jit\JITImult.cpp" />
+ <ClCompile Include="src\cpp\jit\JITIntSelectExp.cpp" />
+ <ClCompile Include="src\cpp\jit\JITLog.cpp" />
+ <ClCompile Include="src\cpp\jit\JITMultiplication.cpp" />
+ <ClCompile Include="src\cpp\jit\JITNegation.cpp" />
+ <ClCompile Include="src\cpp\jit\JITNotEquality.cpp" />
+ <ClCompile Include="src\cpp\jit\JITOpExp.cpp" />
+ <ClCompile Include="src\cpp\jit\JITOpposite.cpp" />
+ <ClCompile Include="src\cpp\jit\JITOptimizedCall1.cpp" />
+ <ClCompile Include="src\cpp\jit\JITPower.cpp" />
+ <ClCompile Include="src\cpp\jit\JITRDivision.cpp" />
+ <ClCompile Include="src\cpp\jit\JITReal.cpp" />
+ <ClCompile Include="src\cpp\jit\JITRound.cpp" />
+ <ClCompile Include="src\cpp\jit\JITSelectExp.cpp" />
+ <ClCompile Include="src\cpp\jit\JITShortcutBinOpCall.cpp" />
+ <ClCompile Include="src\cpp\jit\JITShortcutOps.cpp" />
+ <ClCompile Include="src\cpp\jit\JITSign.cpp" />
+ <ClCompile Include="src\cpp\jit\JITSize.cpp" />
+ <ClCompile Include="src\cpp\jit\JITSqrt.cpp" />
+ <ClCompile Include="src\cpp\jit\JITSubtraction.cpp" />
+ <ClCompile Include="src\cpp\jit\JITUnaryOpCall.cpp" />
<ClCompile Include="src\cpp\jit\JITVisitor.cpp" />
- <ClCompile Include="src\cpp\jit\jit_operations.cpp" />
+ <ClCompile Include="src\cpp\jit\JITWhileExp.cpp" />
+ <ClCompile Include="src\cpp\jit\JITZeros.cpp" />
<ClCompile Include="src\cpp\jit\jit_windows.cpp" />
+ <ClCompile Include="src\cpp\jit\MemoryManager.cpp" />
+ <ClCompile Include="src\cpp\jit\ScilabJITEventListener.cpp" />
+ <ClCompile Include="src\cpp\jit\ShortcutEval.cpp" />
<ClCompile Include="src\cpp\operations\interface_addition.cpp" />
<ClCompile Include="src\cpp\operations\operations.cpp" />
<ClCompile Include="src\cpp\operations\types_addition.cpp" />
<Filter Include="Source Files\analysis">
<UniqueIdentifier>{cc737210-ca11-42b1-99f7-444901ee9add}</UniqueIdentifier>
</Filter>
+ <Filter Include="Header Files\jit\base">
+ <UniqueIdentifier>{fb01d053-2490-47e4-b699-c35332175ea1}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Header Files\jit\blocks">
+ <UniqueIdentifier>{315909c5-eddf-4e1c-b4d3-c1ebc985542d}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Header Files\jit\calls">
+ <UniqueIdentifier>{c82b9718-5c92-4bf0-9feb-5d7492dabe31}</UniqueIdentifier>
+ </Filter>
</ItemGroup>
<ItemGroup>
<None Include="core_Import.def">
<ClInclude Include="includes\types\overload.hxx">
<Filter>Header Files\types</Filter>
</ClInclude>
- <ClInclude Include="includes\jit\ScilabJITTraits.hxx">
- <Filter>Header Files\jit</Filter>
- </ClInclude>
- <ClInclude Include="includes\jit\JITVisitor.hxx">
- <Filter>Header Files\jit</Filter>
- </ClInclude>
- <ClInclude Include="includes\jit\JITValues.hxx">
- <Filter>Header Files\jit</Filter>
- </ClInclude>
- <ClInclude Include="includes\jit\jit_operations.hxx">
- <Filter>Header Files\jit</Filter>
- </ClInclude>
<ClInclude Include="includes\analysis\AnalysisVisitor.hxx">
<Filter>Header Files\analysis</Filter>
</ClInclude>
<ClInclude Include="includes\exps\tableintselectexp.hxx">
<Filter>Header Files\exps</Filter>
</ClInclude>
+ <ClInclude Include="includes\jit\BaseFunctions.hxx">
+ <Filter>Header Files\jit</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\BaseFunctionsAgain.hxx">
+ <Filter>Header Files\jit</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\BaseFunctionsMacros.h">
+ <Filter>Header Files\jit</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\BaseFunctionsMacros2.h">
+ <Filter>Header Files\jit</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\BaseFunctionsMacros3.h">
+ <Filter>Header Files\jit</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\Cast.hxx">
+ <Filter>Header Files\jit</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\Disassembler.hxx">
+ <Filter>Header Files\jit</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\funs_interf.h">
+ <Filter>Header Files\jit</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\JITArrayof.hxx">
+ <Filter>Header Files\jit</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\JITArrayofs.hxx">
+ <Filter>Header Files\jit</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\JITScalar.hxx">
+ <Filter>Header Files\jit</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\JITScalars.hxx">
+ <Filter>Header Files\jit</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\JITScilabVal.hxx">
+ <Filter>Header Files\jit</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\JITVal.hxx">
+ <Filter>Header Files\jit</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\JITVisitor.hxx">
+ <Filter>Header Files\jit</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\MemoryManager.hxx">
+ <Filter>Header Files\jit</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\ScilabJITEventListener.hxx">
+ <Filter>Header Files\jit</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\ScilabJITTraits.hxx">
+ <Filter>Header Files\jit</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\base\addition.hxx">
+ <Filter>Header Files\jit\base</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\base\and.hxx">
+ <Filter>Header Files\jit\base</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\base\binary.hxx">
+ <Filter>Header Files\jit\base</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\base\binary_functors.hxx">
+ <Filter>Header Files\jit\base</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\base\elem_functions.hxx">
+ <Filter>Header Files\jit\base</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\base\equal.hxx">
+ <Filter>Header Files\jit\base</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\base\exponentiation.hxx">
+ <Filter>Header Files\jit\base</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\base\functors.hxx">
+ <Filter>Header Files\jit\base</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\base\greater_or_eq.hxx">
+ <Filter>Header Files\jit\base</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\base\greater_than.hxx">
+ <Filter>Header Files\jit\base</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\base\ldivision.hxx">
+ <Filter>Header Files\jit\base</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\base\lower_or_eq.hxx">
+ <Filter>Header Files\jit\base</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\base\lower_than.hxx">
+ <Filter>Header Files\jit\base</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\base\not_equal.hxx">
+ <Filter>Header Files\jit\base</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\base\or.hxx">
+ <Filter>Header Files\jit\base</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\base\product.hxx">
+ <Filter>Header Files\jit\base</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\base\rdivision.hxx">
+ <Filter>Header Files\jit\base</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\base\subtraction.hxx">
+ <Filter>Header Files\jit\base</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\base\tools.hxx">
+ <Filter>Header Files\jit\base</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\base\vectorization.hxx">
+ <Filter>Header Files\jit\base</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\blocks\ShortcutEval.hxx">
+ <Filter>Header Files\jit\blocks</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\FunCallInitializer.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\FunctionSignature.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITAbs.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITAngle.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITBinOp.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITBinOpCall.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITCall.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITCall1.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITCeil.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITConj.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITFloor.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITGatewayCall.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITImag.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITImult.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITLog.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITOptimizedCall1.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITReal.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITRound.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITShortcutBinOpCall.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITSign.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITSize.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITSize1.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITSqrt.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITUnaryOpCall.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\jit\calls\JITZeros.hxx">
+ <Filter>Header Files\jit\calls</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\cpp\ast\debugvisitor.cpp">
<ClCompile Include="src\cpp\types\callable.cpp">
<Filter>Source Files\types</Filter>
</ClCompile>
- <ClCompile Include="src\cpp\jit\JITValues.cpp">
- <Filter>Source Files\jit</Filter>
- </ClCompile>
- <ClCompile Include="src\cpp\jit\JITVisitor.cpp">
- <Filter>Source Files\jit</Filter>
- </ClCompile>
- <ClCompile Include="src\cpp\jit\GlobalCFunctions.cpp">
- <Filter>Source Files\jit</Filter>
- </ClCompile>
- <ClCompile Include="src\cpp\jit\jit_operations.cpp">
- <Filter>Source Files\jit</Filter>
- </ClCompile>
<ClCompile Include="src\cpp\operations\types_opposite.cpp">
<Filter>Source Files\operations</Filter>
</ClCompile>
<ClCompile Include="src\cpp\operations\types_or.cpp">
<Filter>Source Files\operations</Filter>
</ClCompile>
- <ClCompile Include="src\cpp\jit\jit_windows.cpp">
- <Filter>Source Files\jit</Filter>
- </ClCompile>
<ClCompile Include="src\cpp\operations\types_dotdivide.cpp">
<Filter>Source Files\operations</Filter>
</ClCompile>
<ClCompile Include="src\cpp\analysis\VisitVarDec.cpp">
<Filter>Source Files\analysis</Filter>
</ClCompile>
+ <ClCompile Include="src\cpp\jit\BaseFunctions1.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\BaseFunctions2.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\FunctionSignature.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\jit_windows.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITAbs.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITAddition.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITAngle.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITBinOpCall.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITBreakContinueExps.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITCall.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITCallExp.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITCeil.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITComparisons.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITComplexVal.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITConj.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITEquality.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITFloor.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITForExp.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITIfExp.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITImag.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITImult.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITIntSelectExp.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITLog.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITMultiplication.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITNegation.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITNotEquality.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITOpExp.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITOpposite.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITOptimizedCall1.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITPower.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITRDivision.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITReal.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITRound.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITSelectExp.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITShortcutBinOpCall.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITShortcutOps.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITSign.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITSize.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITSqrt.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITSubtraction.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITUnaryOpCall.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITVisitor.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITWhileExp.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\JITZeros.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\MemoryManager.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\ScilabJITEventListener.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
+ <ClCompile Include="src\cpp\jit\ShortcutEval.cpp">
+ <Filter>Source Files\jit</Filter>
+ </ClCompile>
</ItemGroup>
</Project>
\ No newline at end of file
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __BASE_FUNCTIONS_HXX__
+#define __BASE_FUNCTIONS_HXX__
+
+#include <algorithm>
+#include <complex>
+#include <cmath>
+#include <type_traits>
+#include <vector>
+
+#include "Cast.hxx"
+/*#include "base/binary.hxx"
+#include "base/addition.hxx"
+#include "base/subtraction.hxx"
+#include "base/product.hxx"
+#include "base/rdivision.hxx"
+#include "base/ldivision.hxx"
+#include "base/exponentiation.hxx"
+#include "base/not_equal.hxx"
+#include "base/equal.hxx"
+#include "base/greater_than.hxx"
+#include "base/greater_or_eq.hxx"
+#include "base/lower_than.hxx"
+#include "base/lower_or_eq.hxx"
+#include "base/and.hxx"
+#include "base/or.hxx"
+*/
+
+#include "base/elem_functions.hxx"
+//#include "base/addition.hxx"
+#include "base/tools.hxx"
+#include "base/vectorization.hxx"
+#include "base/functors.hxx"
+#include "base/binary_functors.hxx"
+//#include "base/binary.hxx"
+
+#include "core_math.h"
+#include "faddeeva.h"
+
+extern "C"
+{
+ //#include "basic_functions.h"
+#include "elem_common.h"
+
+ extern void C2F(dgetri)(int const* n, double* a, int const* ldA, int const* iPiv, double* work, int const* workSize, int* info);
+ extern void C2F(dlaswp)(int const* n, double* a, int const* ldA, int const* k1, int const* k2, int const* iPiv, int const* incX);
+ extern int C2F(dtrsm) (char* side, char* uplo, char* trans, char* diag, int* m, int* n, double* alpha, double* A, int* lda, double* B, int* ldb);
+ extern int C2F(ilaenv)(int *, const char *, const char *, int *, int *, int *, int *);
+}
+
+namespace jit
+{
+namespace BaseFunctions
+{
+// TODO : LLVMize all these functions to inline them !
+// TODO : several vectorizations could be merged: sin(a)+b (a,b matrices with same dims)
+// could be transformed into for i=1:N; res(i)=sin(a(i))+b(i);end => 1 loop rather than 2 !
+
+/*template<typename T, typename U, U (F)(T), typename V = U>
+inline void vectorize(const T * x, const int64_t x_r, const int64_t x_c, V ** o)
+{
+ const int64_t size = x_r * x_c;
+V * _o = getPtr(o, size);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ _o[i] = (V)F(x[i]);
+ }
+}
+
+template<std::complex<double> (CPX)(const std::complex<double> &)>
+inline void vectorize(const double * x_re, const double * x_im, const int64_t x_r, const int64_t x_c, double ** o_re, double ** o_im)
+{
+ const int64_t size = x_r * x_c;
+double * _o_re = getPtr(o_re, size);
+ double * _o_im = getPtr(o_im, size);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ const std::complex<double> z = CPX(std::complex<double>(x_re[i], x_im[i]));
+ _o_re[i] = z.real();
+ _o_im[i] = z.imag();
+ }
+}
+
+template<typename T, T (CPX)(const std::complex<double> &)>
+inline void vectorize(const double * x_re, const double * x_im, const int64_t x_r, const int64_t x_c, T ** o)
+{
+const int64_t size = x_r * x_c;
+ T * _o = getPtr(o, size);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ _o[i] = CPX(std::complex<double>(x_re[i], x_im[i]));
+ }
+}
+
+template<typename T, std::complex<double> (F)(T)>
+inline void vectorize(const T * x, const int64_t x_r, const int64_t x_c, double ** o_re, double ** o_im)
+{
+const int64_t size = x_r * x_c;
+double * _o_re = getPtr(o_re, size);
+ double * _o_im = getPtr(o_im, size);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ const std::complex<double> z = F(x[i]);
+ _o_re[i] = z.real();
+ _o_im[i] = z.imag();
+ }
+}
+
+template<typename T, double (RE)(T), std::complex<double> (CPX)(T), bool USECPX(T)>
+inline void vectorize(const T * x, const int64_t x_r, const int64_t x_c, double ** o_re, double ** o_im)
+{
+const int64_t size = x_r * x_c;
+double * _o_re = getPtr(o_re, size);
+ double * _o_im = getPtr(o_im, size);
+
+ for (int64_t i = 0; i < size; ++i)
+ {
+ if (USECPX(x[i]))
+ {
+ if (!_o_im)
+ {
+ _o_im = new double[size]();
+ }
+ const std::complex<double> z = CPX(x[i]);
+ _o_re[i] = z.real();
+ _o_im[i] = z.imag();
+ }
+ else
+ {
+ _o_re[i] = RE(x[i]);
+ }
+ }
+
+ *o_im = _o_im;
+}
+
+// use it with frexp
+template<typename T, typename U, typename V, V (F)(T, U *), typename W = V>
+inline void vectorize(const T * x, const int64_t x_r, const int64_t x_c, V * o1, W * o2)
+{
+ for (int64_t i = 0; i < x_r * x_c; ++i)
+ {
+ U t;
+ o1[i] = (V)F(x[i], &t);
+ o2[i] = (W)t;
+ }
+}
+
+// use it with rand()
+template<typename T, T (F)(), typename U = T>
+inline void vectorize(const int64_t x_r, const int64_t x_c, U ** o)
+{
+const int64_t size = x_r * x_c;
+ U * _o = getPtr(o, size);
+ for (int64_t i = 0; i < x_r * x_c; ++i)
+ {
+ o[i] = (T)F();
+ }
+}*/
+
+// use it with cumsum and cumprod
+template<typename T, T (F)(T, T)>
+inline void cumulateIn(const T * x, const int64_t x_r, const int64_t x_c, T * o)
+{
+ // TODO: check x_r > 0 && x_c > 0
+ o[0] = x[0];
+ for (int64_t i = 1; i < x_r * x_c; ++i)
+ {
+ o[i] = F(o[i - 1], x[i]);
+ }
+}
+
+// use it with max(..., 'r')
+template<typename T, T (F)(T, T)>
+inline void cumulateInR(const T * x, const int64_t x_r, const int64_t x_c, T * o)
+{
+ for (int i = 0; i < x_c; ++i)
+ {
+ const T t = x[i * x_r];
+ for (int j = 1; i < x_r; ++j)
+ {
+ t = F(t, x[j + i * x_r]);
+ }
+ o[i] = t;
+ }
+}
+
+// use it with max(..., 'c')
+template<typename T, T (F)(T, T)>
+inline void cumulateInC(const T * x, const int64_t x_r, const int64_t x_c, T * o)
+{
+ for (int64_t i = 0; i < x_r; ++i)
+ {
+ const T t = x[i];
+ for (int64_t j = 1; i < x_c; ++j)
+ {
+ t = F(t, x[i + j * x_r]);
+ }
+ o[i] = t;
+ }
+}
+
+template<typename T, T (F)(T, T)>
+inline T cumulate(const T * x, const int64_t x_r, const int64_t x_c)
+{
+ T y = x[0];
+ for (int64_t i = 1; i < x_r * x_c; ++i)
+ {
+ y = F(y, x[i]);
+ }
+
+ return y;
+}
+
+template<bool B, typename T, bool (F)(T)>
+inline int breakOnM(const T * x, const int64_t x_r, const int64_t x_c)
+{
+ for (int64_t i = 0; i < x_r * x_c; ++i)
+ {
+ if (F(x[i]) == B)
+ {
+ return B;
+ }
+ }
+
+ return !B;
+}
+
+template<bool B, typename T, typename U, bool (F)(T, U)>
+inline int breakOnMM(const T * x, const int64_t x_r, const int64_t x_c, const U * y, const int64_t y_r, const int64_t y_c)
+{
+ for (int64_t i = 0; i < x_r * x_c; ++i)
+ {
+ if (F(x[i], y[i]) == B)
+ {
+ return B;
+ }
+ }
+
+ return !B;
+}
+
+template<bool B, typename T, typename U, bool (F)(T, U)>
+inline int breakOnSM(const T x, const U * y, const int64_t y_r, const int64_t y_c)
+{
+ for (int64_t i = 0; i < y_r * y_c; ++i)
+ {
+ if (F(x, y[i]) == B)
+ {
+ return B;
+ }
+ }
+
+ return !B;
+}
+
+template<bool B, typename T, typename U, bool (F)(T, U)>
+inline int breakOnMS(const T * x, const int64_t x_r, const int64_t x_c, const U y)
+{
+ for (int64_t i = 0; i < x_r * x_c; ++i)
+ {
+ if (F(x[i], y) == B)
+ {
+ return B;
+ }
+ }
+
+ return !B;
+}
+
+template<typename T, typename V, V (F)(T)>
+inline void unaryM(const T * x, const int64_t x_r, const int64_t x_c, V ** o)
+{
+ V * _o;
+ const int64_t size = x_r * x_c;
+ if (*o)
+ {
+ _o = *o;
+ }
+ else
+ {
+ _o = new V[size];
+ *o = _o;
+ }
+ for (int64_t i = 0; i < x_r * x_c; ++i)
+ {
+ _o[i] = F(x[i]);
+ }
+}
+
+template<typename T, typename V, V (F)(T)>
+inline void unaryU(const T * x, const int64_t x_r, const int64_t x_c, V ** o)
+{
+ unaryM<T, V, F>(x, x_r, x_c, o);
+}
+
+template<typename T, typename U, typename V = typename ScilabType<T, U>::type>
+inline void timesMM(const T * x, const int64_t x_r, const int64_t x_c, const U * y, const int64_t y_r, const int64_t y_c, V ** o)
+{
+ V * _o;
+ const int64_t size = x_r * y_c;
+ if (*o)
+ {
+ _o = *o;
+ }
+ else
+ {
+ _o = new V[size];
+ *o = _o;
+ }
+ memset(_o, 0, size * sizeof(V));
+ for (int j = 0; j < y_c; ++j)
+ {
+ for (int k = 0; k < x_c; ++k)
+ {
+ for (int i = 0; i < x_r; ++i)
+ {
+ _o[i + x_r * j] += (V)(x[i + x_r * k] * y[k + x_c * j]);
+ }
+ }
+ }
+}
+
+// Useful to simplify something like find(A >= B)
+// It would avoid to calculate A>=B and to search the true values after.
+template<typename T, typename U, typename V, V (F)(T, U)>
+inline int findBinMM(const T * x, const int64_t x_r, const int64_t x_c, const U * y, double ** o)
+{
+ std::vector<double> v;
+ for (int64_t i = 0; i < x_r * x_c; ++i)
+ {
+ if (F(x[i], y[i]))
+ {
+ v.push_back((double)i);
+ }
+ }
+
+ const size_t s = v.size();
+ *o = new double[s];
+ memcpy(*o, &(v[0]), s * sizeof(double));
+
+ return s;
+}
+
+template<typename T, typename U, typename V, V (F)(T, U)>
+inline int findBinSM(const T x, const int64_t x_r, const int64_t x_c, const U * y, double ** o)
+{
+ std::vector<double> v;
+ for (int64_t i = 0; i < x_r * x_c; ++i)
+ {
+ if (F(x, y[i]))
+ {
+ v.push_back((double)i);
+ }
+ }
+
+ const size_t s = v.size();
+ *o = new double[s];
+ memcpy(*o, &(v[0]), s * sizeof(double));
+
+ return s;
+}
+
+template<typename T, typename U, typename V, V (F)(T, U)>
+inline int findBinMS(const T * x, const int64_t x_r, const int64_t x_c, U y, double ** o)
+{
+ std::vector<double> v;
+ for (int64_t i = 0; i < x_r * x_c; ++i)
+ {
+ if (F(x[i], y))
+ {
+ v.push_back((double)i);
+ }
+ }
+
+ const size_t s = v.size();
+ *o = new double[s];
+ memcpy(*o, &(v[0]), s * sizeof(double));
+
+ return s;
+}
+
+inline void DGEMM(double * x, int & x_r, int & x_c, int & y_c, double * y, double * o)
+{
+ static char n = 'n';
+ static double zero = 0;
+ static double one = 1;
+
+ C2F(dgemm)(&n, &n, &x_r, &y_c, &x_c, &one, x, &x_r, y, &x_c, &zero, o, &x_r);
+}
+
+template<>
+inline void timesMM<double, double, double>(const double * x, const int64_t x_r, const int64_t x_c, const double * y, const int64_t y_r, const int64_t y_c, double ** o)
+{
+ double * _o;
+ const int64_t size = x_r * y_c;
+ if (*o)
+ {
+ _o = *o;
+ }
+ else
+ {
+ _o = new double[size];
+ *o = _o;
+ }
+
+ int _x_r = x_r;
+ int _x_c = x_c;
+ int _y_c = y_c;
+ DGEMM(const_cast<double *>(x), _x_r, _x_c, _y_c, const_cast<double *>(y), _o);
+}
+
+inline void DSQM(double * x, double * y, int x_r, double * o)
+{
+ DGEMM(x, x_r, x_r, x_r, y, o);
+}
+
+inline void inv(double * X, int x_r)
+{
+ static char one = '1';
+ static int iONE = 1;
+ static int iMONE = -1;
+
+ double norm1 = C2F(dlange)(&one, &x_r, &x_r, X, &x_r, nullptr);
+ int info;
+ int * pivot = new int[x_r];
+ C2F(dgetrf)(&x_r, &x_r, X, &x_r, pivot, &info);
+ if (info > 0)
+ {
+ // Singular matrix (a diagonal element of U is exactly 0)
+ std::cout << "Singular matrix" << std::endl;
+ delete[] pivot;
+ }
+ else
+ {
+ double rcond = 0;
+ int size = std::max(4, C2F(ilaenv)(&iONE, "dgetri", " ", &x_r, &iMONE, &iMONE, &iMONE)) * x_r;
+ double * work = new double[size];
+ int * iwork = new int[x_r];
+ C2F(dgecon)(&one, &x_r, X, &x_r, &norm1, &rcond, work, iwork, &info);
+ if (rcond <= std::sqrt(C2F(dlamch)("e", 1L)))
+ {
+ // Ill conditionned
+ std::cout << "Ill conditionned" << std::endl;
+ }
+ C2F(dgetri)(&x_r, X, &x_r, pivot, work, &size, &info);
+ delete[] pivot;
+ delete[] work;
+ delete[] iwork;
+ }
+}
+
+inline void inv(double * X, int & x_r, double * O)
+{
+ memcpy(O, X, x_r * x_r * sizeof(double));
+ inv(O, x_r);
+}
+
+template<typename T>
+inline void sq22(T * X)
+{
+ const T bc = X[1] * X[2];
+ const T a_d = X[0] + X[3];
+ X[0] = X[0] * X[0] + bc;
+ X[1] *= a_d;
+ X[2] *= a_d;
+ X[3] = X[3] * X[3] + bc;
+}
+
+template<typename T>
+inline void pow2ui(T * X, uint64_t N)
+{
+ switch (N)
+ {
+ case 0:
+ X[0] = X[3] = 1;
+ X[1] = X[2] = 0;
+ return;
+ case 1:
+ return;
+ case 2:
+ {
+ sq22(X);
+ return;
+ }
+ default:
+ {
+ T y0, y1, y2, y3;
+ if (N & 1)
+ {
+ y0 = X[0];
+ y1 = X[1];
+ y2 = X[2];
+ y3 = X[3];
+ }
+ else
+ {
+ y0 = 1;
+ y1 = 0;
+ y2 = 0;
+ y3 = 1;
+ }
+
+ while (N >>= 1)
+ {
+ sq22(X);
+ if (N & 1)
+ {
+ T a, b, c, d;
+ a = y0 * X[0] + y2 * X[1];
+ b = y0 * X[2] + y2 * X[3];
+ c = y1 * X[0] + y3 * X[1];
+ d = y1 * X[2] + y3 * X[3];
+ y0 = a;
+ y1 = c;
+ y2 = b;
+ y3 = d;
+ }
+
+ }
+
+ X[0] = y0;
+ X[1] = y1;
+ X[2] = y2;
+ X[3] = y3;
+ }
+ }
+}
+
+template<typename T>
+inline void pow2ui(T * X, uint64_t N, T * O)
+{
+ O[0] = X[0];
+ O[1] = X[1];
+ O[2] = X[2];
+ O[3] = X[3];
+ pow2ui(O, N);
+}
+
+inline void powM(double * X, const int x_r, double * O, uint64_t N, double * T)
+{
+ /*
+ This is not exactly the fast pow algorithm.
+ I slightly modified it to avoid the dcopys.
+ The idea is easy: we want the result in o so
+ if N is even then o = t1*t1 else o=x*t1 and t1=o*o
+ and we can replace N by N/2.
+ If we were in the first case and N is even then t1=o*o
+ else o=x*t1 and t1=o*o,...
+ So to generate the dgemms we need to begin with the most signifiant bit.
+ For example:
+ C2F(dgemm)(&n, &n, &x_r, &x_r, &x_r, &one, x, &x_r, x, &x_r, &zero, o, &x_r); // x^2
+ C2F(dgemm)(&n, &n, &x_r, &x_r, &x_r, &one, x, &x_r, o, &x_r, &zero, t1, &x_r); // x^3
+ C2F(dgemm)(&n, &n, &x_r, &x_r, &x_r, &one, t1, &x_r, t1, &x_r, &zero, o, &x_r); // x^6
+ C2F(dgemm)(&n, &n, &x_r, &x_r, &x_r, &one, o, &x_r, o, &x_r, &zero, t1, &x_r); // x^12
+ C2F(dgemm)(&n, &n, &x_r, &x_r, &x_r, &one, x, &x_r, t1, &x_r, &zero, o, &x_r); // x^13
+
+ The goal is to have one temp array, no memcpy and the final multiplication must put its result in O.
+ */
+
+ if (x_r == 2)
+ {
+ pow2ui(X, N, O);
+ return;
+ }
+
+ const int size = x_r * x_r;
+
+ if (N == 0)
+ {
+ // Identity matrix
+ memset(O, 0, size * sizeof(double));
+ for (int i = 0; i < x_r; ++i)
+ {
+ O[i * (x_r + 1)] = 1;
+ }
+ return;
+ }
+ else if (N == 1)
+ {
+ // X itself
+ memcpy(O, X, size * sizeof(double));
+ return;
+ }
+ else if (N == 2)
+ {
+ DSQM(X, X, x_r, O);
+ return;
+ }
+
+ //const unsigned int nbits = 8 * sizeof(uint64_t) - __builtin_clzll(N);
+ //const bool parity = (nbits - __builtin_popcountll(N)) & 1;
+ const unsigned int nbits = 8 * sizeof(uint64_t) - analysis::tools::clzll(N);
+ const bool parity = (nbits - analysis::tools::popcount(N)) & 1;
+ unsigned int mask = 1 << (nbits - 2);
+ const bool alloc = !T;
+ if (alloc)
+ {
+ T = new double[size];
+ }
+
+ // Trip cost is [log2(N)] (=nbits-1)
+ // Except the most signifiant bit, for each 1 in binary representation of N we have 2 dgemms
+ // and for each 0 we have 1 dgemm.
+ // E.g. for N=13=0x1101, the cost is 2 * 2 + 1 dgemms.
+
+ if (N & mask)
+ {
+ if (parity)
+ {
+ DSQM(X, X, x_r, O);
+ DSQM(X, O, x_r, T);
+ std::swap(O, T);
+ }
+ else
+ {
+ DSQM(X, X, x_r, T);
+ DSQM(X, T, x_r, O);
+ }
+ }
+ else
+ {
+ if (parity)
+ {
+ DSQM(X, X, x_r, O);
+ }
+ else
+ {
+ DSQM(X, X, x_r, T);
+ std::swap(O, T);
+ }
+ }
+
+ while (mask >>= 1)
+ {
+ DSQM(O, O, x_r, T);
+ if (N & mask)
+ {
+ DSQM(X, T, x_r, O);
+ }
+ else
+ {
+ std::swap(O, T);
+ }
+ }
+
+ if (alloc)
+ {
+ delete[] T;
+ }
+}
+
+inline void powMatHelper(double * X, const int x_r, double * O, const int64_t N, double * T)
+{
+ // TODO: Actually the X^d where d is not an integer is made in the macro %s_p_s.sci
+ // So we should probably rewrite it in C++...
+ if (N >= 0)
+ {
+ powM(X, x_r, O, (uint64_t)N, T);
+ }
+ else
+ {
+ powM(X, x_r, O, (uint64_t)(-N), T);
+ inv(O, x_r);
+ }
+}
+
+inline void powMat(double * X, const int64_t x_r, const int64_t N, double ** O)
+{
+ // TODO: Actually the X^d where d is not an integer is made in the macro %s_p_s.sci
+ // So we should probably rewrite it in C++...
+ double * _O;
+ if (*O)
+ {
+ _O = *O;
+ }
+ else
+ {
+ _O = new double[x_r * x_r];
+ *O = _O;
+ }
+ powMatHelper(X, (int)x_r, _O, N, nullptr);
+}
+
+inline void powM(double * X, const int x_r, int64_t N)
+{
+ if (N >= 0)
+ {
+ powM(X, x_r, N);
+ }
+ else
+ {
+ powM(X, x_r, -N);
+ inv(X, x_r);
+ }
+}
+
+inline void powM(double * X, const int x_r, uint64_t N)
+{
+ if (x_r == 2)
+ {
+ pow2ui(X, N);
+ return;
+ }
+
+ const int size = x_r * x_r;
+
+ if (N == 0)
+ {
+ memset(X, 0, size * sizeof(double));
+ for (int i = 0; i < x_r; ++i)
+ {
+ X[i * (x_r + 1)] = 1;
+ }
+ return;
+ }
+ else if (N == 1)
+ {
+ return;
+ }
+ else if (N == 2)
+ {
+ double * T1 = new double[size];
+ DSQM(X, X, x_r, T1);
+ memcpy(X, T1, size * sizeof(double));
+ return;
+ }
+
+ double * T1 = new double[size];
+ const uint64_t l2N = analysis::tools::clzll(N);
+ if ((l2N & 1) && (N == (1 << l2N)))
+ {
+ // N is a power of 4
+ while (N >>= 2)
+ {
+ DSQM(X, X, x_r, T1);
+ DSQM(T1, T1, x_r, X);
+ }
+ delete[] T1;
+ return;
+ }
+
+ double * T2 = new double[size];
+ powM(X, x_r, T1, N >> 1, T2);
+ if (N & 1)
+ {
+ DSQM(X, T1, x_r, T2);
+ DSQM(T1, T2, x_r, X);
+ }
+ else
+ {
+ DSQM(T1, T1, x_r, X);
+ }
+
+ delete[] T1;
+ delete[] T2;
+}
+
+template<typename T>
+inline T powui(T x, uint64_t n)
+{
+ T p = x;
+ T y = (n & 1) ? x : 1;
+
+ while (n >>= 1)
+ {
+ p *= p;
+ if (n & 1)
+ {
+ y *= p;
+ }
+ }
+
+ return y;
+}
+
+template<typename T>
+inline T powi(T x, int64_t n)
+{
+ if (n >= 0)
+ {
+ return powui(x, n);
+ }
+ else
+ {
+ return 1 / powui(x, (uint64_t)(-n));
+ }
+}
+
+inline void powui(double & r, double & i, uint64_t n)
+{
+ if (i == 0)
+ {
+ r = powui(r, n);
+ return;
+ }
+
+ if (r == 0)
+ {
+ const double x = powui(i, n);
+ switch (n % 4)
+ {
+ case 0:
+ r = x;
+ i = 0;
+ return;
+ case 1:
+ r = 0;
+ i = x;
+ return;
+ case 2:
+ r = -x;
+ i = 0;
+ return;
+ case 3:
+ r = 0;
+ i = -x;
+ return;
+ }
+ }
+
+ double p_r = r;
+ double p_i = i;
+ double y_r, y_i;
+
+ if (n & 1)
+ {
+ y_r = r;
+ y_i = i;
+ }
+ else
+ {
+ y_r = 1;
+ y_i = 0;
+ }
+
+ while (n >>= 1)
+ {
+ const double s = p_r;
+ p_r = p_r * p_r - p_i * p_i;
+ p_i *= 2 * s;
+ if (n & 1)
+ {
+ const double s = y_r;
+ y_r = y_r * p_r - y_i * p_i;
+ y_i = y_i * p_r + s * p_i;
+ }
+ }
+
+ r = y_r;
+ i = y_i;
+}
+
+inline void powi(double & r, double & i, int64_t n)
+{
+ if (n >= 0)
+ {
+ powui(r, i, n);
+ }
+ else
+ {
+ powui(r, i, -n);
+ const double d = r * r + i * i;
+ r /= d;
+ i /= -d;
+ }
+}
+
+template<typename T, typename U, typename V = typename ScilabType<T, U>::type>
+inline V modulo(T x, U y)
+{
+ return x % y;
+}
+
+inline double modulo(double x, double y)
+{
+ return std::fmod(x, y);
+}
+
+template<typename T, typename U = T>
+inline U opposite(T x)
+{
+ return -x;
+}
+
+template<typename T, typename U = T>
+inline U pow2(T x)
+{
+ return x * x;
+}
+
+template<typename T, typename U = T>
+inline U powm1(T x)
+{
+ return 1 / x;
+}
+
+template<typename T>
+inline int asbool(T x)
+{
+ return x != 0;
+}
+
+template<typename T>
+inline int boolneg(T x)
+{
+ return !x;
+}
+
+template<typename T>
+inline bool asBool(T x)
+{
+ return x != 0;
+}
+
+template<typename T>
+inline bool Boolneg(T x)
+{
+ return !x;
+}
+
+template<typename T, typename U, typename V = typename ScilabType<T, U>::type>
+inline V binand(T x, U y)
+{
+ return x & y;
+}
+
+template<typename T, typename U, typename V = typename ScilabType<T, U>::type>
+inline V binor(T x, U y)
+{
+ return x | y;
+}
+
+template<typename T, typename U, typename V = typename ScilabType<T, U>::type>
+inline V binxor(T x, U y)
+{
+ return x ^ y;
+}
+
+template<typename T, typename U = T>
+inline U binneg(T x)
+{
+ return ~x;
+}
+
+template<typename T, typename U, typename V = bool>
+inline V booland(T x, U y)
+{
+ return x && y;
+}
+
+template<typename T, typename U, typename V = bool>
+inline V boolor(T x, U y)
+{
+ return x || y;
+}
+
+template<typename T, typename U, typename V = bool>
+inline V boolxor(T x, U y)
+{
+ return !x != !y;
+}
+
+template<typename T, typename U = bool>
+inline U boolneg(T x)
+{
+ return !x;
+}
+
+template<typename T>
+inline bool isStrictNegative(T x)
+{
+ return x < 0;
+}
+
+template<typename T>
+inline bool isStrictPositive(T x)
+{
+ return x > 0;
+}
+
+template<typename T>
+inline bool isAbsGreaterThan1(T x)
+{
+ return std::fabs(x) > 1;
+}
+
+template<typename T>
+inline bool getFalse(T x)
+{
+ return false;
+}
+
+template<typename T>
+inline bool getTrue(T x)
+{
+ return true;
+}
+
+
+inline void makeImplicitList(const double start, const double step, const double end, double *& out, int & r, int & c)
+{
+ double val;
+ int type = analysis::ForList64::checkList(start, end, step, val);
+
+ switch (type)
+ {
+ case 0:
+ out = nullptr;
+ r = c = 0;
+ break;
+ case 1:
+ out = new double[1];
+ out[0] = val;
+ r = c = 1;
+ break;
+ case 2:
+ {
+ uint64_t N = analysis::ForList64::size(start, end, step);
+ out = new double[N];
+ r = 1;
+ c = N;
+ double _s = start;
+ for (uint64_t i = 0; i < N; ++i, _s += step)
+ {
+ out[i] = _s;
+ }
+ break;
+ }
+ default:
+ break;
+ }
+}
+
+template<typename T>
+inline void __obliviousTranspose(const unsigned int rb, const unsigned int re, const unsigned int cb, const unsigned int ce, const T * const X, const int64_t x_stride, T * const O, const int64_t o_stride)
+{
+ // Algorithm found here: http://cacs.usc.edu/education/cs653/Frigo-CacheOblivious-FOCS99.pdf
+
+ const unsigned int dr = re - rb;
+ const unsigned int dc = ce - cb;
+
+ if (dr <= 16 && dc <= 16)
+ {
+ for (unsigned int i = rb; i < re; ++i)
+ {
+ for (unsigned int j = cb; j < ce; ++j)
+ {
+ O[j + i * o_stride] = X[i + j * x_stride];
+ }
+ }
+ }
+ else if (dr >= dc)
+ {
+ __obliviousTranspose(rb, rb + dr / 2, cb, ce, X, x_stride, O, o_stride);
+ __obliviousTranspose(rb + dr / 2, re, cb, ce, X, x_stride, O, o_stride);
+ }
+ else
+ {
+ __obliviousTranspose(rb, re, cb, cb + dc / 2, X, x_stride, O, o_stride);
+ __obliviousTranspose(rb, re, cb + dc / 2, ce, X, x_stride, O, o_stride);
+ }
+}
+
+template<typename T>
+inline void oTransp(const T * const X, const int64_t x_r, const int64_t x_c, T * const O, const int64_t o_r, const int64_t o_c)
+{
+ __obliviousTranspose(0, x_r, 0, x_c, X, x_r, O, o_r);
+}
+
+inline void transp(const double * X, const int64_t x_r, const int64_t x_c, double * O)
+{
+ for (int i = 0; i < x_r; ++i)
+ {
+ for (int j = 0; j < x_c; ++j)
+ {
+ O[j + x_c * i] = X[i + x_r * j];
+ }
+ }
+}
+
+inline void transp(double * X, const int64_t x_r)
+{
+ for (int i = 1; i < x_r; ++i)
+ {
+ for (int j = 0; j < i; ++j)
+ {
+ std::swap(X[i + x_r * j], X[j + x_r * i]);
+ }
+ }
+}
+
+inline void transp(double * X, const int64_t x_r, const int64_t x_c)
+{
+ if (x_r == x_c)
+ {
+ // Square matrix so transp can be done in place no need to have a temp
+ transp(X, x_r);
+ }
+ else
+ {
+ const int s = x_r * x_c;
+ double * O = new double[s];
+ oTransp(X, x_r, x_c, O, x_c, x_r);
+ memcpy(X, O, s * sizeof(double));
+ delete[] O;
+ }
+}
+
+inline void rdiv(double * X, const int64_t x_r, const int64_t x_c, double * Y, const int64_t y_r, const int64_t y_c, double ** O)
+{
+ // TODO: deal with warning messages...
+ // We know that x_c == y_c
+ // X/Y = (Y'\X')'
+
+ static char one = '1';
+ static char N = 'N';
+ static const double eps = C2F(dlamch)("e", 1L);
+
+ const int64_t max = std::max(y_r, y_c);
+ const int64_t min = std::min(y_r, y_c);
+ int info;
+ double * Xt = new double[max * x_r];
+ double * Yt = new double[y_c * y_r];
+ double * _O;
+ if (*O)
+ {
+ _O = *O;
+ }
+ else
+ {
+ _O = new double[x_r * y_r];
+ *O = _O;
+ }
+
+ oTransp(X, x_r, x_c, Xt, max, x_r);
+ oTransp(Y, y_r, y_c, Yt, y_c, y_r);
+
+ bool lsq = y_r != y_c;
+ double * sYt = nullptr;
+ int x_r_i = (int)x_r;
+ int x_c_i = (int)x_c;
+ int y_r_i = (int)y_r;
+ int y_c_i = (int)y_c;
+
+ if (!lsq)
+ {
+ double norm1 = C2F(dlange)(&one, &y_r_i, &y_c_i, Y, &y_r_i, nullptr);
+ int * pivot = new int[min];
+ // Y is modified by dgetrf so we need to copy to use eventually in lsq method
+ sYt = new double[y_r * y_c];
+ memcpy(sYt, Yt, sizeof(double) * y_r * y_c);
+ C2F(dgetrf)(&y_c_i, &y_r_i, Yt, &y_c_i, pivot, &info);
+ if (info > 0)
+ {
+ // Singular matrix (a diagonal element of U is exactly 0)
+ std::wcerr << "Singular matrix" << std::endl;
+ lsq = true;
+ delete[] pivot;
+ }
+ else
+ {
+ double rcond = 0;
+ double * work = new double[4 * y_c];
+ int * iwork = new int[y_c];
+ C2F(dgecon)(&one, &y_c_i, Yt, &y_c_i, &norm1, &rcond, work, iwork, &info);
+ if (rcond <= 10 * eps)
+ {
+ // Ill conditionned
+ std::wcerr << "Ill conditionned" << std::endl;
+ lsq = true;
+ }
+ else
+ {
+ C2F(dgetrs)(&N/*o transpose*/, &y_c_i, &x_r_i, Yt, &y_c_i, pivot, Xt, &y_c_i, &info);
+ oTransp(Xt, max, x_r, _O, x_r, y_r);
+ }
+
+ delete[] pivot;
+ delete[] work;
+ delete[] iwork;
+ }
+ }
+
+ if (lsq)
+ {
+ int * jpvt = new int[y_r]();
+ int max_i = (int)max;
+ double rcond = 10 * eps;
+ int rank;
+ int workMin = std::max(4 * y_c, std::max(min + 3 * y_r + 1, 2 * min + x_r));
+ double * work = new double[workMin];
+ info = 1;
+ if (sYt)
+ {
+ delete[] Yt;
+ Yt = sYt;
+ }
+ C2F(dgelsy1)(&y_c_i, &y_r_i, &x_r_i, Yt, &y_c_i, Xt, &max_i, jpvt, &rcond, &rank, work, &workMin, &info);
+ if (y_r != y_c && rank < min)
+ {
+ // useless
+ }
+
+ oTransp(Xt, max, x_r, _O, x_r, y_r);
+ delete[] jpvt;
+ delete[] work;
+ }
+
+ delete[] Xt;
+ delete[] Yt;
+}
+
+/* template<>
+ inline wchar_t * sum<wchar_t *, wchar_t *, wchar_t *>(wchar_t * x, wchar_t * y)
+ {
+ const size_t lenx = wcslen(x) * sizeof(wchar_t);
+ const size_t leny = (wcslen(y) + 1) * sizeof(wchar_t);
+ void * const s = MALLOC(lenx + leny);
+ memcpy(s, x, lenx);
+ memcpy((char *)s + lenx, y, leny);
+
+ return (wchar_t *)s;
+ }
+*/
+
+/*template<>
+ inline void binSM<wchar_t *, wchar_t *, wchar_t *, sum<wchar_t *, wchar_t *, wchar_t *>>(wchar_t * x, wchar_t * const * y, const int64_t y_r, const int64_t y_c, wchar_t ** o)
+ {
+ const size_t lenx = wcslen(x) * sizeof(wchar_t);
+ for (int64_t i = 0; i < y_r * y_c; ++i)
+ {
+ const size_t leny = (wcslen(y[i]) + 1) * sizeof(wchar_t);
+ void * const s = MALLOC(lenx + leny);
+ memcpy(s, x, lenx);
+ memcpy((char *)s + lenx, y[i], leny);
+ o[i] = (wchar_t *)s;
+ }
+ }
+
+ template<>
+ inline void binMS<wchar_t *, wchar_t *, wchar_t *, sum<wchar_t *, wchar_t *, wchar_t *>>(wchar_t * const * x, const int64_t x_r, const int64_t x_c, wchar_t * y, wchar_t ** o)
+ {
+ const size_t leny = (wcslen(y) + 1) * sizeof(wchar_t);
+ for (int64_t i = 0; i < x_r * x_c; ++i)
+ {
+ const size_t lenx = wcslen(x[i]) * sizeof(wchar_t);
+ void * const s = MALLOC(lenx + leny);
+ memcpy(s, x[i], lenx);
+ memcpy((char *)s + lenx, y, leny);
+ o[i] = (wchar_t *)s;
+ }
+ }
+*/
+
+template<unsigned int N>
+inline wchar_t * sum(wchar_t ** x)
+{
+ static_assert(N >= 3, "More than 3 strings expected in the sum");
+ size_t lens[N];
+ lens[0] = wcslen(x[0]) * sizeof(wchar_t);
+ for (unsigned int i = 1; i < N - 1; ++i)
+ {
+ lens[i] = lens[i - 1] + wcslen(x[i]) * sizeof(wchar_t);
+ }
+ lens[N - 1] = lens[N - 2] + (wcslen(x[N - 1]) + 1) * sizeof(wchar_t);
+
+ void * const s = MALLOC(lens[N - 1]);
+ memcpy(s, x[0], lens[0]);
+ for (unsigned int i = 1; i < N; ++i)
+ {
+ memcpy((char *)s + lens[i - 1], x[i], lens[i] - lens[i - 1]);
+ }
+
+ return (wchar_t *)s;
+}
+
+} // namespace BaseFunctions
+} // namespace jit
+
+#endif // __BASE_FUNCTIONS_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __BASE_FUNCTIONS_AGAIN_HXX__
+#define __BASE_FUNCTIONS_AGAIN_HXX__
+
+namespace jit
+{
+ namespace BaseFunctions
+ {
+ template<typename std::complex<double> (F)(const std::complex<double> &)>
+ inline static void complexify(const double in_re, const double in_im, double & out_re, double & out_im)
+ {
+ const std::complex<double> z = F(std::complex<double>(in_re, in_im));
+ out_re = z.real();
+ out_im = z.imag();
+ }
+
+ template<typename std::complex<double> (F)(const std::complex<double> &)>
+ inline static void cvectorize(const double * x_re, const double * x_im, const int64_t x_r, const int64_t x_c, double ** o_re, double ** o_im)
+ {
+ double * __restrict__ _o_re;
+ double * __restrict__ _o_im;
+ const int64_t size = x_r * x_c;
+ if (*o_re)
+ {
+ _o_re = *o_re;
+ _o_im = *o_im;
+ }
+ else
+ {
+ _o_re = new double[size];
+ _o_im = new double[size];
+ *o_re = _o_re;
+ }
+
+ for (int64_t i = 0; i < size; ++i)
+ {
+ const std::complex<double> z = F(std::complex<double>(x_re[i], x_im[i]));
+ _o_re[i] = z.real();
+ _o_im[i] = z.imag();
+ }
+ }
+ }
+}
+
+#endif // __BASE_FUNCTIONS_AGAIN_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __BASE_FUNCTIONS_MACROS_H__
+#define __BASE_FUNCTIONS_MACROS_H__
+
+#define __VECTORIZE__(NAME, CPPNAME, ShortTL, BaseTL, BaseTO) addSymbol(sam, "" #NAME "_M_" #ShortTL, &BaseFunctions::vectorize<BaseTL, BaseTO, CPPNAME>);
+#define __CUMULATE__(NAME, CPPNAME, ShortTL, BaseTL, BaseTO) addSymbol(sam, "" #NAME "_M_" #ShortTL, BaseFunctions::cumulate<BaseTL, CPPNAME>);
+#define __CUMULATEIN__(NAME, CPPNAME, ShortTL, BaseTL, BaseTO) addSymbol(sam, "" #NAME "_M_" #ShortTL, BaseFunctions::cumulateIn<BaseTL, CPPNAME>);
+#define __BINARY__(NAME, CPPNAME, __SM__, __MS__, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) addSymbol(sam, "" #NAME "_" #__SM__ "_" #ShortTL "_" #__MS__ "_" #ShortTR, BaseFunctions::bin##__SM__##__MS__<BaseTL, BaseTR, BaseTO, CPPNAME>);
+#define __UNARY__(NAME, CPPNAME, __SM__, ShortTL, BaseTL, BaseTO) addSymbol(sam, "" #NAME "_" #__SM__ "_" #ShortTL, BaseFunctions::unary##__SM__<BaseTL, BaseTO, CPPNAME>);
+
+#define ______ADD_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(add, BaseFunctions::sum, S, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______ADD_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(add, BaseFunctions::sum, M, S, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______ADD_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(add, BaseFunctions::sum, M, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______ADD_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(add, BaseFunctions::sum, U, U, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______SUB_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(sub, BaseFunctions::sub, S, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______SUB_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(sub, BaseFunctions::sub, M, S, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______SUB_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(sub, BaseFunctions::sub, M, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______SUB_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(sub, BaseFunctions::sub, U, U, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______UNARYMINUS_____M__(ShortTL, BaseTL, BaseTO) __UNARY__(unaryminus, BaseFunctions::opposite, M, ShortTL, BaseTL, BaseTO)
+
+#define ______TIMES_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(times, BaseFunctions::prod, S, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______TIMES_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(times, BaseFunctions::prod, M, S, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______TIMES_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) addSymbol(sam, "times_M_" #ShortTL "_M_" #ShortTR, BaseFunctions::timesMM<BaseTL, BaseTR, BaseTO>);
+#define ______TIMES_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(times, BaseFunctions::prod, U, U, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______DOTTIMES_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(dottimes, BaseFunctions::prod, S, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTTIMES_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(dottimes, BaseFunctions::prod, M, S, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTTIMES_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(dottimes, BaseFunctions::prod, M, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTTIMES_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(dottimes, BaseFunctions::prod, U, U, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______DOTPOWER_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(dotpower, BaseFunctions::pow, S, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTPOWER_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(dotpower, BaseFunctions::pow, M, S, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTPOWER_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(dotpower, BaseFunctions::pow, M, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTPOWER_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(dotpower, BaseFunctions::pow, U, U, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______DOTRDIV_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(dotrdiv, BaseFunctions::rdiv, S, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTRDIV_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(dotrdiv, BaseFunctions::rdiv, M, S, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTRDIV_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(dotrdiv, BaseFunctions::rdiv, M, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTRDIV_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(dotrdiv, BaseFunctions::rdiv, U, U, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______NEQ_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(neq, BaseFunctions::ne, S, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______NEQ_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(neq, BaseFunctions::ne, M, S, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______NEQ_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(neq, BaseFunctions::ne, M, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______NEQ_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(neq, BaseFunctions::ne, U, U, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______EQ_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(eq, BaseFunctions::eq, S, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______EQ_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(eq, BaseFunctions::eq, M, S, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______EQ_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(eq, BaseFunctions::eq, M, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______EQ_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(eq, BaseFunctions::eq, U, U, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______LE_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(le, BaseFunctions::le, S, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LE_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(le, BaseFunctions::le, M, S, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LE_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(le, BaseFunctions::le, M, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LE_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(le, BaseFunctions::le, U, U, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______GT_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(gt, BaseFunctions::gt, S, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______GT_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(gt, BaseFunctions::gt, M, S, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______GT_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(gt, BaseFunctions::gt, M, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______GT_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(gt, BaseFunctions::gt, U, U, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______LT_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(lt, BaseFunctions::lt, S, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LT_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(lt, BaseFunctions::lt, M, S, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LT_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(lt, BaseFunctions::lt, M, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LT_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(lt, BaseFunctions::lt, U, U, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______GE_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(ge, BaseFunctions::ge, S, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______GE_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(ge, BaseFunctions::ge, M, S, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______GE_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(ge, BaseFunctions::ge, M, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______GE_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(ge, BaseFunctions::ge, U, U, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______AND_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(and, BaseFunctions::booland, S, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______AND_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(and, BaseFunctions::booland, M, S, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______AND_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(and, BaseFunctions::booland, M, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______AND_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(and, BaseFunctions::booland, U, U, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______ANDAND_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(andand, BaseFunctions::booland, S, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______ANDAND_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(andand, BaseFunctions::booland, M, S, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______ANDAND_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(andand, BaseFunctions::booland, M, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______ANDAND_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(andand, BaseFunctions::booland, U, U, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______OR_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(or, BaseFunctions::boolor, S, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______OR_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(or, BaseFunctions::boolor, M, S, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______OR_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(or, BaseFunctions::boolor, M, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______OR_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(or, BaseFunctions::boolor, U, U, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______OROR_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(oror, BaseFunctions::boolor, S, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______OROR_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(oror, BaseFunctions::boolor, M, S, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______OROR_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(oror, BaseFunctions::boolor, M, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______OROR_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(oror, BaseFunctions::boolor, U, U, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______NOT_____M__(ShortTL, BaseTL, BaseTO) __UNARY__(not, BaseFunctions::boolneg, M, ShortTL, BaseTL, BaseTO)
+
+#define ______TRANSP_____M__(ShortTL, BaseTL, BaseTO) addSymbol(sam, "transp_M_" #ShortTL, BaseFunctions::oTransp<BaseTL>);
+
+#define __ABS_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(abs, BaseFunctions::abs, ShortTL, BaseTL, BaseTO)
+#define __COS_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(cos, std::cos, ShortTL, BaseTL, BaseTO)
+#define __SIN_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(sin, std::sin, ShortTL, BaseTL, BaseTO)
+#define __TAN_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(tan, std::tan, ShortTL, BaseTL, BaseTO)
+#define __TANH_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(tanh, std::tanh, ShortTL, BaseTL, BaseTO)
+#define __ATAN_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(atan, std::atan, ShortTL, BaseTL, BaseTO)
+#define __COSH_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(cosh, std::cosh, ShortTL, BaseTL, BaseTO)
+#define __SINH_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(sinh, std::sinh, ShortTL, BaseTL, BaseTO)
+#define __EXP_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(exp, std::exp, ShortTL, BaseTL, BaseTO)
+#define __ERF_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(erf, std::erf, ShortTL, BaseTL, BaseTO)
+#define __ERFC_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(erfc, std::erfc, ShortTL, BaseTL, BaseTO)
+#define __SIGN_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(sign, BaseFunctions::sign, ShortTL, BaseTL, BaseTO)
+#define __GAMMA_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(gamma, std::gamma, ShortTL, BaseTL, BaseTO)
+#define __GAMMALN_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(gammaln, std::lgamma, ShortTL, BaseTL, BaseTO)
+#define __CEIL_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(ceil, BaseFunctions::ceil, ShortTL, BaseTL, BaseTO)
+#define __FLOOR_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(floor, BaseFunctions::floor, ShortTL, BaseTL, BaseTO)
+#define __ROUND_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(round, BaseFunctions::round, ShortTL, BaseTL, BaseTO)
+#define __INT_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(int, BaseFunctions::trunc, ShortTL, BaseTL, BaseTO)
+#define __FIX_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(fix, BaseFunctions::trunc, ShortTL, BaseTL, BaseTO)
+#define __INT8_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(int8, BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+#define __INT16_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(int16, BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+#define __INT32_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(int32, BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+#define __INT64_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(int64, BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+#define __UINT8_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(uint8, BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+#define __UINT16_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(uint16, BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+#define __UINT32_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(uint32, BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+#define __UINT64_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(uint64, BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+//#define __ISINF_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(isinf, tools::isInfinite, ShortTL, BaseTL, BaseTO)
+//#define __ISNAN_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(isnan, tools::isNaN, ShortTL, BaseTL, BaseTO)
+#define __MAX_M__(ShortTL, BaseTL, BaseTO) __CUMULATE__(max, BaseFunctions::max, ShortTL, BaseTL, BaseTO)
+#define __MIN_M__(ShortTL, BaseTL, BaseTO) __CUMULATE__(min, BaseFunctions::min, ShortTL, BaseTL, BaseTO)
+#define __SUM_M__(ShortTL, BaseTL, BaseTO) __CUMULATE__(sum, BaseFunctions::sum, ShortTL, BaseTL, BaseTO)
+#define __PROD_M__(ShortTL, BaseTL, BaseTO) __CUMULATE__(prod, BaseFunctions::prod, ShortTL, BaseTL, BaseTO)
+#define __CUMSUM_M__(ShortTL, BaseTL, BaseTO) __CUMULATEIN__(cumsum, BaseFunctions::sum, ShortTL, BaseTL, BaseTO)
+#define __CUMPROD_M__(ShortTL, BaseTL, BaseTO) __CUMULATEIN__(cumprod, BaseFunctions::prod, ShortTL, BaseTL, BaseTO)
+
+#define __MODULO_SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(modulo, BaseFunctions::modulo, S, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __MODULO_MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(modulo, BaseFunctions::modulo, M, S, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __MODULO_MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(modulo, BaseFunctions::modulo, M, M, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __MODULO_UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(modulo, BaseFunctions::modulo, U, U, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+// NOT IMPLEMENTED FOR NOW !!
+#define ______DOTTRANSP_____M__(ShortTL, BaseTL, BaseTO)
+#define ______KRONTIMES_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______KRONTIMES_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______KRONTIMES_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______KRONTIMES_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LDIVIDE_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LDIVIDE_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LDIVIDE_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LDIVIDE_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______RDIVIDE_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______RDIVIDE_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______RDIVIDE_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______RDIVIDE_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______POWER_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______POWER_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______POWER_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______POWER_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __ZEROS_M__(ShortTL, BaseTL, BaseTO)
+#define __ZEROS_SS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __RAND_M__(ShortTL, BaseTL, BaseTO)
+#define __RAND_SS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __ONES_M__(ShortTL, BaseTL, BaseTO)
+#define __ONES_SS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __ASIN_M__(ShortTL, BaseTL, BaseTO)
+#define __ACOS_M__(ShortTL, BaseTL, BaseTO)
+#define __SQRT_M__(ShortTL, BaseTL, BaseTO)
+#define __LOG_M__(ShortTL, BaseTL, BaseTO)
+#define __SINM_M__(ShortTL, BaseTL, BaseTO)
+#define __ISINF_M__(ShortTL, BaseTL, BaseTO)
+#define __ISNAN_M__(ShortTL, BaseTL, BaseTO)
+#define __HYPOT_SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __HYPOT_MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __HYPOT_MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __HYPOT_UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __SIZE_M__(ShortTL, BaseTL, BaseTO)
+#define __TYPE_M__(ShortTL, BaseTL, BaseTO)
+#define __INTTYPE_M__(ShortTL, BaseTL, BaseTO)
+#define __IMAG_M__(ShortTL, BaseTL, BaseTO)
+#define __ISSCALAR_M__(ShortTL, BaseTL, BaseTO)
+#define __AND_M__(ShortTL, BaseTL, BaseTO)
+#define __AND_MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __OR_M__(ShortTL, BaseTL, BaseTO)
+#define __OR_MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __IMULT_M__(ShortTL, BaseTL, BaseTO)
+#define __ISREAL_M__(ShortTL, BaseTL, BaseTO)
+#define __ISREAL_MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __ARGN_S__(ShortTL, BaseTL, BaseTO)
+#define __MATRIX_MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __MATRIX_MSS__(ShortT1, BaseT1, ShortT2, BaseT2, ShortT3, BaseT3, BaseTO)
+
+#endif // __BASE_FUNCTIONS_MACROS_H__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __BASE_FUNCTIONS_MACROS2_H__
+#define __BASE_FUNCTIONS_MACROS2_H__
+
+#define __VECTORIZE__(NAME, CPPNAME, ShortTL, BaseTL, BaseTO) void NAME##_M##ShortTL(const BaseTL * __restrict__ x, const int64_t x_r, const int64_t x_c, BaseTO ** __restrict__ o) { jit::BaseFunctions::vectorize<BaseTL, BaseTO, CPPNAME>(x, x_r, x_c, o); }
+
+#define __CUMULATE__(NAME, CPPNAME, ShortTL, BaseTL, BaseTO) BaseTL NAME##_M##ShortTL(const BaseTL * x, const int64_t x_r, const int64_t x_c) { return jit::BaseFunctions::cumulate<BaseTL, CPPNAME>(x, x_r, x_c); }
+
+#define __CUMULATEIN__(NAME, CPPNAME, ShortTL, BaseTL, BaseTO) void NAME##_M##ShortTL(const BaseTL * x, const int64_t x_r, const int64_t x_c, BaseTL * o) { jit::BaseFunctions::cumulateIn<BaseTL, CPPNAME>(x, x_r, x_c, o); }
+
+#define __BINARY__SM(NAME, CPPNAME, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) void NAME##_S##ShortTL##M##ShortTR(const BaseTL x, const BaseTR * __restrict__ y, const int64_t y_r, const int64_t y_c, BaseTO ** __restrict__ o) { jit::BaseFunctions::binSM<BaseTL, BaseTR, BaseTO, CPPNAME>(x, y, y_r, y_c, o); }
+
+#define __BINARY__MS(NAME, CPPNAME, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) void NAME##_M##ShortTL##S##ShortTR(const BaseTL * __restrict__ x, const int64_t x_r, const int64_t x_c, const BaseTR y, BaseTO ** __restrict__ o) { jit::BaseFunctions::binMS<BaseTL, BaseTR, BaseTO, CPPNAME>(x, x_r, x_c, y, o); }
+
+#define __BINARY__MM(NAME, CPPNAME, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) void NAME##_M##ShortTL##M##ShortTR(const BaseTL * __restrict__ x, const int64_t x_r, const int64_t x_c, const BaseTR * __restrict__ y, const int64_t y_r, const int64_t y_c, BaseTO ** __restrict__ o) { jit::BaseFunctions::binMM<BaseTL, BaseTR, BaseTO, CPPNAME>(x, x_r, x_c, y, y_r, y_c, o); }
+
+#define __BINARY__UU(NAME, CPPNAME, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) void NAME##_U##ShortTL##U##ShortTR(const BaseTL * __restrict__ x, const int64_t x_r, const int64_t x_c, const BaseTR * __restrict__ y, const int64_t y_r, const int64_t y_c, BaseTO ** __restrict__ o) { jit::BaseFunctions::binUU<BaseTL, BaseTR, BaseTO, CPPNAME>(x, x_r, x_c, y, y_r, y_c, o); }
+
+#define __UNARY__M(NAME, CPPNAME, ShortTL, BaseTL, BaseTO) void NAME##_M##ShortTL(const BaseTL * x, const int64_t x_r, const int64_t x_c, BaseTO ** __restrict__ o) { jit::BaseFunctions::unaryM<BaseTL, BaseTO, CPPNAME>(x, x_r, x_c, o); }
+
+#define __BREAKON__SM(NAME, CPPNAME, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) int32_t breakOn_##NAME##_S##ShortTL##M##ShortTR(const BaseTL x, const BaseTR * __restrict__ y, const int64_t y_r, const int64_t y_c) { return jit::BaseFunctions::breakOnSM<false, BaseTL, BaseTR, CPPNAME>(x, y, y_r, y_c); }
+
+#define __BREAKON__MS(NAME, CPPNAME, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) int32_t breakOn_##NAME##_M##ShortTL##S##ShortTR(const BaseTL * __restrict__ x, const int64_t x_r, const int64_t x_c, const BaseTR y) { return jit::BaseFunctions::breakOnMS<false, BaseTL, BaseTR, CPPNAME>(x, x_r, x_c, y); }
+
+#define __BREAKON__MM(NAME, CPPNAME, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) int32_t breakOn_##NAME##_M##ShortTL##M##ShortTR(const BaseTL * __restrict__ x, const int64_t x_r, const int64_t x_c, const BaseTR * __restrict__ y, const int64_t y_r, const int64_t y_c) { return jit::BaseFunctions::breakOnMM<false, BaseTL, BaseTR, CPPNAME>(x, x_r, x_c, y, y_r, y_c); }
+
+
+#define ______ADD_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(add, jit::BaseFunctions::sum, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______ADD_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(add, jit::BaseFunctions::sum, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______ADD_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(add, jit::BaseFunctions::sum, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______ADD_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(add, jit::BaseFunctions::sum, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______SUB_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(sub, jit::BaseFunctions::sub, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______SUB_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(sub, jit::BaseFunctions::sub, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______SUB_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(sub, jit::BaseFunctions::sub, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______SUB_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(sub, jit::BaseFunctions::sub, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______UNARYMINUS_____M__(ShortTL, BaseTL, BaseTO) __UNARY__M(unaryminus, jit::BaseFunctions::opposite, ShortTL, BaseTL, BaseTO)
+
+#define ______TIMES_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(times, jit::BaseFunctions::prod, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______TIMES_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(times, jit::BaseFunctions::prod, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______TIMES_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) void times_M##ShortTL##M##ShortTR(const BaseTL * __restrict__ x, const int64_t x_r, const int64_t x_c, const BaseTR * __restrict__ y, const int64_t y_r, const int64_t y_c, BaseTO ** __restrict__ o) { jit::BaseFunctions::timesMM<BaseTL, BaseTR, BaseTO>(x, x_r, x_c, y, y_r, y_c, o); }
+#define ______TIMES_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______DOTTIMES_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(dottimes, jit::BaseFunctions::prod, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTTIMES_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(dottimes, jit::BaseFunctions::prod, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTTIMES_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(dottimes, jit::BaseFunctions::prod, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTTIMES_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(dottimes, jit::BaseFunctions::prod, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______DOTPOWER_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(dotpower, jit::BaseFunctions::pow, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTPOWER_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(dotpower, jit::BaseFunctions::pow, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTPOWER_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(dotpower, jit::BaseFunctions::pow, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTPOWER_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(dotpower, jit::BaseFunctions::pow, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______DOTRDIV_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(dotrdiv, jit::BaseFunctions::rdiv, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTRDIV_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(dotrdiv, jit::BaseFunctions::rdiv, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTRDIV_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(dotrdiv, jit::BaseFunctions::rdiv, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTRDIV_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(dotrdiv, jit::BaseFunctions::rdiv, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______NEQ_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(neq, jit::BaseFunctions::ne, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______NEQ_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(neq, jit::BaseFunctions::ne, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______NEQ_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(neq, jit::BaseFunctions::ne, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______NEQ_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(neq, jit::BaseFunctions::ne, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______EQ_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(eq, jit::BaseFunctions::eq, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__SM(eq, jit::BaseFunctions::eq, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______EQ_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(eq, jit::BaseFunctions::eq, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)__BREAKON__MS(eq, jit::BaseFunctions::eq, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______EQ_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(eq, jit::BaseFunctions::eq, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MM(eq, jit::BaseFunctions::eq, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______EQ_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(eq, jit::BaseFunctions::eq, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______LE_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(le, jit::BaseFunctions::le, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__SM(le, jit::BaseFunctions::le, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LE_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(le, jit::BaseFunctions::le, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MS(le, jit::BaseFunctions::le, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LE_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(le, jit::BaseFunctions::le, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MM(le, jit::BaseFunctions::le, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LE_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(le, jit::BaseFunctions::le, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______GT_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(gt, jit::BaseFunctions::gt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__SM(gt, jit::BaseFunctions::gt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______GT_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(gt, jit::BaseFunctions::gt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MS(gt, jit::BaseFunctions::gt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______GT_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(gt, jit::BaseFunctions::gt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MM(gt, jit::BaseFunctions::gt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______GT_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(gt, jit::BaseFunctions::gt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______LT_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(lt, jit::BaseFunctions::lt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__SM(lt, jit::BaseFunctions::lt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LT_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(lt, jit::BaseFunctions::lt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MS(lt, jit::BaseFunctions::lt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LT_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(lt, jit::BaseFunctions::lt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MM(lt, jit::BaseFunctions::lt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LT_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(lt, jit::BaseFunctions::lt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______GE_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(ge, jit::BaseFunctions::ge, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__SM(ge, jit::BaseFunctions::ge, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______GE_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(ge, jit::BaseFunctions::ge, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MS(ge, jit::BaseFunctions::ge, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______GE_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(ge, jit::BaseFunctions::ge, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MM(ge, jit::BaseFunctions::ge, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______GE_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(ge, jit::BaseFunctions::ge, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______AND_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(and, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__SM(and, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______AND_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(and, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MS(and, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______AND_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(and, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MM(and, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______AND_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(and, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______ANDAND_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(andand, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__SM(andand, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______ANDAND_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(andand, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MS(andand, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______ANDAND_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(andand, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MM(andand, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______ANDAND_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(andand, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______OR_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(or, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__SM(or, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______OR_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(or, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MS(or, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______OR_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(or, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MM(or, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______OR_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(or, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______OROR_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(oror, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__SM(oror, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______OROR_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(oror, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MS(oror, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______OROR_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(oror, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MM(oror, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______OROR_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(oror, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______NOT_____M__(ShortTL, BaseTL, BaseTO) __UNARY__M(not, jit::BaseFunctions::boolneg, ShortTL, BaseTL, BaseTO)
+
+//#define ______TRANSP_____M__(ShortTL, BaseTL, BaseTO) addSymbol(sam, "transp_M_" #ShortTL, jit::BaseFunctions::oTransp<BaseTL>);
+
+#define __ABS_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(abs, jit::BaseFunctions::abs, ShortTL, BaseTL, BaseTO)
+#define __COS_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(cos, std::cos, ShortTL, BaseTL, BaseTO)
+#define __SIN_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(sin, std::sin, ShortTL, BaseTL, BaseTO)
+#define __TAN_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(tan, std::tan, ShortTL, BaseTL, BaseTO)
+#define __TANH_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(tanh, std::tanh, ShortTL, BaseTL, BaseTO)
+#define __ATAN_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(atan, std::atan, ShortTL, BaseTL, BaseTO)
+#define __COSH_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(cosh, std::cosh, ShortTL, BaseTL, BaseTO)
+#define __SINH_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(sinh, std::sinh, ShortTL, BaseTL, BaseTO)
+#define __EXP_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(exp, std::exp, ShortTL, BaseTL, BaseTO)
+#define __ERF_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(erf, std::erf, ShortTL, BaseTL, BaseTO)
+#define __ERFC_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(erfc, std::erfc, ShortTL, BaseTL, BaseTO)
+#define __SIGN_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(sign, jit::BaseFunctions::sign, ShortTL, BaseTL, BaseTO)
+#define __GAMMA_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(gamma, std::gamma, ShortTL, BaseTL, BaseTO)
+#define __GAMMALN_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(gammaln, std::lgamma, ShortTL, BaseTL, BaseTO)
+#define __CEIL_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(ceil, jit::BaseFunctions::ceil, ShortTL, BaseTL, BaseTO)
+#define __FLOOR_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(floor, jit::BaseFunctions::floor, ShortTL, BaseTL, BaseTO)
+#define __ROUND_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(round, jit::BaseFunctions::round, ShortTL, BaseTL, BaseTO)
+#define __INT_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(int, jit::BaseFunctions::trunc, ShortTL, BaseTL, BaseTO)
+#define __FIX_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(fix, jit::BaseFunctions::trunc, ShortTL, BaseTL, BaseTO)
+#define __INT8_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(int8, jit::BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+#define __INT16_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(int16, jit::BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+#define __INT32_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(int32, jit::BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+#define __INT64_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(int64, jit::BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+#define __UINT8_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(uint8, jit::BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+#define __UINT16_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(uint16, jit::BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+#define __UINT32_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(uint32, jit::BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+#define __UINT64_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(uint64, jit::BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+//#define __ISINF_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(isinf, tools::isInfinite, ShortTL, BaseTL, BaseTO)
+//#define __ISNAN_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(isnan, tools::isNaN, ShortTL, BaseTL, BaseTO)
+#define __MAX_M__(ShortTL, BaseTL, BaseTO) __CUMULATE__(max, jit::BaseFunctions::max, ShortTL, BaseTL, BaseTO)
+#define __MIN_M__(ShortTL, BaseTL, BaseTO) __CUMULATE__(min, jit::BaseFunctions::min, ShortTL, BaseTL, BaseTO)
+#define __SUM_M__(ShortTL, BaseTL, BaseTO) __CUMULATE__(sum, jit::BaseFunctions::sum, ShortTL, BaseTL, BaseTO)
+#define __PROD_M__(ShortTL, BaseTL, BaseTO) __CUMULATE__(prod, jit::BaseFunctions::prod, ShortTL, BaseTL, BaseTO)
+#define __CUMSUM_M__(ShortTL, BaseTL, BaseTO) __CUMULATEIN__(cumsum, jit::BaseFunctions::sum, ShortTL, BaseTL, BaseTO)
+#define __CUMPROD_M__(ShortTL, BaseTL, BaseTO) __CUMULATEIN__(cumprod, jit::BaseFunctions::prod, ShortTL, BaseTL, BaseTO)
+
+// rand is a special call so no need to define it
+#define __RAND_M__(ShortTL, BaseTL, BaseTO)
+
+#define __MODULO_SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(modulo, jit::BaseFunctions::modulo, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __MODULO_MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(modulo, jit::BaseFunctions::modulo, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __MODULO_MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(modulo, jit::BaseFunctions::modulo, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __MODULO_UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(modulo, jit::BaseFunctions::modulo, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+// NOT IMPLEMENTED FOR NOW !!
+#define ______TRANSP_____M__(ShortTL, BaseTL, BaseTO)
+#define ______DOTTRANSP_____M__(ShortTL, BaseTL, BaseTO)
+#define ______KRONTIMES_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______KRONTIMES_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______KRONTIMES_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______KRONTIMES_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LDIVIDE_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LDIVIDE_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LDIVIDE_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LDIVIDE_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______RDIVIDE_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______RDIVIDE_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______RDIVIDE_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______RDIVIDE_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______POWER_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______POWER_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______POWER_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______POWER_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __ZEROS_M__(ShortTL, BaseTL, BaseTO)
+#define __ZEROS_SS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __RAND_M__(ShortTL, BaseTL, BaseTO)
+#define __RAND_SS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __ONES_M__(ShortTL, BaseTL, BaseTO)
+#define __ONES_SS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __ASIN_M__(ShortTL, BaseTL, BaseTO)
+#define __ACOS_M__(ShortTL, BaseTL, BaseTO)
+#define __SQRT_M__(ShortTL, BaseTL, BaseTO)
+#define __LOG_M__(ShortTL, BaseTL, BaseTO)
+#define __SINM_M__(ShortTL, BaseTL, BaseTO)
+#define __ISINF_M__(ShortTL, BaseTL, BaseTO)
+#define __ISNAN_M__(ShortTL, BaseTL, BaseTO)
+#define __HYPOT_SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __HYPOT_MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __HYPOT_MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __HYPOT_UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __SIZE_M__(ShortTL, BaseTL, BaseTO)
+#define __TYPE_M__(ShortTL, BaseTL, BaseTO)
+#define __INTTYPE_M__(ShortTL, BaseTL, BaseTO)
+#define __IMAG_M__(ShortTL, BaseTL, BaseTO)
+#define __ISSCALAR_M__(ShortTL, BaseTL, BaseTO)
+#define __AND_M__(ShortTL, BaseTL, BaseTO)
+#define __AND_MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __OR_M__(ShortTL, BaseTL, BaseTO)
+#define __OR_MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __IMULT_M__(ShortTL, BaseTL, BaseTO)
+#define __ISREAL_M__(ShortTL, BaseTL, BaseTO)
+#define __ISREAL_MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __ARGN_S__(ShortTL, BaseTL, BaseTO)
+#define __MATRIX_MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __MATRIX_MSS__(ShortT1, BaseT1, ShortT2, BaseT2, ShortT3, BaseT3, BaseTO)
+
+#endif // __BASE_FUNCTIONS_MACROS2_H__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __BASE_FUNCTIONS_MACROS3_H__
+#define __BASE_FUNCTIONS_MACROS3_H__
+
+#define DIMS(var) const int64_t var##_r, const int64_t var##_c
+#define I8_S(var) const int8_t var
+#define I16_S(var) const int16_t var
+#define I32_S(var) const int32_t var
+#define I64_S(var) const int64_t var
+#define UI8_S(var) const uint8_t var
+#define UI16_S(var) const uint16_t var
+#define UI32_S(var) const uint32_t var
+#define UI64_S(var) const uint64_t var
+#define DBL_S(var) const double var
+#define CPX_S(var) const double var_re, const double var_im
+#define BOOL_S(var) const int32_t var
+#define I8_M(var) const int8_t * var, DIMS(var)
+#define I16_M(var) const int16_t * var, DIMS(var)
+#define I32_M(var) const int32_t * var, DIMS(var)
+#define I64_M(var) const int64_t * var, DIMS(var)
+#define UI8_M(var) const uint8_t * var, DIMS(var)
+#define UI16_M(var) const uint16_t * var, DIMS(var)
+#define UI32_M(var) const uint32_t * var, DIMS(var)
+#define UI64_M(var) const uint64_t * var, DIMS(var)
+#define DBL_M(var) const double * var, DIMS(var)
+#define CPX_M(var) const double * var_re, const double * var_im, DIMS(var)
+#define BOOL_M(var) const int32_t * var, DIMS(var)
+#define DIMS_O(var) int64_t * var##_r, int64_t * var##_c
+#define I8_S_O(var) int8_t * var
+#define I16_S_O(var) int16_t * var
+#define I32_S_O(var) int32_t * var
+#define I64_S_O(var) int64_t * var
+#define UI8_S_O(var) uint8_t * var
+#define UI16_S_O(var) uint16_t * var
+#define UI32_S_O(var) uint32_t * var
+#define UI64_S_O(var) uint64_t * var
+#define DBL_S_O(var) double * var
+#define CPX_S_O(var) double * var_re, double * var_im
+#define BOOL_S_O(var) int32_t * var
+#define I8_M_O(var) int8_t ** var, DIMS_O(var)
+#define I16_M_O(var) int16_t ** var, DIMS_O(var)
+#define I32_M_O(var) int32_t ** var, DIMS_O(var)
+#define I64_M_O(var) int64_t ** var, DIMS_O(var)
+#define UI8_M_O(var) uint8_t ** var, DIMS_O(var)
+#define UI16_M_O(var) uint16_t ** var, DIMS_O(var)
+#define UI32_M_O(var) uint32_t ** var, DIMS_O(var)
+#define UI64_M_O(var) uint64_t ** var, DIMS_O(var)
+#define DBL_M_O(var) double ** var, DIMS_O(var)
+#define CPX_M_O(var) double ** var_re, double ** var_im, DIMS_O(var)
+#define BOOL_M_O(var) int32_t ** var, DIMS_O(var)
+
+#define __Args_DIMS(var) var##_r, var##_c
+#define __Args_I8_S(var) var
+#define __Args_I16_S(var) var
+#define __Args_I32_S(var) var
+#define __Args_I64_S(var) var
+#define __Args_UI8_S(var) var
+#define __Args_UI16_S(var) var
+#define __Args_UI32_S(var) var
+#define __Args_UI64_S(var) var
+#define __Args_DBL_S(var) var
+#define __Args_CPX_S(var) var_re, var_im
+#define __Args_BOOL_S(var) var
+#define __Args_I8_M(var) var, __Args_DIMS(var)
+#define __Args_I16_M(var) var, __Args_DIMS(var)
+#define __Args_I32_M(var) var, __Args_DIMS(var)
+#define __Args_I64_M(var) var, __Args_DIMS(var)
+#define __Args_UI8_M(var) var, __Args_DIMS(var)
+#define __Args_UI16_M(var) var, __Args_DIMS(var)
+#define __Args_UI32_M(var) var, __Args_DIMS(var)
+#define __Args_UI64_M(var) var, __Args_DIMS(var)
+#define __Args_DBL_M(var) var, __Args_DIMS(var)
+#define __Args_CPX_M(var) var_re, var_im, __Args_DIMS(var)
+#define __Args_BOOL_M(var) var, __Args_DIMS(var)
+#define __Args_I8_S_O(var) var
+#define __Args_I16_S_O(var) var
+#define __Args_I32_S_O(var) var
+#define __Args_I64_S_O(var) var
+#define __Args_UI8_S_O(var) var
+#define __Args_UI16_S_O(var) var
+#define __Args_UI32_S_O(var) var
+#define __Args_UI64_S_O(var) var
+#define __Args_DBL_S_O(var) var
+#define __Args_CPX_S_O(var) var_re, var_im
+#define __Args_BOOL_S_O(var) var
+#define __Args_I8_M_O(var) var, __Args_DIMS(var)
+#define __Args_I16_M_O(var) var, __Args_DIMS(var)
+#define __Args_I32_M_O(var) var, __Args_DIMS(var)
+#define __Args_I64_M_O(var) var, __Args_DIMS(var)
+#define __Args_UI8_M_O(var) var, __Args_DIMS(var)
+#define __Args_UI16_M_O(var) var, __Args_DIMS(var)
+#define __Args_UI32_M_O(var) var, __Args_DIMS(var)
+#define __Args_UI64_M_O(var) var, __Args_DIMS(var)
+#define __Args_DBL_M_O(var) var, __Args_DIMS(var)
+#define __Args_CPX_M_O(var) var_re, var_im, __Args_DIMS(var)
+#define __Args_BOOL_M_O(var) var, __Args_DIMS(var)
+
+#define __VECTORIZE__(NAME, CPPNAME, ShortTL, BaseTL, BaseTO) void NAME##_M##ShortTL(const BaseTL * __restrict__ x, const int64_t x_r, const int64_t x_c, BaseTO ** __restrict__ o) { jit::BaseFunctions::vectorize<BaseTL, BaseTO, CPPNAME>(x, x_r, x_c, o); }
+
+#define __CUMULATE__(NAME, CPPNAME, ShortTL, BaseTL, BaseTO) BaseTL NAME##_M##ShortTL(const BaseTL * x, const int64_t x_r, const int64_t x_c) { return jit::BaseFunctions::cumulate<BaseTL, CPPNAME>(x, x_r, x_c); }
+
+#define __CUMULATEIN__(NAME, CPPNAME, ShortTL, BaseTL, BaseTO) void NAME##_M##ShortTL(const BaseTL * x, const int64_t x_r, const int64_t x_c, BaseTL * o) { jit::BaseFunctions::cumulateIn<BaseTL, CPPNAME>(x, x_r, x_c, o); }
+
+#define __BINARY__SM(NAME, CPPNAME, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) void NAME##_S##ShortTL##M##ShortTR(const BaseTL x, const BaseTR * __restrict__ y, const int64_t y_r, const int64_t y_c, BaseTO ** __restrict__ o) { jit::BaseFunctions::binSM<BaseTL, BaseTR, BaseTO, CPPNAME>(x, y, y_r, y_c, o); }
+
+#define __BINARY__MS(NAME, CPPNAME, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) void NAME##_M##ShortTL##S##ShortTR(const BaseTL * __restrict__ x, const int64_t x_r, const int64_t x_c, const BaseTR y, BaseTO ** __restrict__ o) { jit::BaseFunctions::binMS<BaseTL, BaseTR, BaseTO, CPPNAME>(x, x_r, x_c, y, o); }
+
+#define __BINARY__MM(NAME, CPPNAME, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) void NAME##_M##ShortTL##M##ShortTR(const BaseTL * __restrict__ x, const int64_t x_r, const int64_t x_c, const BaseTR * __restrict__ y, const int64_t y_r, const int64_t y_c, BaseTO ** __restrict__ o) { jit::BaseFunctions::binMM<BaseTL, BaseTR, BaseTO, CPPNAME>(x, x_r, x_c, y, y_r, y_c, o); }
+
+#define __BINARY__UU(NAME, CPPNAME, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) void NAME##_U##ShortTL##U##ShortTR(const BaseTL * __restrict__ x, const int64_t x_r, const int64_t x_c, const BaseTR * __restrict__ y, const int64_t y_r, const int64_t y_c, BaseTO ** __restrict__ o) { jit::BaseFunctions::binUU<BaseTL, BaseTR, BaseTO, CPPNAME>(x, x_r, x_c, y, y_r, y_c, o); }
+
+#define __UNARY__M(NAME, CPPNAME, ShortTL, BaseTL, BaseTO) void NAME##_M##ShortTL(const BaseTL * x, const int64_t x_r, const int64_t x_c, BaseTO ** __restrict__ o) { jit::BaseFunctions::unaryM<BaseTL, BaseTO, CPPNAME>(x, x_r, x_c, o); }
+
+#define __BREAKON__SM(NAME, CPPNAME, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) int32_t breakOn_##NAME##_S##ShortTL##M##ShortTR(const BaseTL x, const BaseTR * __restrict__ y, const int64_t y_r, const int64_t y_c) { return jit::BaseFunctions::breakOnSM<false, BaseTL, BaseTR, CPPNAME>(x, y, y_r, y_c); }
+
+#define __BREAKON__MS(NAME, CPPNAME, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) int32_t breakOn_##NAME##_M##ShortTL##S##ShortTR(const BaseTL * __restrict__ x, const int64_t x_r, const int64_t x_c, const BaseTR y) { return jit::BaseFunctions::breakOnMS<false, BaseTL, BaseTR, CPPNAME>(x, x_r, x_c, y); }
+
+#define __BREAKON__MM(NAME, CPPNAME, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) int32_t breakOn_##NAME##_M##ShortTL##M##ShortTR(const BaseTL * __restrict__ x, const int64_t x_r, const int64_t x_c, const BaseTR * __restrict__ y, const int64_t y_r, const int64_t y_c) { return jit::BaseFunctions::breakOnMM<false, BaseTL, BaseTR, CPPNAME>(x, x_r, x_c, y, y_r, y_c); }
+
+
+#define __BINARY__(NAME, CPPNAME, Mangling, BaseTL, BaseTR, BaseTO) void NAME##_##Mangling(BaseTL(x), BaseTR(y), BaseTO(o)) { jit::BaseFunctions::binSM<BaseTL, BaseTR, BaseTO, CPPNAME>(x, y, y_r, y_c, o); }
+
+#define ______DOTPOWER_____(Mangling, BaseTL, BaseTR, BaseTO) __BINARY__(dotpower, jit::BaseFunctions::pow, Mangling, BaseTL, BaseTR, BaseTO)
+
+
+#define ______ADD_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(add, jit::BaseFunctions::sum, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______ADD_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(add, jit::BaseFunctions::sum, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______ADD_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(add, jit::BaseFunctions::sum, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______ADD_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(add, jit::BaseFunctions::sum, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______SUB_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(sub, jit::BaseFunctions::sub, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______SUB_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(sub, jit::BaseFunctions::sub, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______SUB_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(sub, jit::BaseFunctions::sub, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______SUB_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(sub, jit::BaseFunctions::sub, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______UNARYMINUS_____M__(ShortTL, BaseTL, BaseTO) __UNARY__M(unaryminus, jit::BaseFunctions::opposite, ShortTL, BaseTL, BaseTO)
+
+#define ______TIMES_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(times, jit::BaseFunctions::prod, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______TIMES_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(times, jit::BaseFunctions::prod, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______TIMES_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) void times_M##ShortTL##M##ShortTR(const BaseTL * __restrict__ x, const int64_t x_r, const int64_t x_c, const BaseTR * __restrict__ y, const int64_t y_r, const int64_t y_c, BaseTO ** __restrict__ o) { jit::BaseFunctions::timesMM<BaseTL, BaseTR, BaseTO>(x, x_r, x_c, y, y_r, y_c, o); }
+#define ______TIMES_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______DOTTIMES_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(dottimes, jit::BaseFunctions::prod, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTTIMES_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(dottimes, jit::BaseFunctions::prod, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTTIMES_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(dottimes, jit::BaseFunctions::prod, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTTIMES_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(dottimes, jit::BaseFunctions::prod, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+
+#define ______DOTRDIV_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(dotrdiv, jit::BaseFunctions::rdiv, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTRDIV_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(dotrdiv, jit::BaseFunctions::rdiv, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTRDIV_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(dotrdiv, jit::BaseFunctions::rdiv, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______DOTRDIV_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(dotrdiv, jit::BaseFunctions::rdiv, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______NEQ_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(neq, jit::BaseFunctions::ne, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______NEQ_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(neq, jit::BaseFunctions::ne, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______NEQ_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(neq, jit::BaseFunctions::ne, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______NEQ_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(neq, jit::BaseFunctions::ne, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______EQ_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(eq, jit::BaseFunctions::eq, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__SM(eq, jit::BaseFunctions::eq, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______EQ_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(eq, jit::BaseFunctions::eq, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)__BREAKON__MS(eq, jit::BaseFunctions::eq, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______EQ_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(eq, jit::BaseFunctions::eq, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MM(eq, jit::BaseFunctions::eq, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______EQ_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(eq, jit::BaseFunctions::eq, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______LE_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(le, jit::BaseFunctions::le, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__SM(le, jit::BaseFunctions::le, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LE_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(le, jit::BaseFunctions::le, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MS(le, jit::BaseFunctions::le, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LE_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(le, jit::BaseFunctions::le, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MM(le, jit::BaseFunctions::le, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LE_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(le, jit::BaseFunctions::le, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______GT_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(gt, jit::BaseFunctions::gt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__SM(gt, jit::BaseFunctions::gt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______GT_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(gt, jit::BaseFunctions::gt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MS(gt, jit::BaseFunctions::gt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______GT_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(gt, jit::BaseFunctions::gt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MM(gt, jit::BaseFunctions::gt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______GT_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(gt, jit::BaseFunctions::gt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______LT_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(lt, jit::BaseFunctions::lt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__SM(lt, jit::BaseFunctions::lt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LT_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(lt, jit::BaseFunctions::lt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MS(lt, jit::BaseFunctions::lt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LT_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(lt, jit::BaseFunctions::lt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MM(lt, jit::BaseFunctions::lt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LT_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(lt, jit::BaseFunctions::lt, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______GE_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(ge, jit::BaseFunctions::ge, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__SM(ge, jit::BaseFunctions::ge, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______GE_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(ge, jit::BaseFunctions::ge, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MS(ge, jit::BaseFunctions::ge, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______GE_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(ge, jit::BaseFunctions::ge, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MM(ge, jit::BaseFunctions::ge, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______GE_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(ge, jit::BaseFunctions::ge, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______AND_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(and, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__SM(and, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______AND_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(and, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MS(and, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______AND_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(and, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MM(and, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______AND_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(and, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______ANDAND_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(andand, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__SM(andand, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______ANDAND_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(andand, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MS(andand, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______ANDAND_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(andand, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MM(andand, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______ANDAND_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(andand, jit::BaseFunctions::booland, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______OR_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(or, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__SM(or, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______OR_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(or, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MS(or, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______OR_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(or, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MM(or, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______OR_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(or, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______OROR_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__SM(oror, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__SM(oror, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______OROR_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MS(oror, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MS(oror, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______OROR_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__MM(oror, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BREAKON__MM(oror, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______OROR_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__UU(oror, jit::BaseFunctions::boolor, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+#define ______NOT_____M__(ShortTL, BaseTL, BaseTO) __UNARY__M(not, jit::BaseFunctions::boolneg, ShortTL, BaseTL, BaseTO)
+
+//#define ______TRANSP_____M__(ShortTL, BaseTL, BaseTO) addSymbol(sam, "transp_M_" #ShortTL, jit::BaseFunctions::oTransp<BaseTL>);
+
+#define __ABS_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(abs, jit::BaseFunctions::abs, ShortTL, BaseTL, BaseTO)
+#define __COS_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(cos, std::cos, ShortTL, BaseTL, BaseTO)
+#define __SIN_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(sin, std::sin, ShortTL, BaseTL, BaseTO)
+#define __TAN_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(tan, std::tan, ShortTL, BaseTL, BaseTO)
+#define __TANH_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(tanh, std::tanh, ShortTL, BaseTL, BaseTO)
+#define __ATAN_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(atan, std::atan, ShortTL, BaseTL, BaseTO)
+#define __COSH_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(cosh, std::cosh, ShortTL, BaseTL, BaseTO)
+#define __SINH_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(sinh, std::sinh, ShortTL, BaseTL, BaseTO)
+#define __EXP_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(exp, std::exp, ShortTL, BaseTL, BaseTO)
+#define __ERF_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(erf, std::erf, ShortTL, BaseTL, BaseTO)
+#define __ERFC_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(erfc, std::erfc, ShortTL, BaseTL, BaseTO)
+#define __SIGN_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(sign, jit::BaseFunctions::sign, ShortTL, BaseTL, BaseTO)
+#define __GAMMA_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(gamma, std::gamma, ShortTL, BaseTL, BaseTO)
+#define __GAMMALN_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(gammaln, std::lgamma, ShortTL, BaseTL, BaseTO)
+#define __CEIL_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(ceil, jit::BaseFunctions::ceil, ShortTL, BaseTL, BaseTO)
+#define __FLOOR_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(floor, jit::BaseFunctions::floor, ShortTL, BaseTL, BaseTO)
+#define __ROUND_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(round, jit::BaseFunctions::round, ShortTL, BaseTL, BaseTO)
+#define __INT_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(int, jit::BaseFunctions::trunc, ShortTL, BaseTL, BaseTO)
+#define __FIX_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(fix, jit::BaseFunctions::trunc, ShortTL, BaseTL, BaseTO)
+#define __INT8_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(int8, jit::BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+#define __INT16_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(int16, jit::BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+#define __INT32_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(int32, jit::BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+#define __INT64_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(int64, jit::BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+#define __UINT8_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(uint8, jit::BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+#define __UINT16_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(uint16, jit::BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+#define __UINT32_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(uint32, jit::BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+#define __UINT64_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(uint64, jit::BaseFunctions::cast, ShortTL, BaseTL, BaseTO)
+//#define __ISINF_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(isinf, tools::isInfinite, ShortTL, BaseTL, BaseTO)
+//#define __ISNAN_M__(ShortTL, BaseTL, BaseTO) __VECTORIZE__(isnan, tools::isNaN, ShortTL, BaseTL, BaseTO)
+#define __MAX_M__(ShortTL, BaseTL, BaseTO) __CUMULATE__(max, jit::BaseFunctions::max, ShortTL, BaseTL, BaseTO)
+#define __MIN_M__(ShortTL, BaseTL, BaseTO) __CUMULATE__(min, jit::BaseFunctions::min, ShortTL, BaseTL, BaseTO)
+#define __SUM_M__(ShortTL, BaseTL, BaseTO) __CUMULATE__(sum, jit::BaseFunctions::sum, ShortTL, BaseTL, BaseTO)
+#define __PROD_M__(ShortTL, BaseTL, BaseTO) __CUMULATE__(prod, jit::BaseFunctions::prod, ShortTL, BaseTL, BaseTO)
+#define __CUMSUM_M__(ShortTL, BaseTL, BaseTO) __CUMULATEIN__(cumsum, jit::BaseFunctions::sum, ShortTL, BaseTL, BaseTO)
+#define __CUMPROD_M__(ShortTL, BaseTL, BaseTO) __CUMULATEIN__(cumprod, jit::BaseFunctions::prod, ShortTL, BaseTL, BaseTO)
+
+// rand is a special call so no need to define it
+#define __RAND_M__(ShortTL, BaseTL, BaseTO)
+
+#define __MODULO_SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(modulo, jit::BaseFunctions::modulo, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __MODULO_MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(modulo, jit::BaseFunctions::modulo, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __MODULO_MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(modulo, jit::BaseFunctions::modulo, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __MODULO_UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO) __BINARY__(modulo, jit::BaseFunctions::modulo, ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+
+// NOT IMPLEMENTED FOR NOW !!
+#define ______TRANSP_____M__(ShortTL, BaseTL, BaseTO)
+#define ______DOTTRANSP_____M__(ShortTL, BaseTL, BaseTO)
+#define ______KRONTIMES_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______KRONTIMES_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______KRONTIMES_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______KRONTIMES_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LDIVIDE_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LDIVIDE_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LDIVIDE_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______LDIVIDE_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______RDIVIDE_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______RDIVIDE_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______RDIVIDE_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______RDIVIDE_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______POWER_____SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______POWER_____MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______POWER_____MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define ______POWER_____UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __ZEROS_M__(ShortTL, BaseTL, BaseTO)
+#define __ZEROS_SS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __RAND_M__(ShortTL, BaseTL, BaseTO)
+#define __RAND_SS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __ONES_M__(ShortTL, BaseTL, BaseTO)
+#define __ONES_SS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __ASIN_M__(ShortTL, BaseTL, BaseTO)
+#define __ACOS_M__(ShortTL, BaseTL, BaseTO)
+#define __SQRT_M__(ShortTL, BaseTL, BaseTO)
+#define __LOG_M__(ShortTL, BaseTL, BaseTO)
+#define __SINM_M__(ShortTL, BaseTL, BaseTO)
+#define __ISINF_M__(ShortTL, BaseTL, BaseTO)
+#define __ISNAN_M__(ShortTL, BaseTL, BaseTO)
+#define __HYPOT_SM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __HYPOT_MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __HYPOT_MM__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __HYPOT_UU__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __SIZE_M__(ShortTL, BaseTL, BaseTO)
+#define __TYPE_M__(ShortTL, BaseTL, BaseTO)
+#define __INTTYPE_M__(ShortTL, BaseTL, BaseTO)
+#define __IMAG_M__(ShortTL, BaseTL, BaseTO)
+#define __ISSCALAR_M__(ShortTL, BaseTL, BaseTO)
+#define __AND_M__(ShortTL, BaseTL, BaseTO)
+#define __AND_MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __OR_M__(ShortTL, BaseTL, BaseTO)
+#define __OR_MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __IMULT_M__(ShortTL, BaseTL, BaseTO)
+#define __ISREAL_M__(ShortTL, BaseTL, BaseTO)
+#define __ISREAL_MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __ARGN_S__(ShortTL, BaseTL, BaseTO)
+#define __MATRIX_MS__(ShortTL, BaseTL, ShortTR, BaseTR, BaseTO)
+#define __MATRIX_MSS__(ShortT1, BaseT1, ShortT2, BaseT2, ShortT3, BaseT3, BaseTO)
+
+#endif // __BASE_FUNCTIONS_MACROS3_H__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __CAST_HXX__
+#define __CAST_HXX__
+
+#include "JITVisitor.hxx"
+
+namespace jit
+{
+
+ class Cast
+ {
+
+ public:
+
+ template<typename T>
+ inline static llvm::Value * cast(llvm::Value * v, const bool sgn, JITVisitor & jit)
+ {
+ return v->getType()->isIntegerTy() ? __Cast<T, std::is_integral<T>::value, true>::get(v, sgn, jit) : __Cast<T, std::is_integral<T>::value, false>::get(v, sgn, jit);
+ }
+
+ /**
+ * Promote value according to Scilab's rules:
+ * - int_X+int_Y => int_max(X,Y)
+ * - uint_X+int_Y => uint_max(X,Y)
+ * - int_X+uint_Y => uint_max(X,Y)
+ * - uint_X+uint_Y => uint_max(X,Y)
+ * - double+(u)int_X => (u)int_X
+ */
+ inline static void promoteScilabValue(const bool lsign, llvm::Value *& l, const bool rsign, llvm::Value *& r, llvm::IRBuilder<> & builder)
+ {
+ llvm::Type * lt = l->getType();
+ llvm::Type * rt = r->getType();
+
+ if (lt != rt)
+ {
+ if (lt->isIntegerTy())
+ {
+ if (rt->isIntegerTy())
+ {
+ if (lt->getIntegerBitWidth() > rt->getIntegerBitWidth())
+ {
+ r = rsign ? builder.CreateSExt(r, lt) : builder.CreateZExt(r, lt);
+ }
+ else
+ {
+ l = lsign ? builder.CreateSExt(l, rt) : builder.CreateZExt(l, rt);
+ }
+ }
+ else
+ {
+ r = lsign ? builder.CreateFPToSI(r, lt) : builder.CreateFPToUI(r, lt);
+ }
+ }
+ else
+ {
+ if (rt->isIntegerTy())
+ {
+ l = rsign ? builder.CreateFPToSI(l, rt) : builder.CreateFPToUI(l, rt);
+ }
+ else
+ {
+ if (lt->getPrimitiveSizeInBits() > rt->getPrimitiveSizeInBits())
+ {
+ r = builder.CreateFPExt(r, lt);
+ }
+ else
+ {
+ l = builder.CreateFPExt(l, rt);
+ }
+ }
+ }
+ }
+ }
+
+ inline static void castInt64(llvm::Value *& v, JITVisitor & jit)
+ {
+ if (v->getType() == jit.getTy<int64_t>())
+ {
+ v = jit.getBuilder().CreateUIToFP(v, jit.getTy<double>());
+ }
+ }
+
+ inline static void castInt1(llvm::Value *& v, JITVisitor & jit)
+ {
+ if (v->getType() == jit.getTy<bool>())
+ {
+ v = jit.getBuilder().CreateZExt(v, jit.getTy<int32_t>());
+ }
+ }
+
+ private:
+
+ // First bool is for if typename is integral
+ // Second is for if v is integral
+ template<typename, bool, bool>
+ struct __Cast
+ {
+ inline static llvm::Value * get(llvm::Value * v, JITVisitor & jit);
+ };
+
+ template<typename T>
+ struct __Cast<T, true, true>
+ {
+ inline static llvm::Value * get(llvm::Value * v, const bool sgn, JITVisitor & jit)
+ {
+ return jit.getBuilder().CreateIntCast(v, jit.getTy<T>(), std::is_signed<T>::value);
+ }
+ };
+
+ template<typename T>
+ struct __Cast<T, true, false>
+ {
+ inline static llvm::Value * get(llvm::Value * v, const bool sgn, JITVisitor & jit)
+ {
+ // Workaround for bug: http://llvm.org/bugs/show_bug.cgi?id=21130
+ // TODO: remove it when it will be fixed in llvm trunk
+ llvm::Type * ty = jit.getTy<int64_t>();
+ llvm::Value * i = std::is_signed<T>::value ? jit.getBuilder().CreateFPToSI(v, ty) : jit.getBuilder().CreateFPToUI(v, ty);
+ return jit.getBuilder().CreateIntCast(i, jit.getTy<T>(), std::is_signed<T>::value);
+ }
+ };
+
+ template<typename T>
+ struct __Cast<T, false, true>
+ {
+ inline static llvm::Value * get(llvm::Value * v, const bool sgn, JITVisitor & jit)
+ {
+ return sgn ? jit.getBuilder().CreateSIToFP(v, jit.getTy<T>()) : jit.getBuilder().CreateUIToFP(v, jit.getTy<T>());
+ }
+ };
+
+ template<typename T>
+ struct __Cast<T, false, false>
+ {
+ inline static llvm::Value * get(llvm::Value * v, const bool sgn, JITVisitor & jit)
+ {
+ return jit.getBuilder().CreateFPCast(v, jit.getTy<T>());
+ }
+ };
+
+ };
+
+ // try to find the Scilab type in operation
+ template<bool, bool, typename, typename>
+ struct __ScilabType_Helper;
+
+ template<bool, typename, typename>
+ struct __ScilabTypeII_Helper;
+
+ template<bool, typename, typename>
+ struct __GreaterType_Helper;
+
+ template<typename, typename>
+ struct __GreaterType;
+
+ template<typename T, typename U>
+ struct __GreaterType_Helper<true, T, U>
+ {
+ typedef T type;
+ };
+
+ template<typename T, typename U>
+ struct __GreaterType_Helper<false, T, U>
+ {
+ typedef U type;
+ };
+
+ template<typename T, typename U>
+ struct __GreaterType
+ {
+ typedef typename __GreaterType_Helper<sizeof(T) >= sizeof(U), T, U>::type type;
+ };
+
+ template<typename T, typename U>
+ struct __ScilabTypeII_Helper<true, T, U>
+ {
+ typedef typename std::make_unsigned<typename __GreaterType<T, U>::type>::type type;
+ };
+
+ template<typename T, typename U>
+ struct __ScilabTypeII_Helper<false, T, U>
+ {
+ typedef typename __GreaterType<T, U>::type type;
+ };
+
+ template<typename T, typename U>
+ struct __ScilabTypeII
+ {
+ typedef typename __ScilabTypeII_Helper<std::is_unsigned<T>::value || std::is_unsigned<U>::value, T, U>::type type;
+ };
+
+ template<typename T, typename U>
+ struct __ScilabType_Helper<true, true, T, U>
+ {
+ typedef typename __ScilabTypeII<T, U>::type type;
+ };
+
+ template<typename U>
+ struct __ScilabType_Helper<true, true, bool, U>
+ {
+ typedef U type;
+ };
+
+ template<typename T>
+ struct __ScilabType_Helper<true, true, T, bool>
+ {
+ typedef T type;
+ };
+
+ template<>
+ struct __ScilabType_Helper<true, true, bool, bool>
+ {
+ typedef bool type;
+ };
+
+ template<typename T, typename U>
+ struct __ScilabType_Helper<true, false, T, U>
+ {
+ typedef T type;
+ };
+
+ template<typename U>
+ struct __ScilabType_Helper<true, false, bool, U>
+ {
+ typedef U type;
+ };
+
+ template<typename T, typename U>
+ struct __ScilabType_Helper<false, true, T, U>
+ {
+ typedef U type;
+ };
+
+ template<typename T>
+ struct __ScilabType_Helper<false, true, T, bool>
+ {
+ typedef T type;
+ };
+
+ template<typename T, typename U>
+ struct __ScilabType_Helper<false, false, T, U>
+ {
+ typedef T type;
+ };
+
+ template<typename T, typename U>
+ struct ScilabType
+ {
+ typedef typename __ScilabType_Helper<std::is_integral<T>::value, std::is_integral<U>::value, T, U>::type type;
+ };
+
+ template<typename T>
+ struct is_pure_integral
+ {
+ const static bool value = std::is_integral<T>::value && !std::is_same<T, bool>::value;
+ };
+
+} // namespace jit
+
+#endif // __CAST_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __DISASSEMBLER_HXX__
+#define __DISASSEMBLER_HXX__
+
+
+namespace jit
+{
+
+ class Disassembler
+ {
+
+ const llvm::MCDisassembler;
+
+ public:
+
+ Disassembler(const Target & target, const std::string & triple, MCSubtargetInfo & STI)
+ {
+ target.createMCDisassembler(STI);
+ // TODO: on verra ca plus tard
+
+ }
+
+
+
+int Disassembler::disassemble(const Target &T,
+ const std::string &Triple,
+ MCSubtargetInfo &STI,
+ MCStreamer &Streamer,
+ MemoryBuffer &Buffer,
+ SourceMgr &SM,
+ raw_ostream &Out) {
+
+ };
+
+}
+
+#endif // __DISASSEMBLER_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __JIT_ARRAYOF_HXX__
+#define __JIT_ARRAYOF_HXX__
+
+#include <cassert>
+
+#include "internal.hxx"
+#include "JITVisitor.hxx"
+#include "JITScilabVal.hxx"
+
+namespace jit
+{
+ class JITArrayof : public JITScilabVal
+ {
+
+ protected:
+
+ llvm::Value * rows;
+ llvm::Value * cols;
+ llvm::Value * refCount;
+ llvm::Value * data;
+
+ public:
+
+ JITArrayof() : data(nullptr) { }
+
+ JITArrayof(llvm::Value * const _data, llvm::Value * const _rows, llvm::Value * const _cols, llvm::Value * const _refCount, const std::string & name) : rows(_rows), cols(_cols), refCount(_refCount), data(_data)
+ {
+ if (!name.empty())
+ {
+ rows->setName(name + "_r");
+ cols->setName(name + "_c");
+ refCount->setName(name + "_rc");
+ data->setName(name);
+ }
+ }
+
+ JITArrayof(JITVisitor & jit, llvm::Value * const _data, llvm::Value * const _rows, llvm::Value * const _cols, llvm::Value * const _refCount, const std::string & name) : JITArrayof(jit.getAlloca(_data), jit.getAlloca(_rows), jit.getAlloca(_cols), jit.getAlloca(_refCount), name) { }
+
+ JITArrayof(JITVisitor & jit, llvm::Value * const _data, llvm::Value * const _rows, llvm::Value * const _cols, llvm::Value * const _refCount, const bool alloc, const std::string & name) : JITArrayof(jit.getValue(_data, alloc), jit.getValue(_rows, alloc), jit.getValue(_cols, alloc), jit.getValue(_refCount, alloc), name) { }
+
+ bool isValid() const override
+ {
+ return data != nullptr;
+ }
+
+ llvm::Value * loadRows(JITVisitor & jit) const override
+ {
+ return jit.getBuilder().CreateAlignedLoad(rows, sizeof(int64_t));
+ }
+
+ llvm::Value * loadCols(JITVisitor & jit) const override
+ {
+ return jit.getBuilder().CreateAlignedLoad(cols, sizeof(int64_t));
+ }
+
+ llvm::Value * getRows(JITVisitor & jit) const override
+ {
+ return rows;
+ }
+
+ llvm::Value * getCols(JITVisitor & jit) const override
+ {
+ return cols;
+ }
+
+ void setRefCount(llvm::Value * _refCount) override
+ {
+ refCount = _refCount;
+ }
+
+ void setData(llvm::Value * _data) override
+ {
+ data = _data;
+ }
+
+ void setRows(llvm::Value * _rows) override
+ {
+ rows = _rows;
+ }
+
+ void setCols(llvm::Value * _cols) override
+ {
+ cols = _cols;
+ }
+
+ void storeRows(JITVisitor & jit, llvm::Value * _rows) override
+ {
+ jit.getBuilder().CreateAlignedStore(_rows, rows, sizeof(int64_t));
+ }
+
+ void storeCols(JITVisitor & jit, llvm::Value * _cols) override
+ {
+ jit.getBuilder().CreateAlignedStore(_cols, cols, sizeof(int64_t));
+ }
+
+ bool isScalar() const override
+ {
+ return false;
+ }
+
+ llvm::Value * getData(JITVisitor & jit) const override
+ {
+ return data;
+ }
+
+ llvm::Value * loadData(JITVisitor & jit) override
+ {
+ return jit.getBuilder().CreateAlignedLoad(data, sizeof(void *));
+ }
+
+ void storeData(JITVisitor & jit, llvm::Value * _data) override
+ {
+ jit.getBuilder().CreateAlignedStore(_data, data, sizeof(void *));
+ }
+
+ /*types::InternalType::ScilabId getScilabId() const override
+ {
+
+ }
+
+ void setScilabId(const types::InternalType::ScilabId id) override
+ {
+
+ }
+ */
+
+ llvm::Value * getRefCount(JITVisitor & jit) const override
+ {
+ return refCount;
+ //return refCount.load(jit);
+ }
+
+ llvm::Value * loadRefCount(JITVisitor & jit) const override
+ {
+ return nullptr;
+ //return refCount.load(jit);
+ }
+
+ void incRefCount(JITVisitor & jit) override
+ {
+ /*llvm::Value * rc_i64 = refCount.load(jit);
+ llvm::Value * rcp1_i64 = jit.getBuilder().CreateNSWAdd(rc_i64, jit.getConstant<int64_t>(1));
+ refCount.store(jit, rcp1_i64);*/
+ }
+
+ void decRefCount(JITVisitor & jit) override
+ {
+ /*llvm::Value * rc_i64 = refCount.load(jit);
+ llvm::Value * rcp1_i64 = jit.getBuilder().CreateNSWSub(rc_i64, jit.getConstant<int64_t>(1));
+ refCount.store(jit, rcp1_i64);*/
+ }
+ };
+}
+
+#endif // __JIT_ARRAYOF_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __JIT_ARRAYOFS_HXX__
+#define __JIT_ARRAYOFS_HXX__
+
+#include <complex>
+
+#include "internal.hxx"
+#include "JITVisitor.hxx"
+#include "JITArrayof.hxx"
+
+namespace jit
+{
+ template<typename T>
+ class JITArrayofT : public JITArrayof
+ {
+
+ public:
+
+ JITArrayofT(llvm::Value * const data, llvm::Value * const rows, llvm::Value * const cols, llvm::Value * const refCount, const std::string & name) : JITArrayof(data, rows, cols, refCount, name) { }
+
+ JITArrayofT(JITVisitor & jit, const std::string & name) : JITArrayof(jit.getAlloca<T *>(), jit.getAlloca<int64_t>(), jit.getAlloca<int64_t>(), jit.getAlloca<int64_t>(), name) { }
+
+ JITArrayofT(JITVisitor & jit, const std::string & name, const bool init) : JITArrayof(init ? jit.getValue((T *)nullptr, true) : jit.getAlloca<T *>(), init ? jit.getValue(int64_t(0), true) : jit.getAlloca<int64_t>(), init ? jit.getValue(int64_t(0), true) : jit.getAlloca<int64_t>(), init ? jit.getValue(int64_t(0), true) : jit.getAlloca<int64_t>(), name) { }
+
+ JITArrayofT(JITVisitor & jit, const T * data, const int64_t rows, const int64_t cols, const std::string & name) : JITArrayof(jit.getValue(data, true), jit.getValue(rows, true), jit.getValue(cols, true), jit.getValue<int64_t>(0), name) { }
+
+ JITArrayofT(JITVisitor & jit, llvm::Value * const data, llvm::Value * const rows, llvm::Value * const cols, llvm::Value * const refCount, const std::string & name) : JITArrayof(jit, data, rows, cols, refCount, name) { }
+
+ JITArrayofT(JITVisitor & jit, llvm::Value * const data, llvm::Value * const rows, llvm::Value * const cols, llvm::Value * const refCount, const bool alloc, const std::string & name) : JITArrayof(jit, data, rows, cols, refCount, alloc, name) { }
+
+ virtual ~JITArrayofT() { }
+
+ bool isSigned() const override
+ {
+ return std::is_integral<T>::value && std::is_signed<T>::value;
+ }
+
+ };
+
+ typedef JITArrayofT<double> JITArrayofDouble;
+ typedef JITArrayofT<int8_t> JITArrayofInt8;
+ typedef JITArrayofT<int16_t> JITArrayofInt16;
+ typedef JITArrayofT<int32_t> JITArrayofInt32;
+ typedef JITArrayofT<int64_t> JITArrayofInt64;
+ typedef JITArrayofT<uint8_t> JITArrayofUInt8;
+ typedef JITArrayofT<uint16_t> JITArrayofUInt16;
+ typedef JITArrayofT<uint32_t> JITArrayofUInt32;
+ typedef JITArrayofT<uint64_t> JITArrayofUInt64;
+ typedef JITArrayofT<int32_t> JITArrayofBool;
+ typedef JITArrayofT<wchar_t> JITArrayofString;
+
+ class JITArrayofComplex : public JITArrayof
+ {
+
+ llvm::Value * imag;
+
+ public:
+
+ JITArrayofComplex(llvm::Value * const _real, llvm::Value * const _imag, llvm::Value * const _rows, llvm::Value * const _cols, llvm::Value * const _refCount, const std::string & _name) : JITArrayof(_real, _rows, _cols, _refCount, _name), imag(_imag)
+ {
+ if (!_name.empty())
+ {
+ imag->setName(_name);
+ }
+ }
+
+ JITArrayofComplex(JITVisitor & jit, const std::string & name) : JITArrayof(jit.getAlloca<double *>(), jit.getAlloca<int64_t>(), jit.getAlloca<int64_t>(), jit.getAlloca<int64_t>(), name), imag(jit.getAlloca<double *>())
+ {
+ if (!name.empty())
+ {
+ imag->setName(name);
+ }
+ }
+
+ JITArrayofComplex(JITVisitor & jit, const std::string & name, const bool init) : JITArrayof(init ? jit.getValue((double *)nullptr, true) : jit.getAlloca<double *>(), init ? jit.getValue(int64_t(0), true) : jit.getAlloca<int64_t>(), init ? jit.getValue(int64_t(0), true) : jit.getAlloca<int64_t>(), init ? jit.getValue(int64_t(0), true) : jit.getAlloca<int64_t>(), name), imag(init ? jit.getValue((double *)nullptr, true) : jit.getAlloca<double *>())
+ {
+ if (!name.empty())
+ {
+ imag->setName(name);
+ }
+ }
+
+ JITArrayofComplex(JITVisitor & jit, const double * _real, const double * _imag, const int64_t _rows, const int64_t _cols, const std::string & _name) : JITArrayof(jit.getValue(_real, true), jit.getValue(_rows, true), jit.getValue(_cols, true), jit.getValue<int64_t>(0), _name), imag(jit.getValue(imag, true))
+ {
+ if (!_name.empty())
+ {
+ imag->setName(_name);
+ }
+ }
+
+ JITArrayofComplex(JITVisitor & jit, llvm::Value * const _real, llvm::Value * const _imag, llvm::Value * const _rows, llvm::Value * const _cols, llvm::Value * const _refCount, const std::string & _name) : JITArrayof(jit, _real, _rows, _cols, _refCount, _name), imag(_imag)
+ {
+ if (!_name.empty())
+ {
+ imag->setName(_name);
+ }
+ }
+
+ JITArrayofComplex(JITVisitor & jit, llvm::Value * const data, llvm::Value * const rows, llvm::Value * const cols, llvm::Value * const refCount, const bool alloc, const std::string & name) : JITArrayof(jit, data, rows, cols, refCount, alloc, name) { }
+
+ virtual ~JITArrayofComplex() { }
+
+ llvm::Value * loadReal(JITVisitor & jit) override;
+ llvm::Value * loadImag(JITVisitor & jit) override;
+ llvm::Value * getImag(JITVisitor & jit) const override;
+
+ std::pair<llvm::Value *, llvm::Value *> loadReIm(JITVisitor & jit) override;
+ void storeImag(JITVisitor & jit, llvm::Value * _imag) override;
+ void storeReIm(JITVisitor & jit, std::pair<llvm::Value *, llvm::Value *> reim) override;
+ void setImag(llvm::Value * imag) override;
+
+ };
+
+}
+
+#endif // __JIT_ARRAYOFS_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __JIT_SCALAR_HXX__
+#define __JIT_SCALAR_HXX__
+
+#include "JITVisitor.hxx"
+#include "JITScilabVal.hxx"
+#include "Cast.hxx"
+
+namespace jit
+{
+ class JITScalar : public JITScilabVal
+ {
+
+ protected:
+
+ llvm::Value * data;
+ bool allocated;
+
+ public:
+
+ JITScalar() : data(nullptr) { }
+
+ JITScalar(llvm::Value * _data, const bool _allocated, const std::string & name) : data(_data), allocated(_allocated)
+ {
+ if (!name.empty())
+ {
+ data->setName(name);
+ }
+ }
+
+ bool isValid() const override
+ {
+ return data != nullptr;
+ }
+
+ llvm::Value * loadRows(JITVisitor & jit) const override
+ {
+ return nullptr;
+ }
+
+ llvm::Value * loadCols(JITVisitor & jit) const override
+ {
+ return nullptr;
+ }
+
+ llvm::Value * getRows(JITVisitor & jit) const override
+ {
+ return nullptr;
+ }
+
+ llvm::Value * getCols(JITVisitor & jit) const override
+ {
+ return nullptr;
+ }
+
+ void setRefCount(llvm::Value * _refCount) override
+ {
+ }
+
+ void setData(llvm::Value * _data) override
+ {
+ data = _data;
+ }
+
+ void setRows(llvm::Value * _rows) override
+ {
+ }
+
+ void setCols(llvm::Value * _cols) override
+ {
+ }
+
+ void storeRows(JITVisitor & jit, llvm::Value * rows) override
+ {
+
+ }
+
+ void storeCols(JITVisitor & jit, llvm::Value * cols) override
+ {
+
+ }
+
+ bool isScalar() const override
+ {
+ return true;
+ }
+
+ llvm::Value * loadData(JITVisitor & jit) override
+ {
+ if (allocated)
+ {
+ return jit.getBuilder().CreateAlignedLoad(data, jit.getTySizeInBytes(data));
+ }
+ else
+ {
+ return data;
+ }
+ }
+
+ llvm::Value * getData(JITVisitor & jit) const override
+ {
+ return data;
+ }
+
+ void storeData(JITVisitor & jit, llvm::Value * _data) override
+ {
+ if (allocated)
+ {
+ jit.getBuilder().CreateAlignedStore(_data, data, jit.getTySizeInBytes(data));
+ }
+ else
+ {
+ assert(false && "storeData mustn't be called");
+ }
+ }
+
+ /*types::InternalType::ScilabId getScilabId() const override
+ {
+
+ }
+
+ void setScilabId(const types::InternalType::ScilabId id) override
+ {
+
+ }
+ */
+
+ llvm::Value * loadRefCount(JITVisitor & jit) const override
+ {
+ return nullptr;
+ }
+
+ llvm::Value * getRefCount(JITVisitor & jit) const override
+ {
+ return nullptr;
+ }
+
+ void incRefCount(JITVisitor & jit) override
+ {
+
+ }
+
+ void decRefCount(JITVisitor & jit) override
+ {
+
+ }
+ };
+}
+
+#endif // __JIT_SCALAR_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __JIT_SCALARS_HXX__
+#define __JIT_SCALARS_HXX__
+
+#include <complex>
+
+#include "internal.hxx"
+#include "JITVisitor.hxx"
+#include "JITScalar.hxx"
+
+namespace jit
+{
+
+ template<typename T>
+ class JITScalT : public JITScalar
+ {
+
+ public:
+
+ JITScalT(JITVisitor & jit, const std::string & name) : JITScalar(jit.getAlloca<T>(), true, name) { }
+
+ JITScalT(JITVisitor & jit, const T value, const bool alloc, const std::string & name) : JITScalar(jit.getValue(value, alloc), alloc, name) { }
+
+ JITScalT(JITVisitor & jit, llvm::Value * const data, const bool alloc, const std::string & name) : JITScalar(jit.getValue(data, alloc, name), alloc, name) { }
+
+ JITScalT(llvm::Value * const data, const bool alloc = false, const std::string & name = "") : JITScalar(data, alloc, name) { }
+
+ virtual ~JITScalT() { }
+
+ bool isSigned() const override
+ {
+ return std::is_integral<T>::value && std::is_signed<T>::value;
+ }
+ };
+
+ typedef JITScalT<double> JITScalDouble;
+ typedef JITScalT<int8_t> JITScalInt8;
+ typedef JITScalT<int16_t> JITScalInt16;
+ typedef JITScalT<int32_t> JITScalInt32;
+ typedef JITScalT<int64_t> JITScalInt64;
+ typedef JITScalT<uint8_t> JITScalUInt8;
+ typedef JITScalT<uint16_t> JITScalUInt16;
+ typedef JITScalT<uint32_t> JITScalUInt32;
+ typedef JITScalT<uint64_t> JITScalUInt64;
+ typedef JITScalT<int32_t> JITScalBool;
+ typedef JITScalT<wchar_t> JITScalString;
+
+ class JITScalComplex : public JITScalar
+ {
+
+ llvm::Value * imag;
+
+ public:
+
+ JITScalComplex() : JITScalar() { }
+
+ JITScalComplex(JITVisitor & jit, const std::string & name) : JITScalar(jit.getAlloca<double>(), true, name + "_re"), imag(jit.getAlloca<double>(name + "_im"))
+ {
+ }
+
+ JITScalComplex(JITVisitor & jit, const std::complex<double> value, const bool alloc, const std::string & name) : JITScalar(jit.getValue(value.real(), alloc), alloc, name), imag(jit.getValue(value.imag(), alloc))
+ {
+ if (!name.empty())
+ {
+ imag->setName(name);
+ }
+ }
+
+ JITScalComplex(JITVisitor & jit, llvm::Value * const _real, llvm::Value * const _imag, const bool alloc, const std::string & name) : JITScalar(jit.getValue(_real, alloc, name), alloc, name), imag(jit.getValue(_imag, alloc, name))
+ {
+ if (!name.empty())
+ {
+ imag->setName(name);
+ }
+ }
+
+ JITScalComplex(llvm::Value * const _real, llvm::Value * const _imag, const bool alloc = false, const std::string & name = "") : JITScalar(_real, alloc, name), imag(_imag)
+ {
+ if (!name.empty())
+ {
+ imag->setName(name);
+ }
+ }
+
+ virtual ~JITScalComplex() { }
+
+ bool isSigned() const override { return false; }
+
+ llvm::Value * loadReal(JITVisitor & jit) override;
+ llvm::Value * loadImag(JITVisitor & jit) override;
+ llvm::Value * getImag(JITVisitor & jit) const override;
+
+ std::pair<llvm::Value *, llvm::Value *> loadReIm(JITVisitor & jit) override;
+ void storeImag(JITVisitor & jit, llvm::Value * _imag) override;
+ void storeReIm(JITVisitor & jit, std::pair<llvm::Value *, llvm::Value *> reim) override;
+ void setImag(llvm::Value * imag) override;
+
+ static llvm::Type * getCpx128Ty(JITVisitor & jit);
+ };
+}
+
+#endif // __JIT_SCALARS_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __JIT_SCILAB_VAL_HXX__
+#define __JIT_SCILAB_VAL_HXX__
+
+#include "internal.hxx"
+#include "JITVisitor.hxx"
+//#include "JITVal.hxx"
+
+namespace jit
+{
+ class JITScilabVal
+ {
+
+ public:
+
+ virtual ~JITScilabVal() { }
+
+ virtual bool isValid() const = 0;
+ virtual llvm::Value * getRows(JITVisitor & jit) const = 0;
+ virtual llvm::Value * getCols(JITVisitor & jit) const = 0;
+ virtual llvm::Value * loadRows(JITVisitor & jit) const = 0;
+ virtual llvm::Value * loadCols(JITVisitor & jit) const = 0;
+ virtual void setData(llvm::Value * data) = 0;
+ virtual void setRows(llvm::Value * rows) = 0;
+ virtual void setCols(llvm::Value * cols) = 0;
+ virtual void setRefCount(llvm::Value * refCount) = 0;
+ virtual void storeRows(JITVisitor & jit, llvm::Value * rows) = 0;
+ virtual void storeCols(JITVisitor & jit, llvm::Value * cols) = 0;
+ virtual bool isScalar() const = 0;
+ virtual llvm::Value * getData(JITVisitor & jit) const = 0;
+ virtual llvm::Value * getReal(JITVisitor & jit) const { return getData(jit); }
+ virtual llvm::Value * getImag(JITVisitor & jit) const { return nullptr; }
+ virtual llvm::Value * loadData(JITVisitor & jit) = 0;
+ virtual llvm::Value * loadReal(JITVisitor & jit) { return loadData(jit); }
+ virtual llvm::Value * loadImag(JITVisitor & jit) { return nullptr; }
+ virtual std::pair<llvm::Value *, llvm::Value *> loadReIm(JITVisitor & jit) { return std::pair<llvm::Value *, llvm::Value *>(nullptr, nullptr); }
+ virtual void storeData(JITVisitor & jit, llvm::Value * data) = 0;
+ virtual void storeReal(JITVisitor & jit, llvm::Value * real) { storeData(jit, real); }
+ virtual void storeImag(JITVisitor & jit, llvm::Value * imag) { }
+ virtual void storeReIm(JITVisitor & jit, std::pair<llvm::Value *, llvm::Value *> imag) { }
+ virtual void setReal(llvm::Value * real) { setData(real); }
+ virtual void setImag(llvm::Value * imag) { }
+ //virtual types::InternalType::ScilabId getScilabId() const = 0;
+ //virtual void setScilabId(const types::InternalType::ScilabId id) = 0;
+ virtual llvm::Value * getRefCount(JITVisitor & jit) const = 0;
+ virtual llvm::Value * loadRefCount(JITVisitor & jit) const = 0;
+ virtual void incRefCount(JITVisitor & jit) = 0;
+ virtual void decRefCount(JITVisitor & jit) = 0;
+ virtual bool isSigned() const = 0;
+ };
+
+}
+
+#endif // __JIT_SCILAB_VAL_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __JIT_VAL_HXX__
+#define __JIT_VAL_HXX__
+
+#include <cassert>
+
+#include "llvm/ExecutionEngine/GenericValue.h"
+#include "llvm/IR/Instructions.h"
+#include "llvm/IR/LLVMContext.h"
+#include "llvm/IR/IRBuilder.h"
+
+#include "internal.hxx"
+#include "JITVisitor.hxx"
+#include "TIType.hxx"
+
+namespace jit
+{
+ class JITVal
+ {
+
+ llvm::Value * const value;
+ const bool alloc;
+ const bool issigned;
+
+ JITVal(llvm::Value * const _value, const bool _alloc, const bool _issigned) : value(_value), alloc(_alloc), issigned(_issigned) { }
+
+ public:
+
+ inline llvm::Type * getType() const
+ {
+ return value->getType();
+ }
+
+ inline llvm::Value * getValue() const
+ {
+ return value;
+ }
+
+ inline bool isSigned() const
+ {
+ return issigned;
+ }
+
+ inline void store(JITVisitor & jit, const JITVal & var)
+ {
+ store(jit, var.load(jit));
+ }
+
+ inline void store(JITVisitor & jit, llvm::Value * _value)
+ {
+ if (alloc)
+ {
+ jit.getBuilder().CreateStore(_value, value);
+ }
+ else
+ {
+ assert(false && "Cannot store a value");
+ }
+ }
+
+ inline llvm::Value * load(JITVisitor & jit) const
+ {
+ if (alloc)
+ {
+ return jit.getBuilder().CreateLoad(value);
+ }
+ else
+ {
+ return value;
+ }
+ }
+
+ template<typename T>
+ inline static JITVal getAlloc(JITVisitor & jit, const std::string & name = "")
+ {
+ llvm::AllocaInst * alloca = jit.getBuilder().CreateAlloca(jit.getTy<T>(), nullptr, name);
+ alloca->setAlignment(jit.getTySizeInBytes<T>());
+
+ return JITVal(alloca, true, std::is_integral<T>::value && std::is_signed<T>::value);
+ }
+
+ template<typename T>
+ inline static JITVal getAlloc(JITVisitor & jit, const T val, const std::string & name = "")
+ {
+ llvm::AllocaInst * alloca = jit.getBuilder().CreateAlloca(jit.getTy<T>(), nullptr, name);
+ alloca->setAlignment(sizeof(T));
+ builder.CreateAlignedStore(jit.getConstant<T>(val), alloca, sizeof(T));
+
+ return JITVal(alloca, true, std::is_integral<T>::value && std::is_signed<T>::value);
+ }
+
+ template<typename T>
+ inline static JITVal get(JITVisitor & jit, const T val, const std::string & name = "")
+ {
+ return JITVal(jit.getConstant<T>(val, name), false, std::is_integral<T>::value && std::is_signed<T>::value);
+ }
+
+ };
+
+} // namespace jit
+
+#endif // __JIT_VAL_HXX__
+++ /dev/null
-/*
- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
- * Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
- *
- * This file must be used under the terms of the CeCILL.
- * This source file is licensed as described in the file COPYING, which
- * you should have received as part of this distribution. The terms
- * are also available at
- * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
- *
- */
-
-#ifndef __JIT_VALUES_HXX__
-#define __JIT_VALUES_HXX__
-
-#include "llvm/ExecutionEngine/GenericValue.h"
-#include "llvm/IR/Instructions.h"
-#include "llvm/IR/LLVMContext.h"
-#include "llvm/IR/IRBuilder.h"
-
-#include "internal.hxx"
-#include "JITVisitor.hxx"
-#include "TIType.hxx"
-
-namespace jit
-{
-class JITVal
-{
-
-public:
-
- JITVal(llvm::Value * _val, llvm::Type * _type) : val(_val), type(_type) { }
-
- virtual bool is_scalar() const = 0;
- virtual int get_type_size() const = 0;
- virtual types::InternalType::ScilabId get_scilab_id() const = 0;
- virtual void store(llvm::Value * x, JITVisitor & visitor) const = 0;
- virtual void store(llvm::Value * x, llvm::Value * free, JITVisitor & visitor) const = 0;
- virtual void storeR(llvm::Value * _r, JITVisitor & visitor) const = 0;
- virtual void storeC(llvm::Value * _c, JITVisitor & visitor) const = 0;
- virtual llvm::Value * load(JITVisitor & visitor) const = 0;
- virtual llvm::Value * loadR(JITVisitor & visitor) const = 0;
- virtual llvm::Value * loadC(JITVisitor & visitor) const = 0;
- virtual llvm::Value * getR() const = 0;
- virtual llvm::Value * getC() const = 0;
- virtual llvm::Value * get_must_free() const = 0;
- virtual void free() = 0;
-
- inline llvm::Value * get_value() const
- {
- return val;
- }
-
- inline llvm::Type * get_type() const
- {
- return type;
- }
-
- inline bool is_null() const
- {
- return !val;
- }
-
- void store(JITVal & x, JITVisitor & visitor) const
- {
- if (is_scalar())
- {
- store(x.val, visitor);
- }
- else
- {
- store(x.val, x.get_must_free(), visitor);
- storeR(x.getR(), visitor);
- storeC(x.getC(), visitor);
- }
- }
-
- static JITVal * get(JITVisitor & visitor, types::InternalType * const pIT, const bool alloc = false, const std::string & name = "");
- static JITVal * get(JITVisitor & visitor, const analysis::TIType & t, const bool alloc = false, const std::string & name = "");
-
-protected:
-
- llvm::Value * val;
- llvm::Type * type;
-
- template<typename T>
- inline static llvm::Value * load(llvm::Value * v, bool _scalar, llvm::IRBuilder<> & builder)
- {
- if (llvm::isa<llvm::AllocaInst>(v))
- {
- return builder.CreateAlignedLoad(llvm::cast<llvm::AllocaInst>(v), _scalar ? sizeof(T) : sizeof(T *));
- }
-
- return v;
- }
-
- template<typename T>
- inline static void store(llvm::Value * v, llvm::Value * x, bool _scalar, llvm::IRBuilder<> & builder)
- {
- if (llvm::isa<llvm::AllocaInst>(v))
- {
- llvm::Value * _x = llvm::isa<llvm::AllocaInst>(x) ? builder.CreateAlignedLoad(llvm::cast<llvm::AllocaInst>(x), sizeof(T)) : x;
-
- builder.CreateAlignedStore(_x, llvm::cast<llvm::AllocaInst>(v), _scalar ? sizeof(T) : sizeof(T *));
- }
- else
- {
- throw ast::InternalError("Scilab: Cannot store a value !");
- }
- }
-};
-
-template<typename T>
-class JITScalarVal : public JITVal
-{
-public:
-
- JITScalarVal(JITVisitor & visitor, T _val, bool alloc = false, const std::string & name = "") : JITVal(alloc ? visitor.getAlloca(_val, name) : visitor.getConstant(_val), getLLVMTy<T>(visitor.getContext())) { }
-
- JITScalarVal(JITVisitor & visitor, JITVal * _val, const std::string & name = "") : JITVal(visitor.getAlloca(_val->get_value(), _val->get_type(), _val->get_type_size(), name), _val->get_type()) { }
-
- JITScalarVal(JITVisitor & visitor, llvm::Value * _val) : JITVal(_val, getLLVMTy<T>(visitor.getContext())) { }
-
- inline bool is_scalar() const
- {
- return true;
- }
-
- inline int get_type_size() const
- {
- return sizeof(T);
- }
-
- inline types::InternalType::ScilabId get_scilab_id() const
- {
- return types::InternalType::IdScalarDouble;
- }
-
- inline void store(llvm::Value * x, JITVisitor & visitor) const
- {
- JITVal::store<T>(this->val, x, true, visitor.getBuilder());
- }
-
- inline void store(llvm::Value * x, llvm::Value * free, JITVisitor & visitor) const { }
-
- inline void storeR(llvm::Value * _r, JITVisitor & visitor) const { }
- inline void storeC(llvm::Value * _c, JITVisitor & visitor) const { }
-
- llvm::Value * load(JITVisitor & visitor) const
- {
- return JITVal::load<T>(val, true, visitor.getBuilder());
- }
-
- inline llvm::Value * loadR(JITVisitor & visitor) const
- {
- return JITVisitor::ONE;
- }
- inline llvm::Value * loadC(JITVisitor & visitor) const
- {
- return JITVisitor::ONE;
- }
-
- inline llvm::Value * getR() const
- {
- return nullptr;
- }
- inline llvm::Value * getC() const
- {
- return nullptr;
- }
-
-
- inline llvm::Value * get_must_free() const
- {
- return nullptr;
- }
-
- inline void free() { }
-};
-
-template<typename T>
-class JITMatrixVal : public JITVal
-{
- llvm::Value * r;
- llvm::Value * c;
- llvm::Value * must_be_freed;
-
-public:
-
- JITMatrixVal(JITVisitor & visitor, const int _r, const int _c, T * _val, const bool alloc = false, const std::string & name = "") : JITVal(alloc ? visitor.getAllocaPtr(_val, name) : visitor.getConstantPtr(_val), getLLVMTy<T * >(visitor.getContext())),
- r(alloc ? visitor.getAlloca(_r, name + "_row") : visitor.getConstant(_r)),
- c(alloc ? visitor.getAlloca(_c, name + "_col") : visitor.getConstant(_c)),
- must_be_freed(alloc ? visitor.getAlloca<bool>(false, name + "_MBF") : visitor.getConstant(false))
- {
- }
-
- JITMatrixVal(JITVisitor & visitor, llvm::Value * _r, llvm::Value * _c, llvm::Value * _val) : JITVal(/*visitor.getAllocaPtr<T>(_val)*/_val, getLLVMTy<T * >(visitor.getContext())), r(_r), c(_c), must_be_freed(visitor.getConstant(true/*visitor.getAlloca<bool>(true, "must_be_freed_t")*/))
- {
- }
-
- inline llvm::Value * get_must_free() const
- {
- return must_be_freed;
- }
-
- inline void free() { }
-
- inline bool is_scalar() const
- {
- return false;
- }
-
- inline int get_type_size() const
- {
- return sizeof(T*);
- }
-
- inline types::InternalType::ScilabId get_scilab_id() const
- {
- return types::InternalType::IdDouble;
- }
-
- static void debug(double * p)
- {
- std::cout << "free=" << (void*)p << std::endl;
- }
-
- inline void store(llvm::Value * x, llvm::Value * free, JITVisitor & visitor) const
- {
- llvm::Function * func = &visitor.getFunction();
- llvm::LLVMContext & context = visitor.getContext();
- llvm::IRBuilder<> & builder = visitor.getBuilder();
- llvm::BasicBlock * cur_block = builder.GetInsertBlock();
-
- llvm::BasicBlock * BBThen = llvm::BasicBlock::Create(context, "", func);
- llvm::BasicBlock * BBElse = llvm::BasicBlock::Create(context, "", func);
-
- builder.CreateCondBr(JITVal::load<bool>(must_be_freed, false, visitor.getBuilder()), BBThen, BBElse);
-
- builder.SetInsertPoint(BBThen);
-
- //llvm::Value * toCall = visitor.getPointer(reinterpret_cast<void *>(&debug), getLLVMPtrFuncTy<void, double *>(context));
- //builder.CreateCall(toCall, load(visitor));
- llvm::Value * _free = llvm::CallInst::CreateFree(load(visitor), BBThen);
- BBThen->getInstList().push_back(llvm::cast<llvm::Instruction>(_free));
-
- builder.CreateBr(BBElse);
- builder.SetInsertPoint(BBElse);
- store(x, visitor);
- JITVal::store<bool>(must_be_freed, free, false, visitor.getBuilder());
- }
-
- inline void store(llvm::Value * x, JITVisitor & visitor) const
- {
- JITVal::store<T>(this->val, x, false, visitor.getBuilder());
- }
-
- inline void storeR(llvm::Value * _r, JITVisitor & visitor) const
- {
- JITVal::store<int>(this->r, _r, true, visitor.getBuilder());
- }
-
- inline void storeC(llvm::Value * _c, JITVisitor & visitor) const
- {
- JITVal::store<int>(this->c, _c, true, visitor.getBuilder());
- }
-
- inline llvm::Value * load(JITVisitor & visitor) const
- {
- return JITVal::load<T>(val, false, visitor.getBuilder());
- }
-
- inline llvm::Value * loadR(JITVisitor & visitor) const
- {
- return JITVal::load<int>(r, true, visitor.getBuilder());
- }
-
- inline llvm::Value * loadC(JITVisitor & visitor) const
- {
- return JITVal::load<int>(c, true, visitor.getBuilder());
- }
-
- inline llvm::Value * getR() const
- {
- return r;
- }
- inline llvm::Value * getC() const
- {
- return c;
- }
-};
-
-
-} // namespace jit
-
-#endif // __JIT_VALUES_HXX__
#ifndef __JIT_VISITOR_HXX__
#define __JIT_VISITOR_HXX__
+#include <complex>
#include <map>
#include <memory>
+#include <queue>
+#include <stack>
+#include <unordered_map>
+#include <unordered_set>
+#include <vector>
//#include "llvm/IR/Verifier.h"
#include "llvm/ExecutionEngine/GenericValue.h"
#include "llvm/IR/Module.h"
#include "llvm/Support/TargetSelect.h"
//#include "llvm/Support/raw_ostream.h"
+
#include "llvm/PassManager.h"
#include "llvm/Analysis/Passes.h"
#include "llvm/Transforms/Scalar.h"
+#include "llvm/Transforms/Vectorize.h"
+
#include "llvm/ADT/Triple.h"
#include "llvm/Support/Host.h"
#include "visitor.hxx"
#include "allexp.hxx"
#include "allvar.hxx"
-#include "ScilabJITTraits.hxx"
#include "AnalysisVisitor.hxx"
+#include "calls/JITBinOpCall.hxx"
+#include "calls/JITUnaryOpCall.hxx"
+#include "calls/JITShortcutBinOpCall.hxx"
+
#include "dynlib_ast.h"
namespace jit
{
-class JITVal;
-
-class EXTERN_AST JITVisitor : public ast::ConstVisitor
-{
- typedef std::map<symbol::Symbol, std::shared_ptr<JITVal>> JITSymbolMap;
-
- static const bool __init__;
-
- const analysis::AnalysisVisitor & analysis;
-
- std::string err;
- llvm::LLVMContext & context;
- llvm::Module module;
- llvm::ExecutionEngine * engine;
- llvm::FunctionPassManager FPM;
- llvm::Function * function;
- llvm::IRBuilder<> builder;
- llvm::Type * uintptrType;
- std::shared_ptr<JITVal> _result;
-
- //std::map<symbol::Symbol, llvm::Value *> symMap;
- //std::map<symbol::Symbol, JITVal> symMap2;
-
- JITSymbolMap symMap3;
-
- llvm::Value * start;
- llvm::Value * step;
- llvm::Value * end;
-public:
+ class JITScilabVal;
+ typedef std::shared_ptr<JITScilabVal> JITScilabPtr;
- static llvm::Value * const ONE;
- static llvm::Value * const TWO;
- static llvm::Value * const THREE;
- static llvm::Value * const FOUR;
+ class EXTERN_AST JITVisitor : public ast::ConstVisitor, public analysis::FBlockEmittedListener
+ {
- JITVisitor(const analysis::AnalysisVisitor & _analysis);
+ struct OutContainer
+ {
+ union Value
+ {
+ int8_t i8;
+ int16_t i16;
+ int32_t i32;
+ int64_t i64;
+ uint8_t ui8;
+ uint16_t ui16;
+ uint32_t ui32;
+ uint64_t ui64;
+ double dbl;
+ int32_t boolean;
+ double cpx[2];
+ void * ptr;
+ };
+
+ analysis::TIType::Type type;
+ Value data;
+ uint64_t rows;
+ uint64_t cols;
+ uint64_t refcount;
+
+ OutContainer(const analysis::TIType::Type _type) : type(_type) { }
+ };
+
+ typedef std::map<symbol::Symbol, JITScilabPtr> JITSymbolMap;
+
+ static const bool __init__;
+
+ const analysis::AnalysisVisitor & analysis;
+
+ std::string err;
+ llvm::LLVMContext & context;
+ llvm::Module * module;
+ llvm::TargetMachine * target;
+ llvm::ExecutionEngine * engine;
+ llvm::FunctionPassManager FPM;
+ llvm::Function * function;
+ llvm::IRBuilder<> builder;
+ llvm::Type * uintptrType;
+ llvm::Type * dblTy;
+ llvm::Type * int8Ty;
+ llvm::Type * int16Ty;
+ llvm::Type * int32Ty;
+ llvm::Type * int64Ty;
+ llvm::Type * int1Ty;
+ llvm::Type * voidTy;
+ llvm::Type * dblPtrTy;
+ llvm::Type * int8PtrTy;
+ llvm::Type * int16PtrTy;
+ llvm::Type * int32PtrTy;
+ llvm::Type * int64PtrTy;
+ llvm::Type * int1PtrTy;
+ llvm::BasicBlock * entryBlock;
+ llvm::BasicBlock * mainBlock;
+ llvm::BasicBlock * returnBlock;
+ llvm::BasicBlock * errorBlock;
+
+ JITScilabPtr _result;
+ JITScilabPtr cpx_rvalue;
+ std::vector<JITScilabPtr> multipleLHS;
+ JITSymbolMap variables;
+ std::vector<JITScilabPtr> temps;
+ std::unordered_map<std::string, llvm::GlobalVariable *> globals;
+ std::stack<std::pair<llvm::BasicBlock * ,llvm::BasicBlock *>> blocks;
+ std::queue<analysis::FunctionBlock *> fblocks;
+ std::unordered_map<std::string, analysis::FunctionBlock *> mapNameFBlock;
+ std::unordered_map<std::string, llvm::Value *> specialVars;
+
+ public:
+
+ JITAddition addition;
+ JITSubtraction subtraction;
+ JITOpposite opposite;
+ JITMultiplication multiplication;
+ JITRDivision rdivision;
+ JITPower power;
+ JITEquality equality;
+ JITNotEquality not_equality;
+ JITLowerThan lower_than;
+ JITGreaterThan greater_than;
+ JITLowerOrEq lower_or_eq;
+ JITGreaterOrEq greater_or_eq;
+ JITNegation negation;
+ JITShortcutEq shortcut_eq;
+ JITShortcutNe shortcut_ne;
+ JITShortcutLt shortcut_lt;
+ JITShortcutGt shortcut_gt;
+ JITShortcutLe shortcut_le;
+ JITShortcutGe shortcut_ge;
+
+ JITVisitor(const analysis::AnalysisVisitor & _analysis);
+ virtual ~JITVisitor();
+
+ void run();
+
+ void dump() const;
+
+ template<typename T>
+ inline llvm::Type * getTy() const
+ {
+ if (std::is_const<T>::value)
+ {
+ return getTy<typename std::remove_const<T>::type>();
+ }
+ else if (std::is_pointer<T>::value && std::is_pointer<typename std::remove_pointer<T>::type>::value)
+ {
+ return llvm::PointerType::getUnqual(getTy<typename std::remove_pointer<T>::type>());
+ }
+
+ return nullptr;
+ }
+
+ inline llvm::Type * getTy(const analysis::TIType & ty, const unsigned char level = 0) const
+ {
+ llvm::Type * lty;
+
+ switch (ty.type)
+ {
+ case analysis::TIType::BOOLEAN:
+ lty = int32Ty;
+ break;
+ case analysis::TIType::DOUBLE:
+ lty = dblTy;
+ break;
+ case analysis::TIType::INT16:
+ lty = int16Ty;
+ break;
+ case analysis::TIType::INT32:
+ lty = int32Ty;
+ break;
+ case analysis::TIType::INT64:
+ lty = int64Ty;
+ break;
+ case analysis::TIType::INT8:
+ lty = int8Ty;
+ break;
+ case analysis::TIType::UINT16:
+ lty = int16Ty;
+ break;
+ case analysis::TIType::UINT32:
+ lty = int32Ty;
+ break;
+ case analysis::TIType::UINT64:
+ lty = int64Ty;
+ break;
+ case analysis::TIType::UINT8:
+ lty = int8Ty;
+ break;
+ default:
+ lty = voidTy;
+ }
+
+ for (unsigned char i = 0; i < level; ++i)
+ {
+ lty = llvm::PointerType::getUnqual(lty);
+ }
+
+ return lty;
+ }
+
+ inline unsigned int getTySizeInBytes(const llvm::Type * ty) const
+ {
+ return ty->isPointerTy() ? sizeof(void *) : (ty->getPrimitiveSizeInBits() / 8);
+ }
+
+ inline unsigned int getTySizeInBytes(const llvm::Value * v) const
+ {
+ return getTySizeInBytes(v->getType());
+ }
+
+ template<typename T>
+ inline unsigned int getTySizeInBytes() const
+ {
+ return getTy<T>()->isPointerTy() ? sizeof(void *) : (getTy<T>()->getPrimitiveSizeInBits() / 8);
+ }
+
+ inline llvm::LLVMContext & getContext()
+ {
+ return context;
+ }
+
+ inline llvm::Module & getModule()
+ {
+ return *module;
+ }
+
+ inline llvm::IRBuilder<> & getBuilder()
+ {
+ return builder;
+ }
+
+ inline llvm::Function & getFunction()
+ {
+ return *function;
+ }
+
+ inline llvm::Type * getPtrTy()
+ {
+ return uintptrType;
+ }
+
+ inline llvm::Value * getPointer(void * const ptr)
+ {
+ llvm::Value * v = llvm::ConstantInt::get(uintptrType, reinterpret_cast<uintptr_t>(ptr));
+ v = builder.CreateIntToPtr(v, llvm::PointerType::getInt8PtrTy(context));
+
+ return v;
+ }
+
+ inline llvm::Value * getPointer(void * const ptr, llvm::Type * const type)
+ {
+ llvm::Value * v = llvm::ConstantInt::get(uintptrType, reinterpret_cast<uintptr_t>(ptr));
+ v = builder.CreateIntToPtr(v, type);
+
+ return v;
+ }
+
+ template<typename T>
+ inline llvm::Value * getValue(const T val, const bool allocated = false, const std::string & name = "")
+ {
+ if (allocated)
+ {
+ return getAlloca<T>(val, name);
+ }
+ else
+ {
+ return getConstant<T>(val, name);
+ }
+ }
+
+ inline llvm::Value * getValue(llvm::Value * val, const bool allocated = false, const std::string & name = "")
+ {
+ if (allocated)
+ {
+ return getAlloca(val, name);
+ }
+ else
+ {
+ return val;
+ }
+ }
+
+ inline llvm::Value * getBool(const bool b)
+ {
+ return b ? llvm::ConstantInt::getTrue(context) : llvm::ConstantInt::getFalse(context);
+ }
+
+
+ template<typename T, bool isPtr> struct __getConstant;
+ template<typename T> struct __getConstant<T, true>
+ {
+ inline static llvm::Value * get(JITVisitor * jit, const T val, const std::string & name = "")
+ {
+ return jit->getPointer((void *)val, jit->getTy<T>());
+ }
+ };
+
+ template<typename T> struct __getConstant<T, false>
+ {
+ inline static llvm::Value * get(JITVisitor * jit, const T val, const std::string & name = "")
+ {
+ return llvm::ConstantInt::get(jit->getTy<T>(), uint64_t(val), !std::is_unsigned<T>::value);
+ }
+ };
+
+ template<typename T>
+ inline llvm::Value * getConstant(const T val, const std::string & name = "")
+ {
+ return __getConstant<T, std::is_pointer<T>::value>::get(this, val, name);
+ }
+
+ template<typename T>
+ inline llvm::Value * getAlloca(const T val, const std::string & name = "")
+ {
+ llvm::AllocaInst * alloca = builder.CreateAlloca(getTy<T>(), nullptr, name);
+ alloca->setAlignment(sizeof(T));
+ builder.CreateAlignedStore(getConstant<T>(val), alloca, sizeof(T));
+
+ return alloca;
+ }
+
+ template<typename T>
+ inline llvm::Value * getAlloca(const std::string & name = "")
+ {
+ llvm::AllocaInst * alloca = builder.CreateAlloca(getTy<T>(), nullptr, name);
+ alloca->setAlignment(sizeof(T));
+
+ return alloca;
+ }
+
+ inline llvm::Value * getAlloca(llvm::Value * val, llvm::Type * type, int type_size, const std::string & name = "")
+ {
+ llvm::AllocaInst * alloca = builder.CreateAlloca(type, nullptr, name);
+ alloca->setAlignment(type_size);
+ builder.CreateAlignedStore(val, alloca, type_size);
+
+ return alloca;
+ }
+
+ inline llvm::Value * getAlloca(llvm::Value * val, const std::string & name = "")
+ {
+ return getAlloca(val, val->getType(), getTySizeInBytes(val->getType()), name);
+ }
+
+ inline JITScilabPtr & getResult()
+ {
+ return _result;
+ }
+
+ inline void setResult(JITScilabPtr & val)
+ {
+ _result = val;
+ }
+
+ inline void setResult(JITScilabPtr && val)
+ {
+ _result = val;
+ }
+
+ inline JITScilabPtr & getTemp(const int32_t id)
+ {
+ if (id >= 0 && id < temps.size())
+ {
+ return temps[id];
+ }
+ else
+ {
+ assert(false && " Bad temp id...");
+ }
+ }
+
+ inline void addGlobal(const std::string & name, llvm::GlobalVariable * gv)
+ {
+ globals.emplace(name, gv);
+ }
+
+ inline llvm::GlobalVariable * getGlobal(const std::string & name)
+ {
+ auto i = globals.find(name);
+ if (i == globals.end())
+ {
+ return nullptr;
+ }
+ return i->second;
+ }
+
+ inline llvm::Value * getSpecialVar(const std::string & name) const
+ {
+ auto i = specialVars.find(name);
+ if (i != specialVars.end())
+ {
+ return i->second;
+ }
+ return nullptr;
+ }
+
+ inline void addSpecialVar(const std::string & name, llvm::Value * val)
+ {
+ specialVars.emplace(name, val);
+ }
+
+ inline llvm::BasicBlock * getEntryBlock()
+ {
+ return entryBlock;
+ }
+
+ void makeCall(const std::wstring & name, const std::vector<types::InternalType *> & in, std::vector<types::InternalType *> & out);
+
+ JITScilabPtr getScalar(llvm::Value * const value, const analysis::TIType::Type ty, const bool alloc = false, const std::string & name = "");
+ JITScilabPtr getScalar(llvm::Value * const re, llvm::Value * const im, const analysis::TIType::Type ty, const bool alloc = false, const std::string & name = "");
+ JITScilabPtr & getCpxRValue();
+
+ llvm::FunctionType * getFunctionType(const analysis::TIType & out, const std::vector<const analysis::TIType *> & types);
+
+ private:
+
+ inline std::vector<JITScilabPtr> & getLHSContainer()
+ {
+ return multipleLHS;
+ }
+
+ inline void callThrow(const char * msg)
+ {
+ /*llvm::Value * _msg = builder.CreateGlobalStringPtr(llvm::StringRef(msg));
+ llvm::Value * v = llvm::ConstantInt::get(uintptrType, reinterpret_cast<uintptr_t>(&jit::jit_throw));
+ v = builder.CreateIntToPtr(v, getLLVMPtrFuncTy<void, char *>(context));
+ builder.CreateCall(v, _msg);*/
+ }
+
+ template<typename T, typename U>
+ inline void makeArg(std::vector<llvm::Value *> & args, types::GenericType * pGT)
+ {
+ T * x = (T *)static_cast<U *>(pGT)->get();
+ int64_t r = static_cast<U *>(pGT)->getRows();
+ int64_t c = static_cast<U *>(pGT)->getCols();
+ int64_t refc = static_cast<U *>(pGT)->getRef();
+ args.emplace_back(getValue(x));
+ args.emplace_back(getValue(r));
+ args.emplace_back(getValue(c));
+ args.emplace_back(getValue(refc));
+ }
+
+ void visit(ast::CallExp & e, const unsigned int lhs);
+ void visit(const ast::CallExp & e);
+
+ void visit(const ast::SimpleVar & e);
+ void visit(const ast::DollarVar & e);
+ void visit(const ast::ColonVar & e);
+ void visit(const ast::ArrayListVar & e);
+ void visit(const ast::DoubleExp & e);
+ void visit(const ast::BoolExp & e);
+ void visit(const ast::StringExp & e);
+ void visit(const ast::NilExp & e);
+ void visit(const ast::CellCallExp & e);
+ void visit(const ast::OpExp & e);
+ void visit(const ast::LogicalOpExp & e);
+ void visit(const ast::AssignExp & e);
+ void visit(const ast::IfExp & e);
+ void visit(const ast::WhileExp & e);
+ void visit(const ast::ForExp & e);
+ void visit(const ast::BreakExp & e);
+ void visit(const ast::ContinueExp & e);
+ void visit(const ast::TryCatchExp & e);
+ void visit(const ast::SelectExp & e);
+ void visit(const ast::IntSelectExp & e);
+ void visit(const ast::SmallIntSelectExp & e);
+ void visit(const ast::TableIntSelectExp & e);
+ void visit(const ast::MapIntSelectExp & e);
+ void visit(const ast::CaseExp & e);
+ void visit(const ast::ReturnExp & e);
+ void visit(const ast::FieldExp & e);
+ void visit(const ast::NotExp & e);
+ void visit(const ast::TransposeExp & e);
+ void visit(const ast::MatrixExp & e);
+ void visit(const ast::MatrixLineExp & e);
+ void visit(const ast::CellExp & e);
+ void visit(const ast::SeqExp & e);
+ void visit(const ast::ArrayListExp & e);
+ void visit(const ast::AssignListExp & e);
+ void visit(const ast::VarDec & e);
+ void visit(const ast::FunctionDec & e);
+ void visit(const ast::ListExp & e);
+
+ void visit(const ast::OptimizedExp & e) { }
+ void visit(const ast::DAXPYExp & e) { }
+ void visit(const ast::MemfillExp & e) { }
+ void visit(const ast::StringSelectExp & e) { }
+ void visit(const ast::CommentExp & e) { }
+
+ void action(analysis::FunctionBlock & fblock);
+ llvm::Type * getType(const analysis::TIType::Type ty, const bool scalar);
+ JITScilabPtr getScalar(const analysis::TIType::Type ty, const bool isAnInt, const std::string & name);
+ JITScilabPtr getScalar(const analysis::TypeLocal & ty, const std::string & name);
+ JITScilabPtr getMatrix(llvm::Value * const value, llvm::Value * const rows, llvm::Value * const cols, llvm::Value * const refCount, const analysis::TIType::Type ty, const bool alloc, const std::string & name);
+ JITScilabPtr getMatrix(const analysis::TIType::Type ty, const std::string & name, const bool init = false);
+ JITScilabPtr getMatrix(const analysis::TypeLocal & ty, const std::string & name, const bool init = false);
+ llvm::Value * getPtrFromIndex(const ast::CallExp & ce);
+ void runOptimizationPasses();
+ void compileModule();
+ void makeSwitch(const ast::IntSelectExp & e, const std::map<int64_t, ast::Exp *> & map);
+ void CreateBr(llvm::BasicBlock * bb);
+ void closeEntryBlock();
+
+ static bool InitializeLLVM();
+ static llvm::FunctionPassManager initFPM(llvm::Module * module, llvm::ExecutionEngine * engine, llvm::TargetMachine * target);
+ static llvm::Type * getPtrAsIntTy(llvm::Module & module, llvm::LLVMContext & ctxt);
+ static llvm::ExecutionEngine * InitializeEngine(llvm::Module * module, llvm::TargetMachine ** target);
+ };
+
+ template<>
+ inline llvm::Value * JITVisitor::getConstant<double>(const double val, const std::string & name)
+ {
+ return llvm::ConstantFP::get(context, llvm::APFloat(val));
+ }
- void run();
+ template<>
+ inline llvm::Value * JITVisitor::getConstant<std::complex<double>>(const std::complex<double> val, const std::string & name)
+ {
+ llvm::Constant * re = llvm::ConstantFP::get(context, llvm::APFloat(val.real()));
+ llvm::Constant * im = llvm::ConstantFP::get(context, llvm::APFloat(val.imag()));
+ llvm::Constant * arr[] = { re, im };
+ return llvm::ConstantVector::get(llvm::ArrayRef<llvm::Constant *>(arr));
+ }
- void dump() const;
+ template<>
+ inline llvm::Type * JITVisitor::getTy<double>() const
+ {
+ return dblTy;
+ }
- inline llvm::LLVMContext & getContext()
+ template<>
+ inline llvm::Type * JITVisitor::getTy<bool>() const
{
- return context;
+ return int1Ty;
}
- inline llvm::Module & getModule()
+ template<>
+ inline llvm::Type * JITVisitor::getTy<int8_t>() const
{
- return module;
+ return int8Ty;
}
- inline llvm::IRBuilder<> & getBuilder()
+ template<>
+ inline llvm::Type * JITVisitor::getTy<int16_t>() const
{
- return builder;
+ return int16Ty;
}
- inline llvm::Function & getFunction()
+ template<>
+ inline llvm::Type * JITVisitor::getTy<int32_t>() const
{
- return *function;
+ return int32Ty;
}
- inline llvm::Type * getPtrTy()
+ template<>
+ inline llvm::Type * JITVisitor::getTy<int64_t>() const
{
- return uintptrType;
+ return int64Ty;
}
- inline llvm::Value * getPointer(void * const ptr)
+ template<>
+ inline llvm::Type * JITVisitor::getTy<uint8_t>() const
{
- llvm::Value * v = llvm::ConstantInt::get(uintptrType, reinterpret_cast<uintptr_t>(ptr));
- v = builder.CreateIntToPtr(v, llvm::PointerType::getInt8PtrTy(context));
+ return int8Ty;
+ }
- return v;
+ template<>
+ inline llvm::Type * JITVisitor::getTy<uint16_t>() const
+ {
+ return int16Ty;
}
- inline llvm::Value * getPointer(void * const ptr, const char * const type)
+ template<>
+ inline llvm::Type * JITVisitor::getTy<uint32_t>() const
{
- llvm::Value * v = llvm::ConstantInt::get(uintptrType, reinterpret_cast<uintptr_t>(ptr));
- v = builder.CreateIntToPtr(v, llvm::PointerType::getUnqual(module.getTypeByName(type)));
+ return int32Ty;
+ }
- return v;
+ template<>
+ inline llvm::Type * JITVisitor::getTy<uint64_t>() const
+ {
+ return int64Ty;
}
- inline llvm::Value * getPointer(void * const ptr, llvm::Type * const type)
+ template<>
+ inline llvm::Type * JITVisitor::getTy<void>() const
{
- llvm::Value * v = llvm::ConstantInt::get(uintptrType, reinterpret_cast<uintptr_t>(ptr));
- v = builder.CreateIntToPtr(v, type);
+ return voidTy;
+ }
- return v;
+ template<>
+ inline llvm::Type * JITVisitor::getTy<double *>() const
+ {
+ return dblPtrTy;
}
- template<typename T>
- llvm::Value * getConstant(const T val)
+ template<>
+ inline llvm::Type * JITVisitor::getTy<bool *>() const
{
- llvm::Value * const v = llvm::ConstantInt::get(getLLVMTy<T>(context), uint64_t(val), !std::is_unsigned<T>::value);
+ return int1PtrTy;
+ }
- return v;
+ template<>
+ inline llvm::Type * JITVisitor::getTy<int8_t *>() const
+ {
+ return int8PtrTy;
}
- template<typename T>
- llvm::Value * getConstantPtr(const T * val)
+ template<>
+ inline llvm::Type * JITVisitor::getTy<int16_t *>() const
{
- llvm::Value * const v = getPointer((void *)val, getLLVMTy<T *>(context));
+ return int16PtrTy;
+ }
- return v;
+ template<>
+ inline llvm::Type * JITVisitor::getTy<int32_t *>() const
+ {
+ return int32PtrTy;
}
- template<typename T>
- llvm::Value * getAlloca(const T val, const std::string & name)
+ template<>
+ inline llvm::Type * JITVisitor::getTy<int64_t *>() const
{
- llvm::AllocaInst * alloca = builder.CreateAlloca(getLLVMTy<T>(context), 0, name.c_str());
- alloca->setAlignment(sizeof(T));
- builder.CreateAlignedStore(getConstant<T>(val), alloca, sizeof(T));
+ return int64PtrTy;
+ }
- return alloca;
+ template<>
+ inline llvm::Type * JITVisitor::getTy<uint8_t *>() const
+ {
+ return int8PtrTy;
}
- llvm::Value * getAlloca(llvm::Value * val, llvm::Type * type, int type_size, const std::string & name)
+ template<>
+ inline llvm::Type * JITVisitor::getTy<uint16_t *>() const
{
- llvm::AllocaInst * alloca = builder.CreateAlloca(type, 0, name.c_str());
- alloca->setAlignment(type_size);
- builder.CreateAlignedStore(val, alloca, type_size);
+ return int16PtrTy;
+ }
- return alloca;
+ template<>
+ inline llvm::Type * JITVisitor::getTy<uint32_t *>() const
+ {
+ return int32PtrTy;
}
- template<typename T>
- llvm::Value * getAllocaPtr(const T * val, const std::string & name)
+ template<>
+ inline llvm::Type * JITVisitor::getTy<uint64_t *>() const
{
- llvm::AllocaInst * alloca = builder.CreateAlloca(getLLVMTy<T *>(context), 0, name.c_str());
- alloca->setAlignment(sizeof(T *));
- builder.CreateAlignedStore(getPointer((void *)val, getLLVMTy<T *>(context)), alloca, sizeof(T));
+ return int64PtrTy;
+ }
- return alloca;
+ template<>
+ inline llvm::Type * JITVisitor::getTy<const double *>() const
+ {
+ return dblPtrTy;
}
- template<typename T>
- llvm::Value * getAllocaPtr(llvm::Value * val)
+ template<>
+ inline llvm::Type * JITVisitor::getTy<const bool *>() const
{
- llvm::AllocaInst * alloca = builder.CreateAlloca(getLLVMTy<T *>(context), 0);
- alloca->setAlignment(sizeof(T *));
- builder.CreateAlignedStore(val, alloca, sizeof(T));
+ return int1PtrTy;
+ }
- return alloca;
+ template<>
+ inline llvm::Type * JITVisitor::getTy<const int8_t *>() const
+ {
+ return int8PtrTy;
}
-private:
+ template<>
+ inline llvm::Type * JITVisitor::getTy<const int16_t *>() const
+ {
+ return int16PtrTy;
+ }
- inline void setResult(std::shared_ptr<JITVal> & val)
+ template<>
+ inline llvm::Type * JITVisitor::getTy<const int32_t *>() const
{
- _result = val;
+ return int32PtrTy;
}
- inline void setResult(std::shared_ptr<JITVal> && val)
+ template<>
+ inline llvm::Type * JITVisitor::getTy<const int64_t *>() const
{
- _result = val;
+ return int64PtrTy;
}
- inline std::shared_ptr<JITVal> & getResult()
+ template<>
+ inline llvm::Type * JITVisitor::getTy<const uint8_t *>() const
{
- return _result;
+ return int8PtrTy;
}
- inline void callThrow(const char * msg)
+ template<>
+ inline llvm::Type * JITVisitor::getTy<const uint16_t *>() const
{
- llvm::Value * _msg = builder.CreateGlobalStringPtr(llvm::StringRef(msg));
- llvm::Value * v = llvm::ConstantInt::get(uintptrType, reinterpret_cast<uintptr_t>(&jit::jit_throw));
- v = builder.CreateIntToPtr(v, getLLVMPtrFuncTy<void, char *>(context));
- builder.CreateCall(v, _msg);
+ return int16PtrTy;
}
- void visit(const ast::SimpleVar & e);
- void visit(const ast::DollarVar & e);
- void visit(const ast::ColonVar & e);
- void visit(const ast::ArrayListVar & e);
- void visit(const ast::DoubleExp & e);
- void visit(const ast::BoolExp & e);
- void visit(const ast::StringExp & e);
- void visit(const ast::CommentExp & e);
- void visit(const ast::NilExp & e);
- void visit(const ast::CallExp & e);
- void visit(const ast::CellCallExp & e);
- void visit(const ast::OpExp & e);
- void visit(const ast::LogicalOpExp & e);
- void visit(const ast::AssignExp & e);
- void visit(const ast::IfExp & e);
- void visit(const ast::WhileExp & e);
- void visit(const ast::ForExp & e);
- void visit(const ast::BreakExp & e);
- void visit(const ast::ContinueExp & e);
- void visit(const ast::TryCatchExp & e);
- void visit(const ast::SelectExp & e);
- void visit(const ast::CaseExp & e);
- void visit(const ast::ReturnExp & e);
- void visit(const ast::FieldExp & e);
- void visit(const ast::NotExp & e);
- void visit(const ast::TransposeExp & e);
- void visit(const ast::MatrixExp & e);
- void visit(const ast::MatrixLineExp & e);
- void visit(const ast::CellExp & e);
- void visit(const ast::SeqExp & e);
- void visit(const ast::ArrayListExp & e);
- void visit(const ast::AssignListExp & e);
- void visit(const ast::VarDec & e);
- void visit(const ast::FunctionDec & e);
- void visit(const ast::ListExp & e);
- void visit(const ast::OptimizedExp & e);
- void visit(const ast::DAXPYExp & e);
- void visit(const ast::MemfillExp & e) {}
- void visit(const ast::IntSelectExp & e) {}
- void visit(const ast::StringSelectExp & e) {}
-};
+ template<>
+ inline llvm::Type * JITVisitor::getTy<const uint32_t *>() const
+ {
+ return int32PtrTy;
+ }
-template<> llvm::Value * JITVisitor::getConstant<double>(const double val);
+ template<>
+ inline llvm::Type * JITVisitor::getTy<const uint64_t *>() const
+ {
+ return int64PtrTy;
+ }
} // namespace jit
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __MEMORY_MANAGER_HXX__
+#define __MEMORY_MANAGER_HXX__
+
+#include <cstdint>
+#include <iostream>
+#include <memory>
+#include <unordered_map>
+
+#include "llvm/ExecutionEngine/SectionMemoryManager.h"
+
+#ifdef _MSC_VER
+#define __SCILABJIT_CAST_FUN__(x) (uint64_t)(void (*)())(x)
+#else
+#define __SCILABJIT_CAST_FUN__(x) (uint64_t)(x)
+#endif
+
+namespace jit
+{
+
+ class MemoryManager : public llvm::SectionMemoryManager
+ {
+ typedef std::unordered_map<std::string, uint64_t> SymbolsAddressMap;
+
+ MemoryManager(const MemoryManager &) = delete;
+ void operator=(const MemoryManager &) = delete;
+
+ static SymbolsAddressMap syms;
+ static SymbolsAddressMap init();
+
+ public:
+
+ MemoryManager() : llvm::SectionMemoryManager() { }
+
+ virtual ~MemoryManager() { }
+ virtual uint64_t getSymbolAddress(const std::string & name);
+
+
+ virtual uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment, unsigned SectionID, llvm::StringRef SectionName);
+ virtual uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment, unsigned SectionID, llvm::StringRef SectionName, bool isReadOnly);
+
+ template<typename T>
+ inline static void addSymbol(const std::string & name, T address)
+ {
+ syms.emplace(name, __SCILABJIT_CAST_FUN__(address));
+ }
+
+ inline static void addSymbol(const std::string & name, uint64_t address)
+ {
+ syms.emplace(name, address);
+ }
+
+ template<typename T>
+ inline static void addSymbol(const std::string && name, T address)
+ {
+ syms.emplace(name, __SCILABJIT_CAST_FUN__(address));
+ }
+
+ inline static std::size_t getMapSize()
+ {
+ return syms.size();
+ }
+
+ private:
+
+ template<typename T>
+ inline static void addSymbol(SymbolsAddressMap & map, const std::string & name, T address)
+ {
+ map.emplace(name, __SCILABJIT_CAST_FUN__(address));
+ }
+
+ template<typename T>
+ inline static void addSymbol(SymbolsAddressMap & map, const std::string && name, T address)
+ {
+ map.emplace(name, __SCILABJIT_CAST_FUN__(address));
+ }
+ };
+
+} // namespace jit
+
+#endif // __MEMORY_MANAGER_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __SCILAB_JIT_EVENT_LISTENER_HXX__
+#define __SCILAB_JIT_EVENT_LISTENER_HXX__
+
+#include "llvm/ExecutionEngine/JITEventListener.h"
+
+namespace jit
+{
+ class ScilabJITEventListener : public llvm::JITEventListener
+ {
+
+ public:
+
+ virtual void NotifyObjectEmitted(const llvm::ObjectImage & obj) override;
+ };
+
+
+} // namespace jit
+
+#endif // __SCILAB_JIT_EVENT_LISTENER_HXX__
#endif
}
-inline static llvm::FunctionPassManager initFPM(llvm::Module * module, llvm::ExecutionEngine * engine)
-{
- llvm::FunctionPassManager FPM(module);
-
-#if LLVM_VERSION_MAJOR >= 3 && LLVM_VERSION_MINOR == 4
- FPM.add(new llvm::DataLayout(*engine->getDataLayout()));
-#else
- FPM.add(new llvm::DataLayoutPass(*engine->getDataLayout()));
-#endif
- // createBasicAliasAnalysisPass - This pass implements the stateless alias
- // analysis.
- FPM.add(llvm::createBasicAliasAnalysisPass());
-
- // Promote allocas to registers.
- // PromoteMemoryToRegister - This pass is used to promote memory references to
- // be register references. A simple example of the transformation performed by
- // this pass is:
- //
- // FROM CODE TO CODE
- // %X = alloca i32, i32 1 ret i32 42
- // store i32 42, i32 *%X
- // %Y = load i32* %X
- // ret i32 %Y
- FPM.add(llvm::createPromoteMemoryToRegisterPass());
-
- // Do simple "peephole" optimizations and bit-twiddling optzns.
- // This pass combines things like:
- // %Y = add int 1, %X
- // %Z = add int 1, %Y
- // into:
- // %Z = add int 2, %X
- FPM.add(llvm::createInstructionCombiningPass());
-
- // Reassociate expressions.
- // Reassociate - This pass reassociates commutative expressions in an order that
- // is designed to promote better constant propagation, GCSE, LICM, PRE...
- //
- // For example: 4 + (x + 5) -> x + (4 + 5)
- FPM.add(llvm::createReassociatePass());
-
- // Eliminate Common SubExpressions.
- // GVN - This pass performs global value numbering and redundant load
- // elimination cotemporaneously.
- FPM.add(llvm::createGVNPass());
-
- // Simplify the control flow graph (deleting unreachable blocks, etc).
- FPM.add(llvm::createCFGSimplificationPass());
-
- FPM.add(llvm::createDeadInstEliminationPass());
- FPM.add(llvm::createDeadCodeEliminationPass());
- FPM.add(llvm::createLoopVectorizePass());
-
- FPM.doInitialization();
-
- return FPM;
-}
template<typename>
inline static llvm::Type * getLLVMTy(llvm::LLVMContext & ctxt = llvm::getGlobalContext());
static void jit_throw(const char * msg)
{
- throw ast::InternalError(msg);
+ throw ast::ScilabError(msg);
}
inline static bool InitializeLLVM()
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __BASE_ADDITIONS_HXX__
+#define __BASE_ADDITIONS_HXX__
+
+#include <complex>
+
+#include "Cast.hxx"
+
+
+namespace jit
+{
+ namespace op
+ {
+
+ template<typename T, typename U, typename V>
+ struct Add
+ {
+
+ inline V operator()(T x, U y)
+ {
+ return (V)x + (V)y;
+ }
+ };
+
+ template<typename U>
+ struct Add<const std::complex<double> &, U, std::complex<double>>
+ {
+
+ inline std::complex<double> operator()(const std::complex<double> & x, U y)
+ {
+ return x + (double)y;
+ }
+ };
+
+ template<typename T>
+ struct Add<T, const std::complex<double> &, std::complex<double>>
+ {
+
+ inline std::complex<double> operator()(T x, const std::complex<double> & y)
+ {
+ return (double)x + y;
+ }
+ };
+
+ template<>
+ struct Add<const std::complex<double> &, const std::complex<double> &, std::complex<double>>
+ {
+
+ inline std::complex<double> operator()(const std::complex<double> & x, const std::complex<double> & y)
+ {
+ return x + y;
+ }
+ };
+
+ } // namespace op
+
+} // namespace jit
+
+#endif // __BASE_ADDITIONS_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __BASE_AND_HXX__
+#define __BASE_AND_HXX__
+
+#include <complex>
+
+#include "Cast.hxx"
+
+
+namespace jit
+{
+ namespace op
+ {
+
+ template<bool are_integral, typename T, typename U, typename V>
+ struct __And_helper;
+
+ template<typename T, typename U, typename V>
+ struct __And_helper<true, T, U, V>
+ {
+ inline V operator()(T x, U y)
+ {
+ return (V)x & (V)y;
+ }
+ };
+
+ template<typename T, typename U, typename V>
+ struct __And_helper<false, T, U, V>
+ {
+ inline V operator()(T x, U y)
+ {
+ return (x != 0) && (y != 0);
+ }
+ };
+
+ template<typename U, typename V>
+ struct __And_helper<false, const std::complex<double> &, U, V>
+ {
+
+ inline V operator()(const std::complex<double> & x, U y)
+ {
+ return (x != 0.) && ((double)y != 0);
+ }
+ };
+
+ template<typename T, typename V>
+ struct __And_helper<false, T, const std::complex<double> &, V>
+ {
+
+ inline V operator()(T x, const std::complex<double> & y)
+ {
+ return ((double)x != 0.) && (y != 0.);
+ }
+ };
+
+ template<typename V>
+ struct __And_helper<false, const std::complex<double> &, const std::complex<double> &, V>
+ {
+
+ inline V operator()(const std::complex<double> & x, const std::complex<double> & y)
+ {
+ return (x != 0.) && (y != 0.);
+ }
+ };
+
+ template<typename T, typename U, typename V>
+ struct And
+ {
+ inline V operator()(T x, U y)
+ {
+ return __And_helper<jit::is_pure_integral<T>::value && jit::is_pure_integral<U>::value, T, U, V>()(x, y);
+ }
+ };
+
+ } // namespace op
+
+} // namespace jit
+
+#endif // __BASE_AND_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __BASE_BINARIES_HXX__
+#define __BASE_BINARIES_HXX__
+
+#include <complex>
+
+#include "Cast.hxx"
+#include "tools.hxx"
+
+namespace jit
+{
+ namespace vect
+ {
+
+ template<typename F, typename T, typename U, typename V>
+ inline void binary(WrapVecIn<T> && x, WrapVecIn<U> && y, const int64_t size, WrapOut<V> && o)
+ {
+ WrapPtr<V> _o = getPtr(o, size);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ _o[i] = F()(x[i], y[i]);
+ }
+ }
+
+/* template<typename T, typename U, typename V, V (F)(T, U)>
+ inline void bin_MMM(const T * x, const int64_t x_r, const int64_t x_c, const U * y, const int64_t y_r, const int64_t y_c, V ** o)
+ {
+ const int64_t size = x_r * x_c;
+ V * _o = getPtr(o, size);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ _o[i] = F(x[i], y[i]);
+ }
+ }
+
+ // TODO: implement it correctly
+ // i.e.: add error management when dims are incorrect
+ template<typename T, typename U, typename V, V (F)(T, U)>
+ inline void bin_UUU(const T * x, const int64_t x_r, const int64_t x_c, const U * y, const int64_t y_r, const int64_t y_c, V ** o)
+ {
+ bin_MMM<T, U, V, F>(x, x_r, x_c, y, y_r, y_c, o);
+ }
+
+ template<typename T, typename U, typename V, V (F)(T, U)>
+ inline void bin_SMM(const T x, const U * y, const int64_t y_r, const int64_t y_c, V ** o)
+ {
+ const int64_t size = y_r * y_c;
+ V * _o = getPtr(o, size);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ _o[i] = F(x, y[i]);
+ }
+ }
+
+ template<typename T, typename U, typename V, V (F)(T, U)>
+ inline void bin_MSM(const T * x, const int64_t x_r, const int64_t x_c, const U y, V ** o)
+ {
+ const int64_t size = x_r * x_c;
+ V * _o = getPtr(o, size);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ _o[i] = F(x[i], y);
+ }
+ }
+
+ template<std::complex<double> (CPXCPX)(const std::complex<double> const std::complex<double>, const std::complex<double> const std::complex<double>)>
+ inline void bin_McMcMc(const double * x_re, const double * x_im, const int64_t x_r, const int64_t x_c, const double * y_re, const double * y_im, const int64_t y_r, const int64_t y_c, double ** o_re, double ** o_im)
+ {
+ const int64_t size = x_r * x_c;
+ double * _o_re = getPtr(o_re, size);
+ double * _o_im = getPtr(o_im, size);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ const std::complex<double> const std::complex<double> z = CPXCPX(std::complex<double>(x_re[i], x_im[i]), std::complex<double>(y_re[i], y_im[i]));
+ _o_re[i] = z.real();
+ _o_im[i] = z.imag();
+ }
+ }
+
+ template<typename T, std::complex<double> (RECPX)(T, const std::complex<double> const std::complex<double>)>
+ inline void bin_MMcMc(const T * x, const int64_t x_r, const int64_t x_c, const double * y_re, const double * y_im, const int64_t y_r, const int64_t y_c, double ** o_re, double ** o_im)
+ {
+ const int64_t size = x_r * x_c;
+ double * _o_re = getPtr(o_re, size);
+ double * _o_im = getPtr(o_im, size);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ const std::complex<double> const std::complex<double> z = RECPX(x[i], std::complex<double>(y_re[i], y_im[i]));
+ _o_re[i] = z.real();
+ _o_im[i] = z.imag();
+ }
+ }
+
+ template<typename T, std::complex<double> (RECPX)(T, const std::complex<double> const std::complex<double>)>
+ inline void bin_SMcMc(const T x, const double * y_re, const double * y_im, const int64_t y_r, const int64_t y_c, double ** o_re, double ** o_im)
+ {
+ const int64_t size = y_r * y_c;
+ double * _o_re = getPtr(o_re, size);
+ double * _o_im = getPtr(o_im, size);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ const std::complex<double> const std::complex<double> z = RECPX(x, std::complex<double>(y_re[i], y_im[i]));
+ _o_re[i] = z.real();
+ _o_im[i] = z.imag();
+ }
+ }
+
+ template<typename T, std::complex<double> (CPXRE)(const std::complex<double> const std::complex<double>, T)>
+ inline void bin_McMMc(const double * x_re, const double * x_im, const int64_t x_r, const int64_t x_c, const T * y, const int64_t y_r, const int64_t y_c, double ** o_re, double ** o_im)
+ {
+ const int64_t size = x_r * x_c;
+ double * _o_re = getPtr(o_re, size);
+ double * _o_im = getPtr(o_im, size);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ const std::complex<double> const std::complex<double> z = CPXRE(std::complex<double>(x_re[i], x_im[i]), y[i]);
+ _o_re[i] = z.real();
+ _o_im[i] = z.imag();
+ }
+ }
+
+ template<std::complex<double> (CPXCPX)(const std::complex<double> const std::complex<double>, const std::complex<double> const std::complex<double>)>
+ inline void bin_ScMcMc(const double x_re, const double x_im, const double * y_re, const double * y_im, const int64_t y_r, const int64_t y_c, double ** o_re, double ** o_im)
+ {
+ const int64_t size = y_r * y_c;
+ double * _o_re = getPtr(o_re, size);
+ double * _o_im = getPtr(o_im, size);
+ const std::complex<double> const std::complex<double> z1(x_re, x_im);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ const std::complex<double> const std::complex<double> z = CPXCPX(z1, std::complex<double>(y_re[i], y_im[i]));
+ _o_re[i] = z.real();
+ _o_im[i] = z.imag();
+ }
+ }
+
+ template<std::complex<double> (CPXCPX)(const std::complex<double> const std::complex<double>, const std::complex<double> const std::complex<double>)>
+ inline void bin_McScMc(const double * x_re, const double * x_im, const int64_t x_r, const int64_t x_c, const double y_re, const double y_im, double ** o_re, double ** o_im)
+ {
+ const int64_t size = x_r * x_c;
+ double * _o_re = getPtr(o_re, size);
+ double * _o_im = getPtr(o_im, size);
+ const std::complex<double> const std::complex<double> z1(y_re, y_im);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ const std::complex<double> const std::complex<double> z = CPXCPX(std::complex<double>(x_re[i], x_im[i]), z1);
+ _o_re[i] = z.real();
+ _o_im[i] = z.imag();
+ }
+ }
+
+ template<typename T, std::complex<double> (CPXRE)(const std::complex<double> const std::complex<double>, T)>
+ inline void bin_McSMc(const double * x_re, const double * x_im, const int64_t x_r, const int64_t x_c, const T y, double ** o_re, double ** o_im)
+ {
+ const int64_t size = x_r * x_c;
+ double * _o_re = getPtr(o_re, size);
+ double * _o_im = getPtr(o_im, size);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ const std::complex<double> const std::complex<double> z = CPXRE(std::complex<double>(x_re[i], x_im[i]), y);
+ _o_re[i] = z.real();
+ _o_im[i] = z.imag();
+ }
+ }
+
+ template<typename T, std::complex<double> (CPXRE)(const std::complex<double> const std::complex<double>, const std::complex<double> const std::complex<double>)>
+ inline void bin_ScMMc(const double x_re, const double x_im, const T * y, const int64_t y_r, const int64_t y_c, double ** o_re, double ** o_im)
+ {
+ const int64_t size = y_r * y_c;
+ double * _o_re = getPtr(o_re, size);
+ double * _o_im = getPtr(o_im, size);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ const std::complex<double> const std::complex<double> z = CPXRE(std::complex<double>(x_re, x_im), y[i]);
+ _o_re[i] = z.real();
+ _o_im[i] = z.imag();
+ }
+ }
+
+ template<typename T, std::complex<double> (RECPX)(T, const std::complex<double> const std::complex<double>)>
+ inline void bin_MScMc(const T * x, const int64_t x_r, const int64_t x_c, const double y_re, const double y_im, double ** o_re, double ** o_im)
+ {
+ const int64_t size = x_r * x_c;
+ double * _o_re = getPtr(o_re, size);
+ double * _o_im = getPtr(o_im, size);
+ const std::complex<double> const std::complex<double> z1(y_re, y_im);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ const std::complex<double> const std::complex<double> z = RECPX(x[i], z1);
+ _o_re[i] = z.real();
+ _o_im[i] = z.imag();
+ }
+ }
+
+ // FUCK
+ template<typename T, T (CPXCPX)(const std::complex<double> const std::complex<double>, const std::complex<double> const std::complex<double>)>
+ inline void bin_McMcM(const double * x_re, const double * x_im, const int64_t x_r, const int64_t x_c, const double * y_re, const double * y_im, const int64_t y_r, const int64_t y_c, T ** o)
+ {
+ const int64_t size = x_r * x_c;
+ T * _o = getPtr(o, size);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ _o[i] = CPXCPX(std::complex<double>(x_re[i], x_im[i]), std::complex<double>(y_re[i], y_im[i]));
+ }
+ }
+
+ template<typename T, typename U, U (RECPX)(T, const std::complex<double> const std::complex<double>)>
+ inline void bin_MMcM(const T * x, const int64_t x_r, const int64_t x_c, const double * y_re, const double * y_im, const int64_t y_r, const int64_t y_c, U ** o)
+ {
+ const int64_t size = x_r * x_c;
+ U * _o = getPtr(o, size);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ _o[i] = RECPX(x[i], std::complex<double>(y_re[i], y_im[i]));
+ }
+ }
+
+ template<typename T, typename U, U (RECPX)(T, const std::complex<double> const std::complex<double>)>
+ inline void bin_SMcM(const T x, const double * y_re, const double * y_im, const int64_t y_r, const int64_t y_c, U ** o)
+ {
+ const int64_t size = y_r * y_c;
+ U * _o = getPtr(o, size);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ _o[i] = RECPX(x, std::complex<double>(y_re[i], y_im[i]));
+ }
+ }
+
+ template<typename T, typename U, U (CPXRE)(const std::complex<double> const std::complex<double>, T)>
+ inline void bin_McMM(const double * x_re, const double * x_im, const int64_t x_r, const int64_t x_c, const T * y, const int64_t y_r, const int64_t y_c, U ** o)
+ {
+ const int64_t size = x_r * x_c;
+ U * _o = getPtr(o, size);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ _o[i] = CPXRE(std::complex<double>(x_re[i], x_im[i]), y[i]);
+ }
+ }
+
+ template<typename T, T (CPXCPX)(const std::complex<double> const std::complex<double>, const std::complex<double> const std::complex<double>)>
+ inline void bin_ScMcM(const double x_re, const double x_im, const double * y_re, const double * y_im, const int64_t y_r, const int64_t y_c, T ** o)
+ {
+ const int64_t size = y_r * y_c;
+ T * _o = getPtr(o, size);
+ const std::complex<double> const std::complex<double> z1(x_re, x_im);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ _o[i] = CPXCPX(z1, std::complex<double>(y_re[i], y_im[i]));
+ }
+ }
+
+ template<typename T, T (CPXCPX)(const std::complex<double> const std::complex<double>, const std::complex<double> const std::complex<double>)>
+ inline void bin_McScM(const double * x_re, const double * x_im, const int64_t x_r, const int64_t x_c, const double y_re, const double y_im, T ** o)
+ {
+ const int64_t size = x_r * x_c;
+ T * _o = getPtr(o, size);
+ const std::complex<double> const std::complex<double> z1(y_re, y_im);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ _o[i] = CPXCPX(std::complex<double>(x_re[i], x_im[i]), z1);
+ }
+ }
+
+ template<typename T, typename U, U (CPXRE)(const std::complex<double> const std::complex<double>, T)>
+ inline void bin_McSM(const double * x_re, const double * x_im, const int64_t x_r, const int64_t x_c, const T y, U ** o)
+ {
+ const int64_t size = x_r * x_c;
+ U * _o = getPtr(o, size);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ _o[i] = CPXRE(std::complex<double>(x_re[i], x_im[i]), y);
+ }
+ }
+
+ template<typename T, typename U, U (CPXRE)(const std::complex<double> const std::complex<double>, const std::complex<double> const std::complex<double>)>
+ inline void bin_ScMM(const double x_re, const double x_im, const T * y, const int64_t y_r, const int64_t y_c, U ** o)
+ {
+ const int64_t size = y_r * y_c;
+ U * _o = getPtr(o, size);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ _o[i] = CPXRE(std::complex<double>(x_re, x_im), y[i]);
+ }
+ }
+
+ template<typename T, typename U, U (RECPX)(T, const std::complex<double> const std::complex<double>)>
+ inline void bin_MScM(const T * x, const int64_t x_r, const int64_t x_c, const double y_re, const double y_im, U ** o)
+ {
+ const int64_t size = x_r * x_c;
+ U * _o = getPtr(o, size);
+ const std::complex<double> const std::complex<double> z1(y_re, y_im);
+ for (int64_t i = 0; i < size; ++i)
+ {
+ _o[i] = RECPX(x[i], z1);
+ }
+ }
+*/
+
+ } // namespace BaseFunctions
+
+} // namespace jit
+
+#endif // __BASE_BINARIES_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __JIT_BINARY_FUNCTORS_HXX__
+#define __JIT_BINARY_FUNCTORS_HXX__
+
+#include "addition.hxx"
+#include "subtraction.hxx"
+#include "product.hxx"
+#include "exponentiation.hxx"
+#include "ldivision.hxx"
+#include "rdivision.hxx"
+#include "equal.hxx"
+#include "not_equal.hxx"
+#include "greater_or_eq.hxx"
+#include "greater_than.hxx"
+#include "lower_or_eq.hxx"
+#include "lower_than.hxx"
+#include "and.hxx"
+#include "or.hxx"
+#include "tools.hxx"
+
+namespace jit
+{
+ namespace functors
+ {
+ template<typename T, typename U, typename V, typename Functor>
+ struct Binary
+ {
+
+ template<typename W, typename X, typename Y>
+ inline void operator()(jit::vect::WrapVecIn<W> && x, jit::vect::WrapVecIn<X> && y, jit::vect::WrapOut<Y> && o, const int64_t i)
+ {
+ o[i] = Functor()(x[i], y[i]);
+ }
+ };
+
+ template<typename T, typename U, typename V>
+ using add = Binary<T, U, V, jit::op::Add<T, U, V>>;
+
+ template<typename T, typename U, typename V>
+ using sub = Binary<T, U, V, jit::op::Sub<T, U, V>>;
+
+ template<typename T, typename U, typename V>
+ using dottimes = Binary<T, U, V, jit::op::Prod<T, U, V>>;
+
+ template<typename T, typename U, typename V>
+ using dotpower = Binary<T, U, V, jit::op::Pow<T, U, V>>;
+
+ template<typename T, typename U, typename V>
+ using dotldiv = Binary<T, U, V, jit::op::Ldiv<T, U, V>>;
+
+ template<typename T, typename U, typename V>
+ using dotrdiv = Binary<T, U, V, jit::op::Rdiv<T, U, V>>;
+
+ template<typename T, typename U, typename V>
+ using neq = Binary<T, U, V, jit::op::Neq<T, U, V>>;
+
+ template<typename T, typename U, typename V>
+ using eq = Binary<T, U, V, jit::op::Eq<T, U, V>>;
+
+ template<typename T, typename U, typename V>
+ using gt = Binary<T, U, V, jit::op::Gt<T, U, V>>;
+
+ template<typename T, typename U, typename V>
+ using ge = Binary<T, U, V, jit::op::Ge<T, U, V>>;
+
+ template<typename T, typename U, typename V>
+ using lt = Binary<T, U, V, jit::op::Lt<T, U, V>>;
+
+ template<typename T, typename U, typename V>
+ using le = Binary<T, U, V, jit::op::Le<T, U, V>>;
+
+ template<typename T, typename U, typename V>
+ using And = Binary<T, U, V, jit::op::And<T, U, V>>;
+
+ template<typename T, typename U, typename V>
+ using Or = Binary<T, U, V, jit::op::Or<T, U, V>>;
+
+ } // namespace functors
+
+} // namespace jit
+
+#endif // __JIT_BINARY_FUNCTORS_HXX__
--- /dev/null
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+*
+*/
+
+#ifndef __BASE_ELEM_FUNCTIONS_HXX__
+#define __BASE_ELEM_FUNCTIONS_HXX__
+
+#include <cmath>
+#include <complex>
+
+#include "Cast.hxx"
+
+#include "core_math.h"
+#include "faddeeva.h"
+
+extern "C"
+{
+#include "basic_functions.h"
+}
+
+namespace jit
+{
+namespace elem
+{
+
+template<typename T, typename U>
+struct cast
+{
+ inline U operator()(T x)
+ {
+ return (U)x;
+ }
+};
+
+template<typename T, typename U = T>
+struct abs
+{
+ inline U operator()(T x)
+ {
+ if (std::is_unsigned<T>::value)
+ {
+ return x;
+ }
+ return x >= 0 ? x : -x;
+ }
+};
+
+template<>
+struct abs<double, double>
+{
+ inline double operator()(double x)
+ {
+ return std::fabs(x);
+ }
+};
+
+template<>
+struct abs<const std::complex<double> &, double>
+{
+ inline double operator()(const std::complex<double> & z)
+ {
+ return std::hypot(z.real(), z.imag());
+ }
+};
+
+template<typename T, typename U = T>
+struct ceil
+{
+ inline U operator()(T x)
+ {
+ return x;
+ }
+};
+
+template<>
+struct ceil<double, double>
+{
+ inline double operator()(double x)
+ {
+ return std::ceil(x);
+ }
+};
+
+template<>
+struct ceil<const std::complex<double> &, std::complex<double>>
+{
+ inline std::complex<double> operator()(const std::complex<double> & z)
+ {
+ return std::complex<double>(std::ceil(z.real()), std::ceil(z.imag()));
+ }
+};
+
+template<typename T, typename U = T>
+struct floor
+{
+ inline U operator()(T x)
+ {
+ return x;
+ }
+};
+
+template<>
+struct floor<double, double>
+{
+ inline double operator()(double x)
+ {
+ return std::floor(x);
+ }
+};
+
+template<>
+struct floor<const std::complex<double> &, std::complex<double>>
+{
+ inline std::complex<double> operator()(const std::complex<double> & z)
+ {
+ return std::complex<double>(std::floor(z.real()), std::floor(z.imag()));
+ }
+};
+
+template<typename T, typename U = T>
+struct trunc
+{
+ inline U operator()(T x)
+ {
+ return x;
+ }
+};
+
+template<>
+struct trunc<double, double>
+{
+ inline double operator()(double x)
+ {
+ return std::trunc(x);
+ }
+};
+
+template<>
+struct trunc<const std::complex<double> &, std::complex<double>>
+{
+ inline std::complex<double> operator()(const std::complex<double> & z)
+ {
+ return std::complex<double>(std::trunc(z.real()), std::trunc(z.imag()));
+ }
+};
+
+template<typename T, typename U = T>
+struct round
+{
+ inline U operator()(T x)
+ {
+ return x;
+ }
+};
+
+template<>
+struct round<double, double>
+{
+ inline double operator()(double x)
+ {
+ return std::round(x);
+ }
+};
+
+template<>
+struct round<const std::complex<double> &, std::complex<double>>
+{
+ inline std::complex<double> operator()(const std::complex<double> & z)
+ {
+ return std::complex<double>(std::round(z.real()), std::round(z.imag()));
+ }
+};
+
+/*template<typename T>
+inline T min(T x, T y)
+{
+return x < y ? x : y;
+}
+
+template<typename T>
+inline T max(T x, T y)
+{
+return x > y ? x : y;
+}
+
+inline double rand()
+{
+static int * _iVal = 0;
+return durands(_iVal);
+}
+*/
+
+
+template<typename T, typename U = T>
+struct sign
+{
+ inline U operator()(T x)
+ {
+ if (std::is_unsigned<T>::value)
+ {
+ return 1;
+ }
+ else
+ {
+ return x < 0 ? -1 : 1;
+ }
+ }
+};
+
+template<>
+struct sign<double, double>
+{
+ inline double operator()(double x)
+ {
+ if (x == 0 || std::isnan(x))
+ {
+ return x;
+ }
+ return x < 0 ? -1 : 1;
+ }
+};
+
+template<>
+struct sign<const std::complex<double> &, std::complex<double>>
+{
+ inline std::complex<double> operator()(const std::complex<double> & z)
+ {
+ return z / std::hypot(z.real(), z.imag());
+ }
+};
+
+template<typename T, typename U = T>
+struct log2;
+
+template<>
+struct log2<double, double>
+{
+ inline double operator()(double x)
+ {
+ return std::log(x) / M_LN2;
+ }
+};
+
+template<>
+struct log2<const std::complex<double> &, std::complex<double>>
+{
+ inline std::complex<double> operator()(const std::complex<double> & z)
+ {
+ return std::log(z) / M_LN2;
+ }
+};
+
+template<typename T, typename U = T>
+struct log;
+
+template<>
+struct log<double, double>
+{
+ inline double operator()(double x)
+ {
+ return std::log(x);
+ }
+};
+
+template<>
+struct log<const std::complex<double> &, std::complex<double>>
+{
+ inline std::complex<double> operator()(const std::complex<double> & z)
+ {
+ return std::log(z);
+ }
+};
+
+template<typename T, typename U = T>
+struct log10;
+
+template<>
+struct log10<double, double>
+{
+ inline double operator()(double x)
+ {
+ return std::log10(x);
+ }
+};
+
+template<>
+struct log10<const std::complex<double> &, std::complex<double>>
+{
+ inline std::complex<double> operator()(const std::complex<double> & z)
+ {
+ return std::log10(z);
+ }
+};
+
+template<typename T, typename U = T>
+struct sqrt;
+
+template<>
+struct sqrt<double, double>
+{
+ inline double operator()(double x)
+ {
+ return std::sqrt(x);
+ }
+};
+
+template<>
+struct sqrt<const std::complex<double> &, std::complex<double>>
+{
+ inline std::complex<double> operator()(const std::complex<double> & z)
+ {
+ return std::sqrt(z);
+ }
+};
+
+template<typename T, typename U = T>
+struct sqrt_neg;
+
+template<>
+struct sqrt_neg<double, std::complex<double>>
+{
+ inline std::complex<double> operator()(double x)
+ {
+ return std::complex<double>(0, std::sqrt(-x));
+ }
+};
+
+template<typename T, typename U = T>
+struct log_neg;
+
+template<>
+struct log_neg<double, std::complex<double>>
+{
+ inline std::complex<double> operator()(double x)
+ {
+ return std::complex<double>(std::log(-x), M_PI);
+ }
+};
+
+template<typename T, typename U = T>
+struct log10_neg;
+
+template<>
+struct log10_neg<double, std::complex<double>>
+{
+ inline std::complex<double> operator()(double x)
+ {
+ return std::complex<double>(std::log10(-x), M_PI);
+ }
+};
+
+template<typename T, typename U = T>
+struct log2_neg;
+
+template<>
+struct log2_neg<double, std::complex<double>>
+{
+ inline std::complex<double> operator()(double x)
+ {
+ return std::complex<double>(std::log(-x) / M_LN2, M_PI / M_LN2);
+ }
+};
+
+//template<typename T, typename U = T>
+//struct erf;
+//
+//template<>
+//struct erf<double, double>
+//{
+// inline double operator()(double x)
+// {
+// return std::erf(x);
+// }
+//};
+//
+//template<>
+//struct erf<const std::complex<double> &, std::complex<double>>
+//{
+// inline std::complex<double> operator()(const std::complex<double> & z)
+// {
+// return Faddeeva::erf(z, 0);
+// }
+//};
+//
+//template<typename T, typename U = T>
+//struct erfc;
+//
+//template<>
+//struct erfc<double, double>
+//{
+// inline double operator()(double x)
+// {
+// return std::erfc(x);
+// }
+//};
+//
+//template<>
+//struct erfc<const std::complex<double> &, std::complex<double>>
+//{
+// inline std::complex<double> operator()(const std::complex<double> & z)
+// {
+// return Faddeeva::erfc(z, 0);
+// }
+//};
+//
+//template<typename T, typename U = T>
+//struct erfi;
+//
+//template<>
+//struct erfi<double, double>
+//{
+// inline double operator()(double x)
+// {
+// return Faddeeva::erfi(x);
+// }
+//};
+//
+//template<>
+//struct erfi<const std::complex<double> &, std::complex<double>>
+//{
+// inline std::complex<double> operator()(const std::complex<double> & z)
+// {
+// return Faddeeva::erfi(z, 0);
+// }
+//};
+//
+//template<typename T, typename U = T>
+//struct erfcx;
+//
+//template<>
+//struct erfcx<double, double>
+//{
+// inline double operator()(double x)
+// {
+// return Faddeeva::erfcx(x);
+// }
+//};
+//
+//template<>
+//struct erfcx<const std::complex<double> &, std::complex<double>>
+//{
+// inline std::complex<double> operator()(const std::complex<double> & z)
+// {
+// return Faddeeva::erfcx(z, 0);
+// }
+//};
+//
+//template<typename T, typename U = T>
+//struct dawson;
+//
+//template<>
+//struct dawson<double, double>
+//{
+// inline double operator()(double x)
+// {
+// return Faddeeva::Dawson(x);
+// }
+//};
+//
+//template<>
+//struct dawson<const std::complex<double> &, std::complex<double>>
+//{
+// inline std::complex<double> operator()(const std::complex<double> & z)
+// {
+// return Faddeeva::Dawson(z, 0);
+// }
+//};
+
+template<typename T, typename U = T>
+struct sin;
+
+template<>
+struct sin<double, double>
+{
+ inline double operator()(double x)
+ {
+ return std::sin(x);
+ }
+};
+
+template<>
+struct sin<const std::complex<double> &, std::complex<double>>
+{
+ inline std::complex<double> operator()(const std::complex<double> & z)
+ {
+ return std::sin(z);
+ }
+};
+
+template<typename T, typename U = T>
+struct cos;
+
+template<>
+struct cos<double, double>
+{
+ inline double operator()(double x)
+ {
+ return std::cos(x);
+ }
+};
+
+template<>
+struct cos<const std::complex<double> &, std::complex<double>>
+{
+ inline std::complex<double> operator()(const std::complex<double> & z)
+ {
+ return std::cos(z);
+ }
+};
+
+template<typename T, typename U = T>
+struct tan;
+
+template<>
+struct tan<double, double>
+{
+ inline double operator()(double x)
+ {
+ return std::tan(x);
+ }
+};
+
+template<>
+struct tan<const std::complex<double> &, std::complex<double>>
+{
+ inline std::complex<double> operator()(const std::complex<double> & z)
+ {
+ return std::tan(z);
+ }
+};
+
+template<typename T, typename U = T>
+struct tanh;
+
+template<>
+struct tanh<double, double>
+{
+ inline double operator()(double x)
+ {
+ return std::tanh(x);
+ }
+};
+
+template<>
+struct tanh<const std::complex<double> &, std::complex<double>>
+{
+ inline std::complex<double> operator()(const std::complex<double> & z)
+ {
+ return std::tanh(z);
+ }
+};
+
+template<typename T, typename U = T>
+struct sinh;
+
+template<>
+struct sinh<double, double>
+{
+ inline double operator()(double x)
+ {
+ return std::sinh(x);
+ }
+};
+
+template<>
+struct sinh<const std::complex<double> &, std::complex<double>>
+{
+ inline std::complex<double> operator()(const std::complex<double> & z)
+ {
+ return std::sinh(z);
+ }
+};
+
+template<typename T, typename U = T>
+struct cosh;
+
+template<>
+struct cosh<double, double>
+{
+ inline double operator()(double x)
+ {
+ return std::cosh(x);
+ }
+};
+
+template<>
+struct cosh<const std::complex<double> &, std::complex<double>>
+{
+ inline std::complex<double> operator()(const std::complex<double> & z)
+ {
+ return std::cosh(z);
+ }
+};
+
+template<typename T, typename U = T>
+struct atan;
+
+template<>
+struct atan<double, double>
+{
+ inline double operator()(double x)
+ {
+ return std::atan(x);
+ }
+};
+
+template<>
+struct atan<const std::complex<double> &, std::complex<double>>
+{
+ inline std::complex<double> operator()(const std::complex<double> & z)
+ {
+ return std::atan(z);
+ }
+};
+
+template<typename T, typename U = T>
+struct exp;
+
+template<>
+struct exp<double, double>
+{
+ inline double operator()(double x)
+ {
+ return std::exp(x);
+ }
+};
+
+template<>
+struct exp<const std::complex<double> &, std::complex<double>>
+{
+ inline std::complex<double> operator()(const std::complex<double> & z)
+ {
+ return std::exp(z);
+ }
+};
+
+template<typename T, typename U = T>
+struct tgamma;
+
+template<>
+struct tgamma<double, double>
+{
+ inline double operator()(double x)
+ {
+ return std::tgamma(x);
+ }
+};
+
+template<typename T, typename U = T>
+struct lgamma;
+
+template<>
+struct lgamma<double, double>
+{
+ inline double operator()(double x)
+ {
+ return std::lgamma(x);
+ }
+};
+
+template<typename T, typename U = T>
+struct real;
+
+template<>
+struct real<double, double>
+{
+ inline double operator()(double x)
+ {
+ return x;
+ }
+};
+
+template<>
+struct real<const std::complex<double> &, std::complex<double>>
+{
+ inline std::complex<double> operator()(const std::complex<double> & z)
+ {
+ return z.real();
+ }
+};
+
+template<typename T, typename U = T>
+struct imag;
+
+template<>
+struct imag<double, double>
+{
+ inline double operator()(double x)
+ {
+ return 0;
+ }
+};
+
+template<>
+struct imag<const std::complex<double> &, double>
+{
+ inline double operator()(const std::complex<double> & z)
+ {
+ return z.imag();
+ }
+};
+
+template<typename T>
+struct is_strict_negative;
+
+template<>
+struct is_strict_negative<double>
+{
+ inline bool operator()(double x)
+ {
+ return x < 0;
+ }
+};
+
+} // namespace BaseFunctions
+
+} // namespace jit
+
+#endif // __BASE_ELEM_FUNCTIONS_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __BASE_EQUAL_HXX__
+#define __BASE_EQUAL_HXX__
+
+#include <complex>
+
+#include "Cast.hxx"
+
+
+namespace jit
+{
+ namespace op
+ {
+
+ template<typename T, typename U, typename V>
+ struct Eq
+ {
+ typedef typename ScilabType<T, U>::type __type;
+
+ inline V operator()(T x, U y)
+ {
+ return (__type)x == (__type)y;
+ }
+ };
+
+ template<typename U, typename V>
+ struct Eq<const std::complex<double> &, U, V>
+ {
+
+ inline V operator()(const std::complex<double> & x, U y)
+ {
+ return x == (double)y;
+ }
+ };
+
+ template<typename T, typename V>
+ struct Eq<T, const std::complex<double> &, V>
+ {
+
+ inline V operator()(T x, const std::complex<double> & y)
+ {
+ return (double)x == y;
+ }
+ };
+
+ template<typename V>
+ struct Eq<const std::complex<double> &, const std::complex<double> &, V>
+ {
+
+ inline V operator()(const std::complex<double> & x, const std::complex<double> & y)
+ {
+ return x == y;
+ }
+ };
+
+
+ } // namespace op
+
+} // namespace jit
+
+#endif // __BASE_EQUAL_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __BASE_EXPONENTIATION_HXX__
+#define __BASE_EXPONENTIATION_HXX__
+
+#include <complex>
+
+#include "Cast.hxx"
+
+
+namespace jit
+{
+ namespace op
+ {
+
+ template<typename T, typename U, typename V>
+ struct Pow
+ {
+
+ inline V operator()(T x, U y)
+ {
+ return (V)std::pow((V)x, (V)y);
+ }
+ };
+
+ template<typename U>
+ struct Pow<const std::complex<double> &, U, std::complex<double>>
+ {
+
+ inline std::complex<double> operator()(const std::complex<double> & x, U y)
+ {
+ return std::pow(x, (double)y);
+ }
+ };
+
+ template<typename T>
+ struct Pow<T, const std::complex<double> &, std::complex<double>>
+ {
+
+ inline std::complex<double> operator()(T x, const std::complex<double> & y)
+ {
+ return std::pow((double)x, y);
+ }
+ };
+
+ template<>
+ struct Pow<const std::complex<double> &, const std::complex<double> &, std::complex<double>>
+ {
+
+ inline std::complex<double> operator()(const std::complex<double> & x, const std::complex<double> & y)
+ {
+ return std::pow(x, y);
+ }
+ };
+
+ } // namespace op
+
+} // namespace jit
+
+#endif // __BASE_EXPONENTIATION_HXX__
--- /dev/null
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+*
+*/
+
+#ifndef __JIT_FUNCTORS_HXX__
+#define __JIT_FUNCTORS_HXX__
+
+#include "elem_functions.hxx"
+#include "tools.hxx"
+
+namespace jit
+{
+namespace functors
+{
+template<typename T, typename U, typename F>
+struct Unary
+{
+
+ const static bool as_usual = true;
+
+ template<typename V, typename W>
+ inline void operator()(jit::vect::WrapVecIn<V> && x, jit::vect::WrapOut<W> && o, const int64_t i)
+ {
+ o[i] = F()(x[i]);
+ }
+};
+
+template<typename USECPX, typename CPX, typename RE>
+struct Unary_cpx
+{
+ const static bool as_usual = false;
+
+ template<typename V>
+ inline void operator()(jit::vect::WrapVecIn<V> && x, jit::vect::WrapOut<jit::cpx_t> && o, const int64_t i, const int64_t size)
+ {
+ const double xi = (double)x[i];
+ if (USECPX()(xi))
+ {
+ o.initIm(size);
+ o[i] = CPX()(xi);
+ }
+ else
+ {
+ o[i] = RE()(xi);
+ }
+ }
+};
+
+template<typename T, typename U>
+using sin = Unary<T, U, jit::elem::sin<T, U>>;
+
+template<typename T, typename U>
+using cos = Unary<T, U, jit::elem::cos<T, U>>;
+
+template<typename T, typename U>
+using tan = Unary<T, U, jit::elem::tan<T, U>>;
+
+template<typename T, typename U>
+using tanh = Unary<T, U, jit::elem::tanh<T, U>>;
+
+template<typename T, typename U>
+using sinh = Unary<T, U, jit::elem::sinh<T, U>>;
+
+template<typename T, typename U>
+using cosh = Unary<T, U, jit::elem::cosh<T, U>>;
+
+template<typename T, typename U>
+using atan = Unary<T, U, jit::elem::atan<T, U>>;
+
+template<typename T, typename U>
+using abs = Unary<T, U, jit::elem::abs<T, U>>;
+
+template<typename T, typename U>
+using exp = Unary<T, U, jit::elem::exp<T, U>>;
+
+template<typename T, typename U>
+using sign = Unary<T, U, jit::elem::sign<T, U>>;
+
+template<typename T, typename U>
+using gamma = Unary<T, U, jit::elem::tgamma<T, U>>;
+
+template<typename T, typename U>
+using gammaln = Unary<T, U, jit::elem::lgamma<T, U>>;
+
+template<typename T, typename U>
+using ceil = Unary<T, U, jit::elem::ceil<T, U>>;
+
+template<typename T, typename U>
+using floor = Unary<T, U, jit::elem::floor<T, U>>;
+
+template<typename T, typename U>
+using round = Unary<T, U, jit::elem::round<T, U>>;
+
+template<typename T, typename U>
+using trunc = Unary<T, U, jit::elem::trunc<T, U>>;
+
+template<typename T, typename U>
+using fix = Unary<T, U, jit::elem::trunc<T, U>>;
+
+template<typename T, typename U>
+using int8 = Unary<T, U, jit::elem::cast<T, U>>;
+
+template<typename T, typename U>
+using int16 = Unary<T, U, jit::elem::cast<T, U>>;
+
+template<typename T, typename U>
+using int32 = Unary<T, U, jit::elem::cast<T, U>>;
+
+template<typename T, typename U>
+using int64 = Unary<T, U, jit::elem::cast<T, U>>;
+
+template<typename T, typename U>
+using uint8 = Unary<T, U, jit::elem::cast<T, U>>;
+
+template<typename T, typename U>
+using uint16 = Unary<T, U, jit::elem::cast<T, U>>;
+
+template<typename T, typename U>
+using uint32 = Unary<T, U, jit::elem::cast<T, U>>;
+
+template<typename T, typename U>
+using uint64 = Unary<T, U, jit::elem::cast<T, U>>;
+
+//template<typename T, typename U>
+//using erfi = Unary<T, U, jit::elem::erfi<T, U>>;
+//
+//template<typename T, typename U>
+//using erfcx = Unary<T, U, jit::elem::erfcx<T, U>>;
+//
+//template<typename T, typename U>
+//using erf = Unary<T, U, jit::elem::erf<T, U>>;
+//
+//template<typename T, typename U>
+//using erfc = Unary<T, U, jit::elem::erfc<T, U>>;
+
+template<typename T, typename U>
+using real = Unary<T, U, jit::elem::real<T, U>>;
+
+template<typename T, typename U>
+using imag = Unary<T, U, jit::elem::imag<T, U>>;
+
+template<typename T, typename U>
+struct log
+{
+ typedef jit::functors::Unary<T, U, jit::elem::log<T, U>> F;
+ const static bool as_usual = F::as_usual;
+
+ template<typename V, typename W>
+ inline void operator()(jit::vect::WrapVecIn<V> && x, jit::vect::WrapOut<W> && o, const int64_t i)
+ {
+ F()(std::move(x), std::move(o), i);
+ }
+};
+
+template<>
+struct log<double, jit::cpx_t>
+{
+ typedef jit::functors::Unary_cpx<jit::elem::is_strict_negative<double>, jit::elem::log_neg<double, std::complex<double>>, jit::elem::log<double, double>> F;
+ const static bool as_usual = F::as_usual;
+
+ template<typename V>
+ inline void operator()(jit::vect::WrapVecIn<V> && x, jit::vect::WrapOut<jit::cpx_t> && o, const int64_t i, const int64_t size)
+ {
+ F()(std::move(x), std::move(o), i, size);
+ }
+};
+
+template<typename T, typename U>
+struct log2
+{
+ typedef jit::functors::Unary<T, U, jit::elem::log2<T, U>> F;
+ const static bool as_usual = F::as_usual;
+
+ template<typename V, typename W>
+ inline void operator()(jit::vect::WrapVecIn<V> && x, jit::vect::WrapOut<W> && o, const int64_t i)
+ {
+ F()(std::move(x), std::move(o), i);
+ }
+};
+
+template<>
+struct log2<double, jit::cpx_t>
+{
+ typedef jit::functors::Unary_cpx<jit::elem::is_strict_negative<double>, jit::elem::log2_neg<double, std::complex<double>>, jit::elem::log2<double, double>> F;
+ const static bool as_usual = F::as_usual;
+
+ template<typename V>
+ inline void operator()(jit::vect::WrapVecIn<V> && x, jit::vect::WrapOut<jit::cpx_t> && o, const int64_t i, const int64_t size)
+ {
+ F()(std::move(x), std::move(o), i, size);
+ }
+};
+
+template<typename T, typename U>
+struct log10
+{
+ typedef jit::functors::Unary<T, U, jit::elem::log10<T, U>> F;
+ const static bool as_usual = F::as_usual;
+
+ template<typename V, typename W>
+ inline void operator()(jit::vect::WrapVecIn<V> && x, jit::vect::WrapOut<W> && o, const int64_t i)
+ {
+ F()(std::move(x), std::move(o), i);
+ }
+};
+
+template<>
+struct log10<double, jit::cpx_t>
+{
+ typedef jit::functors::Unary_cpx<jit::elem::is_strict_negative<double>, jit::elem::log10_neg<double, std::complex<double>>, jit::elem::log10<double, double>> F;
+ const static bool as_usual = F::as_usual;
+
+ template<typename V>
+ inline void operator()(jit::vect::WrapVecIn<V> && x, jit::vect::WrapOut<jit::cpx_t> && o, const int64_t i, const int64_t size)
+ {
+ F()(std::move(x), std::move(o), i, size);
+ }
+};
+
+
+template<typename T, typename U>
+struct sqrt
+{
+ typedef jit::functors::Unary<T, U, jit::elem::sqrt<T, U>> F;
+ const static bool as_usual = F::as_usual;
+
+ template<typename V, typename W>
+ inline void operator()(jit::vect::WrapVecIn<V> && x, jit::vect::WrapOut<W> && o, const int64_t i)
+ {
+ F()(std::move(x), std::move(o), i);
+ }
+};
+
+template<>
+struct sqrt<double, jit::cpx_t>
+{
+ typedef jit::functors::Unary_cpx<jit::elem::is_strict_negative<double>, jit::elem::sqrt_neg<double, std::complex<double>>, jit::elem::sqrt<double, double>> F;
+ const static bool as_usual = F::as_usual;
+
+ template<typename V>
+ inline void operator()(jit::vect::WrapVecIn<V> && x, jit::vect::WrapOut<jit::cpx_t> && o, const int64_t i, const int64_t size)
+ {
+ F()(std::move(x), std::move(o), i, size);
+ }
+};
+
+} // namespace functors
+
+} // namespace jit
+
+#endif // __JIT_FUNCTORS_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __BASE_GREATER_OR_EQ_HXX__
+#define __BASE_GREATER_OR_EQ_HXX__
+
+#include "Cast.hxx"
+
+namespace jit
+{
+ namespace op
+ {
+
+ template<typename T, typename U, typename V>
+ struct Ge
+ {
+ typedef typename ScilabType<T, U>::type __type;
+
+ inline V operator()(T x, U y)
+ {
+ return (__type)x >= (__type)y;
+ }
+ };
+
+ } // namespace op
+
+} // namespace jit
+
+#endif // __BASE_GREATER_OR_EQ_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __BASE_GREATER_THAN_HXX__
+#define __BASE_GREATER_THAN_HXX__
+
+#include "Cast.hxx"
+
+namespace jit
+{
+ namespace op
+ {
+
+ template<typename T, typename U, typename V>
+ struct Gt
+ {
+ typedef typename ScilabType<T, U>::type __type;
+
+ inline V operator()(T x, U y)
+ {
+ return (__type)x > (__type)y;
+ }
+ };
+
+ } // namespace op
+
+} // namespace jit
+
+#endif // __BASE_GREATER_THAN_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __BASE_LDIVISIONS_HXX__
+#define __BASE_LDIVISIONS_HXX__
+
+#include <complex>
+
+#include "Cast.hxx"
+
+
+namespace jit
+{
+ namespace op
+ {
+
+ template<typename T, typename U, typename V>
+ struct Ldiv
+ {
+
+ inline V operator()(T x, U y)
+ {
+ return (V)y / (V)x;
+ }
+ };
+
+ template<typename U>
+ struct Ldiv<const std::complex<double> &, U, std::complex<double>>
+ {
+
+ inline std::complex<double> operator()(const std::complex<double> & x, U y)
+ {
+ return (double)y / x;
+ }
+ };
+
+ template<typename T>
+ struct Ldiv<T, const std::complex<double> &, std::complex<double>>
+ {
+
+ inline std::complex<double> operator()(T x, const std::complex<double> & y)
+ {
+ return y / (double)x;
+ }
+ };
+
+ template<>
+ struct Ldiv<const std::complex<double> &, const std::complex<double> &, std::complex<double>>
+ {
+
+ inline std::complex<double> operator()(const std::complex<double> & x, const std::complex<double> & y)
+ {
+ return y / x;
+ }
+ };
+
+ } // namespace op
+
+} // namespace jit
+
+#endif // __BASELDIVISIONS_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __BASE_LOWER_OR_EQ_HXX__
+#define __BASE_LOWER_OR_EQ_HXX__
+
+#include "Cast.hxx"
+
+namespace jit
+{
+ namespace op
+ {
+
+ template<typename T, typename U, typename V>
+ struct Le
+ {
+ typedef typename ScilabType<T, U>::type __type;
+
+ inline V operator()(T x, U y)
+ {
+ return (__type)x >= (__type)y;
+ }
+ };
+
+ } // namespace op
+
+} // namespace jit
+
+#endif // __BASE_LOWER_OR_EQ_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __BASE_LOWER_THAN_HXX__
+#define __BASE_LOWER_THAN_HXX__
+
+#include "Cast.hxx"
+
+namespace jit
+{
+ namespace op
+ {
+
+ template<typename T, typename U, typename V>
+ struct Lt
+ {
+ typedef typename ScilabType<T, U>::type __type;
+
+ inline V operator()(T x, U y)
+ {
+ return (__type)x < (__type)y;
+ }
+ };
+
+
+ } // namespace op
+
+} // namespace jit
+
+#endif // __BASE_LOWER_THAN_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __BASE_NOT_EQUAL_HXX__
+#define __BASE_NOT_EQUAL_HXX__
+
+#include <complex>
+
+#include "Cast.hxx"
+
+
+namespace jit
+{
+ namespace op
+ {
+
+ template<typename T, typename U, typename V>
+ struct Neq
+ {
+ typedef typename ScilabType<T, U>::type __type;
+
+ inline V operator()(T x, U y)
+ {
+ return (__type)x != (__type)y;
+ }
+ };
+
+ template<typename U, typename V>
+ struct Neq<const std::complex<double> &, U, V>
+ {
+
+ inline V operator()(const std::complex<double> & x, U y)
+ {
+ return x != (double)y;
+ }
+ };
+
+ template<typename T, typename V>
+ struct Neq<T, const std::complex<double> &, V>
+ {
+
+ inline V operator()(T x, const std::complex<double> & y)
+ {
+ return (double)x != y;
+ }
+ };
+
+ template<typename V>
+ struct Neq<const std::complex<double> &, const std::complex<double> &, V>
+ {
+
+ inline V operator()(const std::complex<double> & x, const std::complex<double> & y)
+ {
+ return x != y;
+ }
+ };
+
+ } // namespace op
+
+} // namespace jit
+
+#endif // __BASE_NOT_EQUAL_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __BASE_OR_HXX__
+#define __BASE_OR_HXX__
+
+#include <complex>
+
+#include "Cast.hxx"
+
+namespace jit
+{
+ namespace op
+ {
+
+ template<bool are_integral, typename T, typename U, typename V>
+ struct __Or_helper;
+
+ template<typename T, typename U, typename V>
+ struct __Or_helper<true, T, U, V>
+ {
+ inline V operator()(T x, U y)
+ {
+ return (V)x | (V)y;
+ }
+ };
+
+ template<typename T, typename U, typename V>
+ struct __Or_helper<false, T, U, V>
+ {
+ inline V operator()(T x, U y)
+ {
+ return (x != 0) || (y != 0);
+ }
+ };
+
+ template<typename U, typename V>
+ struct __Or_helper<false, const std::complex<double> &, U, V>
+ {
+
+ inline V operator()(const std::complex<double> & x, U y)
+ {
+ return (x != 0.) || ((double)y != 0);
+ }
+ };
+
+ template<typename T, typename V>
+ struct __Or_helper<false, T, const std::complex<double> &, V>
+ {
+
+ inline V operator()(T x, const std::complex<double> & y)
+ {
+ return ((double)x != 0.) || (y != 0.);
+ }
+ };
+
+ template<typename V>
+ struct __Or_helper<false, const std::complex<double> &, const std::complex<double> &, V>
+ {
+
+ inline V operator()(const std::complex<double> & x, const std::complex<double> & y)
+ {
+ return (x != 0.) || (y != 0.);
+ }
+ };
+
+ template<typename T, typename U, typename V>
+ struct Or
+ {
+ inline V operator()(T x, U y)
+ {
+ return __Or_helper<jit::is_pure_integral<T>::value && jit::is_pure_integral<U>::value, T, U, V>()(x, y);
+ }
+ };
+
+ } // namespace op
+
+} // namespace jit
+
+#endif // __BASE_OR_HXX__
--- /dev/null
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#ifndef __BASE_PRODUCTS_HXX__
+#define __BASE_PRODUCTS_HXX__
+
+#include <complex>
+
+#include "Cast.hxx"
+
+
+namespace jit
+{
+ namespace op
+ {
+
+ template<type