Changeset: 9fc10654e158 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9fc10654e158 Modified Files: monetdb5/modules/mal/mal_weld.c monetdb5/modules/mal/mal_weld.h monetdb5/modules/mal/mal_weld.mal monetdb5/modules/mal/mal_weld.mal.sh monetdb5/optimizer/opt_prelude.c monetdb5/optimizer/opt_prelude.h monetdb5/optimizer/opt_weld.c Branch: mal-weld Log Message:
weld impl for batcalc.or diffs (143 lines): diff --git a/monetdb5/modules/mal/mal_weld.c b/monetdb5/modules/mal/mal_weld.c --- a/monetdb5/modules/mal/mal_weld.c +++ b/monetdb5/modules/mal/mal_weld.c @@ -807,6 +807,13 @@ WeldBatcalcANDsignal(Client cntxt, MalBl } str +WeldBatcalcORsignal(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) +{ + (void) cntxt; + return WeldBatcalcBinary(mb, stk, pci, "|", "weld.batcalcadd"); +} + +str WeldBatcalcADDsignal(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) { (void) cntxt; diff --git a/monetdb5/modules/mal/mal_weld.h b/monetdb5/modules/mal/mal_weld.h --- a/monetdb5/modules/mal/mal_weld.h +++ b/monetdb5/modules/mal/mal_weld.h @@ -32,6 +32,7 @@ mal_export str WeldAlgebraSelect2(Client mal_export str WeldAlgebraThetaselect1(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); mal_export str WeldAlgebraThetaselect2(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); mal_export str WeldBatcalcANDsignal(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +mal_export str WeldBatcalcORsignal(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); mal_export str WeldBatcalcADDsignal(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); mal_export str WeldBatcalcSUBsignal(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); mal_export str WeldBatcalcMULsignal(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); diff --git a/monetdb5/modules/mal/mal_weld.mal b/monetdb5/modules/mal/mal_weld.mal --- a/monetdb5/modules/mal/mal_weld.mal +++ b/monetdb5/modules/mal/mal_weld.mal @@ -2683,6 +2683,25 @@ pattern batcalcand(v:any_1, b:bat[:any_1 address WeldBatcalcANDsignal comment "batcalcand with candidates list"; +pattern batcalcor(b1:bat[:any_1], b2:bat[:any_1], wstate:ptr):bat[:bit] +address WeldBatcalcORsignal +comment "batcalcor"; +pattern batcalcor(b1:bat[:any_1], b2:bat[:any_1], s:bat[:oid], wstate:ptr):bat[:bit] +address WeldBatcalcORsignal +comment "batcalcor with candidates list"; +pattern batcalcor(b:bat[:any_1], v:any_1, wstate:ptr):bat[:bit] +address WeldBatcalcORsignal +comment "batcalcor"; +pattern batcalcor(b:bat[:any_1], v:any_1, s:bat[:oid], wstate:ptr):bat[:bit] +address WeldBatcalcORsignal +comment "batcalcor with candidates list"; +pattern batcalcor(v:any_1, b:bat[:any_1], wstate:ptr):bat[:bit] +address WeldBatcalcORsignal +comment "batcalcor"; +pattern batcalcor(v:any_1, b:bat[:any_1], s:bat[:oid], wstate:ptr):bat[:bit] +address WeldBatcalcORsignal +comment "batcalcor with candidates list"; + pattern language.pass(v:any_1, wstate:ptr):void address WeldLanguagePass comment "language.pass"; diff --git a/monetdb5/modules/mal/mal_weld.mal.sh b/monetdb5/modules/mal/mal_weld.mal.sh --- a/monetdb5/modules/mal/mal_weld.mal.sh +++ b/monetdb5/modules/mal/mal_weld.mal.sh @@ -204,7 +204,7 @@ EOF done done -for func in batcalclt:LT batcalcle:LE batcalceq:EQ batcalcgt:GT batcalcge:GE batcalcne:NE batcalcand:AND; do +for func in batcalclt:LT batcalcle:LE batcalceq:EQ batcalcgt:GT batcalcge:GE batcalcne:NE batcalcand:AND batcalcor:OR; do name=${func#*:} op=${func%:*} cat <<EOF diff --git a/monetdb5/optimizer/opt_prelude.c b/monetdb5/optimizer/opt_prelude.c --- a/monetdb5/optimizer/opt_prelude.c +++ b/monetdb5/optimizer/opt_prelude.c @@ -196,6 +196,7 @@ str oidRef; str oltpRef; str openRef; str optimizerRef; +str orRef; str pack2Ref; str packIncrementRef; str packRef; @@ -319,6 +320,7 @@ str weldAlgebraProjectionRef; str weldAlgebraSelectRef; str weldAlgebraThetaselectRef; str weldBatcalcAndRef; +str weldBatcalcOrRef; str weldBatcalcAddRef; str weldBatcalcSubRef; str weldBatcalcMulRef; @@ -537,6 +539,7 @@ void optimizerInit(void) oltpRef = putName("oltp"); oidRef = putName("oid"); optimizerRef = putName("optimizer"); + orRef = putName("or"); openRef = putName("open"); parametersRef = putName("parameters"); packRef = putName("pack"); @@ -649,6 +652,7 @@ void optimizerInit(void) weldAlgebraSelectRef = putName("algebraselect"); weldAlgebraThetaselectRef = putName("algebrathetaselect"); weldBatcalcAndRef = putName("batcalcand"); + weldBatcalcOrRef = putName("batcalcor"); weldBatcalcAddRef = putName("batcalcadd"); weldBatcalcSubRef = putName("batcalcsub"); weldBatcalcMulRef = putName("batcalcmul"); diff --git a/monetdb5/optimizer/opt_prelude.h b/monetdb5/optimizer/opt_prelude.h --- a/monetdb5/optimizer/opt_prelude.h +++ b/monetdb5/optimizer/opt_prelude.h @@ -196,6 +196,7 @@ mal_export str oidRef; mal_export str oltpRef; mal_export str openRef; mal_export str optimizerRef; +mal_export str orRef; mal_export str pack2Ref; mal_export str packIncrementRef; mal_export str packRef; @@ -327,6 +328,7 @@ mal_export str weldAlgebraProjectionRef mal_export str weldAlgebraSelectRef; mal_export str weldAlgebraThetaselectRef; mal_export str weldBatcalcAndRef; +mal_export str weldBatcalcOrRef; mal_export str weldBatcalcAddRef; mal_export str weldBatcalcSubRef; mal_export str weldBatcalcMulRef; diff --git a/monetdb5/optimizer/opt_weld.c b/monetdb5/optimizer/opt_weld.c --- a/monetdb5/optimizer/opt_weld.c +++ b/monetdb5/optimizer/opt_weld.c @@ -18,7 +18,7 @@ #include "mal_instruction.h" #include "opt_weld.h" -#define NUM_WELD_INSTR 35 +#define NUM_WELD_INSTR 36 #define UNMARKED 0 #define TEMP_MARK 1 #define PERM_MARK 2 @@ -58,6 +58,7 @@ static void initWeldInstrs(void) { addWeldInstr(algebraRef, selectRef, weldAlgebraSelectRef); /* algebra.select */ addWeldInstr(algebraRef, thetaselectRef, weldAlgebraThetaselectRef); /* algebra.thetaselect */ addWeldInstr(batcalcRef, andRef, weldBatcalcAndRef); /* batcalc.and */ + addWeldInstr(batcalcRef, orRef, weldBatcalcOrRef); /* batcalc.or */ addWeldInstr(batcalcRef, plusRef, weldBatcalcAddRef); /* batcalc.+ */ addWeldInstr(batcalcRef, minusRef, weldBatcalcSubRef); /* batcalc.- */ addWeldInstr(batcalcRef, mulRef, weldBatcalcMulRef); /* batcalc.* */ _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list