Changeset: 1d40e6b64c71 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1d40e6b64c71
Added Files:
        monetdb5/modules/mal/mal_weld.c
        monetdb5/modules/mal/mal_weld.mal
        monetdb5/modules/mal/mal_weld.mal.sh
        monetdb5/optimizer/Tests/weld01.malC
        monetdb5/optimizer/Tests/weld01.stable.err
        monetdb5/optimizer/Tests/weld01.stable.out
        monetdb5/optimizer/Tests/weld02.malC
        monetdb5/optimizer/Tests/weld02.stable.err
        monetdb5/optimizer/Tests/weld02.stable.out
        monetdb5/optimizer/opt_weld.c
        monetdb5/optimizer/opt_weld.h
Modified Files:
        monetdb5/modules/mal/Makefile.ag
        monetdb5/optimizer/Makefile.ag
        monetdb5/optimizer/Tests/All
        monetdb5/optimizer/opt_pipes.c
        monetdb5/optimizer/opt_prelude.c
        monetdb5/optimizer/opt_prelude.h
        monetdb5/optimizer/opt_support.c
        monetdb5/optimizer/opt_wrapper.c
        monetdb5/optimizer/optimizer.mal
Branch: mal-weld
Log Message:

mal-weld optimizer that identifies weld portable instructions


diffs (truncated from 1443 to 300 lines):

diff --git a/monetdb5/modules/mal/Makefile.ag b/monetdb5/modules/mal/Makefile.ag
--- a/monetdb5/modules/mal/Makefile.ag
+++ b/monetdb5/modules/mal/Makefile.ag
@@ -30,6 +30,7 @@ lib_mal = {
                language.c language.h \
                mal_io.c mal_io.h \
                mal_mapi.c mal_mapi.h \
+               mal_weld.c \
                manual.c manual.h \
                mat.c mat.h \
                mdb.c mdb.h \
@@ -62,7 +63,7 @@ headers_mal = {
                factories.mal groupby.mal mdb.mal pcre.mal mat.mal \
                transaction.mal oltp.mal wlc.mal \
                mal_mapi.mal sabaoth.mal remote.mal  \
-               txtsim.mal \
+               txtsim.mal mal_weld.mal \
                tokenizer.mal sample.mal json_util.mal \
                batmtime.mal querylog.mal sysmon.mal
 }
@@ -70,7 +71,7 @@ headers_mal = {
 headers_auto = {
        HEADERS = mal
        DIR = libdir/monetdb5/autoload
-       SOURCES = 01_calc.mal 01_batcalc.mal
+       SOURCES = 01_calc.mal 01_batcalc.mal mal_weld.mal
 }
 
 headers_hge = {
diff --git a/monetdb5/modules/mal/mal_weld.c b/monetdb5/modules/mal/mal_weld.c
new file mode 100644
--- /dev/null
+++ b/monetdb5/modules/mal/mal_weld.c
@@ -0,0 +1,131 @@
+/*
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0.  If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * Copyright 1997 - July 2008 CWI, August 2008 - 2018 MonetDB B.V.
+ */
+
+#include "monetdb_config.h"
+#include "gdk.h"
+#include "mal_exception.h"
+#include "mal_interpreter.h"
+
+mal_export str WeldInitState(ptr *retval);
+str
+WeldInitState(ptr *retval)
+{
+       (void) retval;
+       return MAL_SUCCEED;
+}
+
+mal_export str WeldRun(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
+str
+WeldRun(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+       (void) cntxt;
+       (void) mb;
+       (void) stk;
+       (void) pci;
+       return MAL_SUCCEED;
+}
+
+mal_export str WeldGetResult(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+str
+WeldGetResult(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+       (void) cntxt;
+       (void) mb;
+       (void) stk;
+       (void) pci;
+       return MAL_SUCCEED;
+}
+
+mal_export str WeldAggrSum(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
+str
+WeldAggrSum(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+       (void) cntxt;
+       (void) mb;
+       (void) stk;
+       (void) pci;
+       return MAL_SUCCEED;
+}
+
+mal_export str WeldAlgebraProjection(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
+str
+WeldAlgebraProjection(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+       (void) cntxt;
+       (void) mb;
+       (void) stk;
+       (void) pci;
+       return MAL_SUCCEED;
+}
+
+mal_export str WeldAlgebraSelect1(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+str
+WeldAlgebraSelect1(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+       (void) cntxt;
+       (void) mb;
+       (void) stk;
+       (void) pci;
+       return MAL_SUCCEED;
+}
+
+mal_export str WeldAlgebraSelect2(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+str
+WeldAlgebraSelect2(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+       (void) cntxt;
+       (void) mb;
+       (void) stk;
+       (void) pci;
+       return MAL_SUCCEED;
+}
+
+mal_export str WeldAlgebraThetaselect1(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
+str
+WeldAlgebraThetaselect1(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci)
+{
+       (void) cntxt;
+       (void) mb;
+       (void) stk;
+       (void) pci;
+       return MAL_SUCCEED;
+}
+
+mal_export str WeldAlgebraThetaselect2(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
+str
+WeldAlgebraThetaselect2(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci)
+{
+       (void) cntxt;
+       (void) mb;
+       (void) stk;
+       (void) pci;
+       return MAL_SUCCEED;
+}
+
+mal_export str WeldBatcalcMULsignal(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+str
+WeldBatcalcMULsignal(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+       (void) cntxt;
+       (void) mb;
+       (void) stk;
+       (void) pci;
+       return MAL_SUCCEED;
+}
+
+mal_export str WeldLanguagePass(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+
+str
+WeldLanguagePass(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+       (void) cntxt;
+       (void) mb;
+       (void) stk;
+       (void) pci;
+       return MAL_SUCCEED;
+}
diff --git a/monetdb5/modules/mal/mal_weld.mal 
b/monetdb5/modules/mal/mal_weld.mal
new file mode 100644
--- /dev/null
+++ b/monetdb5/modules/mal/mal_weld.mal
@@ -0,0 +1,313 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0.  If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Copyright 1997 - July 2008 CWI, August 2008 - 2018 MonetDB B.V.
+
+# This file was generated by using the script mal_weld.mal.sh.
+
+module weld;
+
+
+command initstate():ptr
+address WeldInitState
+comment "Initialize the state structure that is used to build a weld program";
+
+pattern run(wstate:ptr, arg:any...):any...
+address WeldRun
+comment "Compile and run the Weld program";
+
+pattern algebraprojection(left:bat[:oid], right:bat[:any_1], 
wstate:ptr):bat[any_1]
+address WeldAlgebraProjection
+comment "algebra.projection";
+
+pattern algebraselect(b:bat[:any_1], low:any_1, high:any_1, li:bit, hi:bit, 
anti:bit, wstate:ptr):bat[:oid]
+address WeldAlgebraSelect1
+comment "algebra.select";
+
+pattern algebraselect(b:bat[:any_1], s:bat[:oid], low:any_1, high:any_1, 
li:bit, hi:bit, anti:bit, wstate:ptr):bat[:oid]
+address WeldAlgebraSelect2
+comment "algebra.select";
+
+pattern algebrathetaselect(b:bat[:any_1], val:any_1, op:str, 
wstate:ptr):bat[:oid]
+address WeldAlgebraThetaselect1
+comment "algebra.thetaselect";
+
+pattern algebrathetaselect(b:bat[:any_1], s:bat[:oid], val:any_1, op:str, 
wstate:ptr):bat[:oid]
+address WeldAlgebraThetaselect2
+comment "algebra.thetaselect";
+
+pattern aggrsum(b:bat[:bte], wstate:ptr):bte
+address WeldAggrSum
+comment "aggr.sum";
+
+pattern aggrsum(b:bat[:int], wstate:ptr):int
+address WeldAggrSum
+comment "aggr.sum";
+
+pattern aggrsum(b:bat[:lng], wstate:ptr):lng
+address WeldAggrSum
+comment "aggr.sum";
+
+pattern aggrsum(b:bat[:flt], wstate:ptr):flt
+address WeldAggrSum
+comment "aggr.sum";
+
+pattern aggrsum(b:bat[:dbl], wstate:ptr):dbl
+address WeldAggrSum
+comment "aggr.sum";
+
+pattern batcalcmul(b1:bat[:bte], b2:bat[:bte], wstate:ptr):bat[:bte]
+address WeldBatcalcMULsignal
+comment "batcalcmul";
+pattern batcalcmul(b:bat[:bte], v:bte, wstate:ptr):bat[:bte]
+address WeldBatcalcMULsignal
+comment "batcalcmul";
+pattern batcalcmul(v:bte, b:bat[:bte], wstate:ptr):bat[:bte]
+address WeldBatcalcMULsignal
+comment "batcalcmul";
+
+pattern batcalcmul(b1:bat[:bte], b2:bat[:int], wstate:ptr):bat[:int]
+address WeldBatcalcMULsignal
+comment "batcalcmul";
+pattern batcalcmul(b:bat[:bte], v:int, wstate:ptr):bat[:int]
+address WeldBatcalcMULsignal
+comment "batcalcmul";
+pattern batcalcmul(v:bte, b:bat[:int], wstate:ptr):bat[:int]
+address WeldBatcalcMULsignal
+comment "batcalcmul";
+
+pattern batcalcmul(b1:bat[:bte], b2:bat[:lng], wstate:ptr):bat[:lng]
+address WeldBatcalcMULsignal
+comment "batcalcmul";
+pattern batcalcmul(b:bat[:bte], v:lng, wstate:ptr):bat[:lng]
+address WeldBatcalcMULsignal
+comment "batcalcmul";
+pattern batcalcmul(v:bte, b:bat[:lng], wstate:ptr):bat[:lng]
+address WeldBatcalcMULsignal
+comment "batcalcmul";
+
+pattern batcalcmul(b1:bat[:bte], b2:bat[:flt], wstate:ptr):bat[:flt]
+address WeldBatcalcMULsignal
+comment "batcalcmul";
+pattern batcalcmul(b:bat[:bte], v:flt, wstate:ptr):bat[:flt]
+address WeldBatcalcMULsignal
+comment "batcalcmul";
+pattern batcalcmul(v:bte, b:bat[:flt], wstate:ptr):bat[:flt]
+address WeldBatcalcMULsignal
+comment "batcalcmul";
+
+pattern batcalcmul(b1:bat[:bte], b2:bat[:dbl], wstate:ptr):bat[:dbl]
+address WeldBatcalcMULsignal
+comment "batcalcmul";
+pattern batcalcmul(b:bat[:bte], v:dbl, wstate:ptr):bat[:dbl]
+address WeldBatcalcMULsignal
+comment "batcalcmul";
+pattern batcalcmul(v:bte, b:bat[:dbl], wstate:ptr):bat[:dbl]
+address WeldBatcalcMULsignal
+comment "batcalcmul";
+
+pattern batcalcmul(b1:bat[:int], b2:bat[:bte], wstate:ptr):bat[:int]
+address WeldBatcalcMULsignal
+comment "batcalcmul";
+pattern batcalcmul(b:bat[:int], v:bte, wstate:ptr):bat[:int]
+address WeldBatcalcMULsignal
+comment "batcalcmul";
+pattern batcalcmul(v:int, b:bat[:bte], wstate:ptr):bat[:int]
+address WeldBatcalcMULsignal
+comment "batcalcmul";
+
+pattern batcalcmul(b1:bat[:int], b2:bat[:int], wstate:ptr):bat[:int]
+address WeldBatcalcMULsignal
+comment "batcalcmul";
+pattern batcalcmul(b:bat[:int], v:int, wstate:ptr):bat[:int]
+address WeldBatcalcMULsignal
+comment "batcalcmul";
+pattern batcalcmul(v:int, b:bat[:int], wstate:ptr):bat[:int]
+address WeldBatcalcMULsignal
+comment "batcalcmul";
+
+pattern batcalcmul(b1:bat[:int], b2:bat[:lng], wstate:ptr):bat[:lng]
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to